← Back to insights

Off by 20% on Both Channels, with Three Months Left on the Contract

A Telegram group message about attribution mismatches reads almost exactly like the client I am following up with this afternoon. I saved the screenshot. Until a procurement conversation actually surfaces, here is what I want to sort out first.

A failed mobile attribution node is disconnected while a healthy replacement reconnects acquisition channels
#MMP replacement signals#MMP migration signals#attribution discrepancy#Telegram group intelligence#mobile measurement#sales-qualified signals

I was waiting on feedback from a client meeting and opened Telegram out of habit. The message had been sitting there since midday. It was not a notification—it was a conversation with numbers in it. I read it, put the phone down, and did not swipe away. Because that message was almost exactly the same situation as the client I am following up with this afternoon.

(The following is an illustrative composite Telegram group conversation. Numbers exist only to demonstrate the reasoning logic.)

Li Nan, UA: Meta dashboard for the first week of September shows 15,400 installs. MMP recorded 12,200. Off by 20.7%. Li Nan, UA: TikTok too—dashboard says 11,600, MMP says 9,280. Off by 20%. Zhou Jie, AM: Are you on the latest SDK version? Li Nan, UA: Confirmed. Both sides are on 5.8.x. All events are firing. Zhou Jie, AM: Then let the tech team open a ticket first.

The conversation stopped there. No one replied after that. The client I am seeing this afternoon reported almost the same numbers last week—Meta and TikTok both off by around 20 percent. Their technical team ran through a round of checks. The conclusion was the same: open a ticket.

Could be a coincidence. Not worth overthinking.

But what if it is not?

MMP and SDK—what these two terms mean

An MMP, or Mobile Measurement Partner, is a third-party platform that determines which ad channel drove an app install and what actions the user took afterward. The ad platforms—Meta, TikTok—report one set of install numbers. The MMP, using device-level matching, calculates another set. The gap between them is called attribution discrepancy.

An SDK, or Software Development Kit, is a small piece of code embedded inside the app. It is provided by the MMP vendor. The SDK collects device information and user behavior, then sends that data to the MMP’s servers for matching. If the SDK version is out of date, if event names are not aligned, or if a callback flag was missed during integration, the numbers will not match.

These two things define the troubleshooting path when data breaks. First, check the SDK configuration—that is something the UA team can verify on their own. If everything checks out and the gap persists, only then does the MMP vendor need to get involved.

In the Telegram conversation, Li Nan had already completed that first round. SDK was up to date. Events were firing. Server-side callbacks were enabled. Everything configurable had been checked.

“Open a ticket” is where the story really starts

“Open a ticket” is almost code for “we cannot find anything more on our side.”

What happens next no longer depends on the UA team. It depends on the MMP vendor’s response speed and technical capability. If the vendor replies quickly, pinpoints the issue, and fixes it, the whole thing could end as a support ticket. But if the vendor cannot confirm the root cause, goes silent for weeks, or replies with “this is a statistical methodology issue outside our support scope,” the situation starts shifting—from technical troubleshooting toward vendor evaluation.

That shift does not get announced the same day. But both Li Nan and Zhou Jie in the group said “open a ticket,” which means the team has internally accepted that they cannot figure it out themselves. Over the next one to three weeks, if the problem is still there, the internal conversation could quietly move from “did we configure something wrong” toward “is this platform the wrong one for us.”

Nobody replied after that group message. Not because the problem was solved. Because everyone was waiting for the ticket result. It would be wrong to infer urgency or a buying timeline from silence—a more reasonable explanation is that everything that could be said had been said, and the rest of the process happens outside the chat window.

When both channels drift the same way, where should suspicion point

A 20 percent discrepancy on a single channel could come from the ad platform changing its counting methodology. Meta adjusts its attribution window. TikTok tweaks its click-matching logic. Either can cause a one-sided gap, and a recalibration could bring things back in line.

But when Meta and TikTok are both off by 20 percent, in the same direction, at nearly the same magnitude—that pattern no longer points to one end of the pipeline. It points to the receiving end: the MMP itself.

