Apply for a Free Strategy Call

Attribution

Why Your Ad Platforms All Show You Different Revenue

Meta says one number. Google says another. GA4, Shopify, and Triple Whale each say something else. None of them is broken - and none of them is the number to run the business on.

Pull up Meta Ads Manager, Google Ads, GA4, and Shopify for the same day. You will get four different revenue numbers for the same store. Add Triple Whale and you have five. Every founder we talk to has noticed. Most have quietly stopped trusting all of them.

That mistrust gets expensive going into Q4. The quarter where you spend the most is the quarter where every budget call runs through numbers that disagree with each other - and with your bank account. This page explains why the platforms can never agree, how large the distortion runs in real accounts, and which number to run the business on.

The short answer: which number to run the business on

Run the business on MER plus contribution margin. MER - marketing efficiency ratio - is total revenue divided by total ad spend, both pulled from your own books: the store backend and the P&L. It cannot be inflated by attribution, because it never asks which ad deserves credit. Contribution margin tells you whether that revenue made money after product costs, fulfillment, and fees. Together they answer the only question that matters: did total money out produce enough total money in?

The platform numbers are not broken. Meta ROAS, Google conversion value, GA4 revenue, and Triple Whale's model each measure a different thing, under different rules, over different time windows. They can never match, and no setting will make them match. Use each platform's numbers to compare campaigns inside that platform. Never use them to decide how much your ads earned overall, or to move budget between platforms. For those calls, your backend is the ledger and MER is the score.

Why Meta, Google, GA4, Shopify, and Triple Whale can never agree

The disagreement is structural. Each system counts sales by its own rules, and four of those rules do most of the damage.

Attribution windows. Meta's default counts a purchase if someone clicked an ad in the last 7 days, or saw one in the last day. Google can claim a sale up to 30 days after the click, and sometimes longer. GA4 runs its own lookback on top of its own model. The same order shows up on different dashboards in different weeks. None of them is lying. They are answering different questions about the same sale.

View-through conversions. Meta counts purchases from people who saw an ad and never clicked it. Someone scrolls past your ad on Tuesday, googles you on Thursday, and buys. Meta books the sale. So does Google. That one order now lives in two dashboards at full value.

Modeled conversions. Since iOS 14, Meta cannot see a large share of the journeys it used to track. So it estimates. When tracking is blocked, Meta fills the gap with modeled purchases - statistical guesses about sales it believes it drove but could not observe. The guesses are often reasonable. They are still guesses, and they land in your dashboard looking exactly like tracked sales.

No deduplication across platforms. This is the big one. No referee sits between Meta and Google deciding who gets credit for a shared sale. Each platform claims 100% of every conversion it touched. Add every platform's claimed revenue together and you will usually get more revenue than your store recorded. The overlap is invisible unless you go looking for it.

Brand capture. Google Search and Performance Max campaigns intercept people who already typed your brand name. Those buyers were coming anyway - they heard about you from a friend, an email, or a Meta ad. Google collects the last click and books the whole sale. On paper it looks like Google acquired the customer. In practice it collected a toll.

Then there are the two systems founders reach for to break the tie, and each has its own distortion.

GA4 leans hard on click-based tracking, so it loses cross-device journeys and much of what paid social starts. Revenue that Meta created gets logged as "direct" or "organic search". GA4 often undercounts paid social as sharply as the platforms overcount themselves - just in the opposite direction.

Shopify is the closest thing to the truth, because it counts orders and money rather than credit. But it says nothing about which ad drove which order. It is the ledger, not the attribution.

Triple Whale and tools like it apply one consistent model across channels. That fixes the double-counting between Meta and Google, which is genuinely useful. But the model is still a model - built on assumptions you didn't choose and can't fully see. A tool gives you a fifth number, not the true one.

One more thing worth naming: none of this is a bug. Each platform's attribution was designed to justify spend on that platform, and it does that job well. The settings pages let you change the window, not the incentive. You can spend months "fixing tracking" and end the project with the same five numbers, slightly rearranged.

Five systems, five rule books, five numbers. The real question is not why they disagree. It is how big the gap gets - and which direction it points.

What we see in the accounts we've audited

Inside every Profit Clarity Audit, we run the same reconciliation. For each channel, for each month, we line up two numbers. First: the conversion revenue the platform claims it drove. Second: the new-customer revenue the store backend actually recorded from that channel. Brand capture and repeat buyers come out first. The ratio between those two numbers is that channel's correction factor.

The pattern holds again and again: in the accounts we've audited, Google typically overstates its contribution by 80-90% and Meta typically understates by 20-80%. Ranges, not point estimates, because every brand's mix of organic strength, PMax setup, and retention base moves the number. But the direction almost never flips.

What widens or narrows the range is fairly predictable. The stronger your organic brand, the more branded demand Google has to intercept, and the higher its overstatement runs. A PMax campaign left free to serve on brand terms pushes it higher still. On the Meta side, the more your buyers move across devices, block tracking, or take days to convert, the more of Meta's real contribution goes missing. Strong retention inflates every platform at once, because repeat buyers keep clicking ads for a purchase they were already going to make.

Read that again, because the implication is brutal. The platform winning your Monday reporting meeting is usually the one best at claiming credit. The platform you keep trimming is usually the one creating the demand. Every budget move made on uncorrected numbers shifts money away from the channel doing the work. It flows toward the channel doing the accounting.

To be clear about where we stand: we don't sell an attribution tool, and this diagnosis is not a pitch for a media-buying retainer. The correction runs on your own backend data, and it holds no matter who manages your ads afterward. Why do platform-reported numbers go unchallenged for years? It is an incentive problem, not a math problem. We wrote that story up separately as The Agency Incentive Problem.

