Reading Platform Discrepancies Without Losing Your Mind
Two systems report different numbers for the same campaign. Four causes account for nearly all of it, and checking them in the right order turns a week of investigation into an afternoon.
The ad platform reports 4,812 conversions for the campaign. The warehouse reports 3,140. Somebody is asked to find out why, and spends a week in spreadsheets before concluding that tracking is broken.
Tracking is usually not broken. The two systems were asked different questions, answered them correctly, and reported both answers under the same word.
The platforms are not lying, and neither is your warehouse
An ad platform reports conversions it believes it caused, among traffic it can see, using its own credit rule over its own window, dated to the moment of the click rather than the moment of the purchase.
A warehouse reports events that happened, among everybody, dated to when they happened, credited by whatever rule an analyst wrote.
Those differ on five axes before anything goes wrong. Expecting them to match is the error, and hunting for the bug that explains the gap is a search for something that does not exist.
The four causes, in the order worth checking
The order matters, because each check is cheaper than the one below it and the first two explain most of the gap most of the time.
| Cause | The check |
|---|---|
| Population | Compare totals, not campaign figures. If the warehouse sees fewer sessions than the platform sees clicks, the gap starts before attribution and is a tracking or consent question. |
| Window and dating | Re-date the platform figure to the conversion day rather than the click day, and match the lookback. A campaign whose spend changed recently will diverge on dating alone. |
| Credit rule | Recompute your side under the platform's rule: last click within its window, its channel only. Whatever gap survives is not about credit. |
| Event definition | Check what each side counts as the conversion. A platform firing on a thank-you page and a warehouse counting paid orders differ by every abandoned and refunded transaction. |
Work down, not across. Each row assumes the ones above it have been eliminated, and a gap chased at row three that was row one wastes the week everybody remembers.
Reconcile on one day and one campaign
The instinct is to reconcile the quarter, which fails because every cause is present at once and their effects overlap.
Take a single campaign on a single day, ideally an ordinary one with no promotion and no spend change. Line up the two numbers, apply the checks in order, and record how much each one closed. The remainder is the part worth investigating, and it is usually small enough to look at record by record.
Doing this once produces something more valuable than the answer: a stable ratio between the two systems for that campaign type. Once you know the platform runs about 1.4 times the warehouse for a given funnel, a future divergence from 1.4 is the signal, and the level never has to be argued about again.
What the reconciliation cannot do
It makes the two numbers explicable. It does not make either of them causal.
A perfectly reconciled platform figure is still a count of conversions that followed a click, with no statement about which of them would have happened anyway. The reconciliation exercise is worth doing because unexplained discrepancies destroy trust in everything downstream, and because the same click means different things in different funnels. It is not progress toward an effect.
Why the dating difference is larger than it looks Technical
Platforms conventionally attribute a conversion to the date of the click that earned it, not the date the conversion occurred. For a stable campaign that shifts the series by roughly the average lag and changes little else. For a campaign whose spend is moving, it does something worse: the two series diverge in proportion to the rate of change, so a scaling campaign shows a growing gap and a pausing one shows a shrinking gap, from dating alone.
That is also why platform figures are least reconcilable when somebody most wants to reconcile them, which is during a test or a budget shift. Re-dating to the conversion day before comparing removes it, and it requires conversion-level data with both timestamps, which the platform exports for some inventory and not for others.
The practical convention that survives is to use platform figures for in-platform bidding, where their own dating is the right basis, and warehouse figures for anything that will be compared across platforms or against finance. Two numbers with two jobs, rather than one number that fails at both.
Context
Best suited for
Any team running paid media across more than one platform and reporting results anywhere other than inside those platforms.
Data requirements
- Conversion-level exports with click timestamp and conversion timestamp, where the platform provides them
- Session and conversion data in the warehouse joined on the same campaign identifiers, not on names
- Documentation of each platform's default window and which reported conversions are modeled
What changes by context
- B2C ecommerce
- Short lags make the dating difference small, so credit rule and event definition dominate. Refunds and canceled orders are the usual last term, since the platform counted a checkout that finance later reversed.
- B2C subscription
- Trial starts fire in-platform and paid conversions land weeks later, so the two systems are frequently counting different events entirely rather than the same one differently.
- Marketing-led
- With many platforms, the double count from summing across them is the largest single error in most reporting, and it grows as the program improves its overlap.
When it breaks down
- Platforms that report only modeled conversions for a placement, where no reconciliation to observed events is possible in principle.
- Programs with no warehouse-side conversion data, where there is only one number and nothing to reconcile it against.
- Cases where campaign identifiers were never passed through, so the two sides cannot be joined at campaign grain at all.
What this does not establish
- That the warehouse figure is the true one. It is the one you control and can define consistently, which is a different property from being correct.
- That a reconciled number is an incremental number. Both systems divide conversions that happened, and reconciling them changes nothing about the missing counterfactual.
- That a stable ratio stays stable. It holds while windows, consent rates, and platform models hold, and every one of those changes without notice.
- Any expected size for the gap. The four causes differ by funnel, by platform, and by quarter, and a ratio borrowed from another business is not information.