ScenarioMore Likely CauseNext Step
Only Meta has a large gapMeta attribution window or counting changeCheck Meta-side settings
Only TikTok has a large gapTikTok matching rule adjustmentCheck TikTok-side settings
Both channels show a consistent gap (e.g., 20% in this illustrative scene)MMP-side logic change, version update, or data-feed delayContact MMP technical support to confirm

In this illustrative scene, Li Nan reported two sets of numbers with almost identical deviation. That tilts suspicion toward the MMP side. But it is only a tilt, not a conclusion. What still needs human verification: whether the data-feed timestamps from both ad platforms align, whether the MMP had a recent version update, and whether other teams using the same MMP are seeing similar issues. None of that information is in the group chat.

What three months actually let you do

Assume the company in this illustrative scene signed an annual contract that renews in December. If it is now early September, there are roughly three months until expiration. What can three months allow?

  • Enough time to run a side-by-side test—integrate another MMP’s SDK, collect two weeks of data, compare the discrepancy rates.
  • Enough time to check the early-termination clause and any penalty with legal.
  • Enough time to put an A/B comparison report in front of the decision-makers a month before renewal.

Flip it around. If the contract was renewed a month ago, even a large discrepancy is unlikely to trigger an immediate move. Sunk cost and the penalty threshold are real. A 20 percent gap is disruptive. It is not enough to make a company walk away from half a year of prepaid service fees.

So beyond the numbers themselves, the single most useful fact to confirm is the contract timeline. It will not appear directly in a Telegram message. It might come from other comments in the group: has anyone mentioned “Q4 vendor review,” “budget cycle is coming up,” or “we need to evaluate before renewal”? If none of that appears, flag it as “needs verification” and do not rush to categorize it.

Three questions I run before deciding whether a message is worth tracking

Going back to that Telegram message. I break the decision down into three questions.

First: Does the discrepancy show up across multiple channels? The illustrative scene passes. Meta and TikTok are both around 20 percent. That is not a single-platform statistical fluctuation.

Second: Has configuration troubleshooting hit a dead end? The illustrative scene passes. SDK version, event names, server-side callbacks—all confirmed. The conclusion was “open a ticket.” The team has done everything it can on its own.

Third: Is the contract timeline within an actionable window? Needs verification. No contract information appears in the group messages. It would have to come from other comments or related signals, or be marked “unknown” until cross-referenced.

Pass all three, and it is a lead worth human follow-up. Pass the first two but stall on the third—that is a “needs more information” state, not abandonment. Fail the first or second, and it is probably configuration noise.

The one line I wrote in my notes

After I read that message, I did not contact anyone. I created a note in my phone with the group name and today’s date. Underneath it, I wrote one line:

When does their contract expire—that is the single most important thing to know before the next conversation.

That line is not an action item. It is a condition. If I can confirm it and the window is open, I know which side of the table to sit on. If the window is closed, that message moves from “track” to “observe only.”

A technical troubleshooting meeting does not lead to a procurement discussion in every case. But when a procurement discussion actually happens—whether it is three weeks or three months from now—I want to know about it before someone else posts about it in the group first.

(The illustrative scene and numbers in this article exist only to demonstrate the reasoning logic. They do not represent real customer data or product outcomes. TOP Prospect only analyzes messages from Telegram groups the user intentionally connects. It preserves original text, source, and reasoning for human review, helping users identify potential opportunities, competitive changes, and market signals. It does not read private chats, send messages automatically, or certify a score as fact.)

RESEARCH & DEFINITIONS

How a Signal worth attention is found

See how Top Prospect finds and organizes Signals worth checking, keeps the original Telegram context, removes duplicates, and helps you decide what to review first. You decide whether to follow up and what to do next.

Open the methodology and core definitions

START WITH ONE MONITORED GROUP

Try the workflow free for seven days.

Open the product, connect one authorized group, and describe the Signal you want to find. If you need help choosing the scope, ask us on Telegram.

Back to homepage