Want the 5-step version run against your own dashboards? Get the Attribution Sanity Check - the free kit that walks you through this reconciliation on the Google Ads, Meta, and Shopify reports you already have open.

Get the Attribution Sanity Check →

The strip-out test

Here is what the correction looks like in practice. The example below is a composite, assembled from audited accounts and anonymized - no single client, but a pattern we see over and over.

A brand comes in proud of one campaign: Performance Max, reporting 6.4x. It is the best number in the account, and it has been absorbing more budget every quarter. Nobody wants to touch it.

Then we open the search terms behind it. In this composite, 71% of the search spend is sitting on brand terms - people who typed the brand's own name into Google and clicked the ad at the top. Strip the brand terms out and score what remains, and the 6.4x falls to 2-3x.

Nothing in the account changed. Same campaign, same spend, same orders. The only thing that changed was the filter - and the filter changed the entire scaling decision. At a real 6.4x, you should push budget as hard as the platform will take it. At 2-3x, you scale carefully, or you fix the offer and the funnel first. The reported number and the real number describe two different companies.

It is worth asking why nobody catches this earlier, and the answer is that every incentive points the other way. The campaign is the account's best performer, so the agency features it in reporting. The platform recommends more budget for it, because the platform's numbers say it is working. The founder sees the one dashboard line that looks great and protects it. Opening the search terms report is in nobody's interest except yours - which is usually why it has never been opened.

This is why brand capture deserves more attention than any other single distortion. It does not inflate the number by a little. It can manufacture a hero campaign out of demand that something else already created - and then quietly reward you for feeding it more budget.

Getting to one number: MER plus contribution margin

The way out is not a better attribution model. It is a number no model can touch.

MER is total revenue divided by total ad spend, both from the store's own books. Every dollar of revenue counts once. Every dollar of spend counts once. There is no window, no view-through, no model, and nothing to dispute. If MER holds while spend rises, your marketing is scaling cleanly. If spend rises and MER falls below what your margin allows, you are buying growth at a loss - whatever any dashboard says.

MER alone is not enough, because it does not know what a dollar of revenue is worth to you. That is contribution margin's job. Work out what you keep from each order after product costs, shipping, fulfillment, and fees. That gives you your breakeven MER - the line below which growth costs money. The free MER Calculator runs the math, including the breakeven line. And if you want to see the gap between platform ROAS and blended reality in about 30 seconds, the Honest ROAS Calculator puts them side by side.

Platform numbers still have a job. Inside one platform, under one set of rules, they are fine for ranking campaigns and creatives against each other. The discipline is refusing to let them answer the bigger questions - how much did marketing earn, and where does the next dollar go. Those calls belong to MER and margin.

In practice, the operating rhythm is simple. Track MER weekly, next to total spend, on one sheet everyone can see. Recompute your breakeven MER whenever costs move - a COGS change, a shipping increase, a new discount policy. When a platform dashboard and MER tell different stories, believe MER and treat the dashboard as a clue about where to look. That single habit removes most of the arguments that eat Monday meetings. Nobody debates whose number is right when the business has already agreed on which number decides.

What changes when a brand makes the switch? Spend usually gets reallocated, and often cut, before it grows. Gnarly Nutrition grew new customers 102% year over year - on 25-30% less ad spend. That growth started once the budget that had been buying credit for existing demand came out first. Corrected numbers do not just feel better. They point the money somewhere else.

If your platforms disagree today, that is not a tracking bug you can fix in an afternoon. It is the normal state of platform attribution. The fix is deciding, once, which number runs the business - and making every budget call answer to it.

Frequently asked questions

None of them, in the sense you mean. Each number comes from a different system measuring its own contribution under its own attribution rules, and each claims full credit for sales the others also touched. They were never going to match, and no reporting fix will make them match. The number to run the business on is MER - total revenue divided by total ad spend, from your own store backend - checked against your contribution margin. Ask your agency to report MER and new-customer revenue alongside platform ROAS. How they respond will tell you a lot.

MER plus contribution margin. MER is total revenue divided by total ad spend, both pulled from your own books rather than any ad platform. It cannot be inflated by attribution, because it never assigns credit to a channel. Contribution margin tells you what each revenue dollar is worth after product costs, fulfillment, and fees - which sets the breakeven line your MER has to clear. Platform metrics still help you rank campaigns inside one platform. But budget totals, channel splits, and scaling decisions should answer to MER and margin, because those are the only numbers tied to money that actually moved.

Because they count different things. Shopify counts orders that happened. Meta counts conversions it attributes to itself under its own rules. Those rules include view-through purchases from people who never clicked, plus modeled purchases where tracking is blocked. Meta also books a purchase against the date of the ad interaction, not the order date. Over a given day or campaign window, those rules can produce more Meta purchases than Shopify orders. Neither system is broken. Shopify is the ledger of what sold; Meta is an estimate of what Meta influenced. When the two disagree, the ledger wins.

It is more consistent than the platforms, which is not the same as accurate. A tool applies one model across every channel, so it removes the double-counting you get when Meta and Google each claim the same sale. That makes it useful. But its output is still a model built on assumptions you cannot fully inspect - another opinion, not the ground truth. We don't sell an attribution tool, so we have no side here. Treat your store backend as the ledger, correct the platforms against it, and use a tool as the tiebreaker, never the judge.

Get to one number you can defend

Want the 5-step version run against your own dashboards? Get the Attribution Sanity Check. Or book a free 30-minute Profit Clarity Strategy Call - we'll tell you how much of your reported revenue is real, straight answer either way.

For DTC brands doing $1M+ per year and spending $30K+/month on ads.

Apply for Your Free Strategy Call