Every platform grades its own homework
Add up the sales that Google Ads, Meta and TikTok report for last month. For most businesses that run on more than one platform, the total is bigger than the number of orders in your store. Nobody is lying, exactly. Each platform uses its own rules to decide which sales it helped cause, and none of them checks with the others before claiming credit.
The reporting tool inside each ad platform sees only its own ads. If a customer clicked a Google ad on Monday and a Meta ad on Thursday, then bought on Friday, both platforms see a click followed by a purchase. Both report one conversion. Your bank account sees one payment.
Overlapping attribution windows
An attribution window is the stretch of time after someone interacts with an ad during which a purchase still counts for that ad. The defaults are generous and they do not match. According to Google's help page on conversion windows, if you don't change the setting, a new Google Ads conversion uses a 30-day click window, and you can stretch it as long as 90 days depending on the conversion source. Meta's developer documentation lists its default reporting window as 7 days after a click plus 1 day after a view.
So a single buyer who saw ads on two platforms within a few weeks can easily sit inside both windows at once. The longer the windows, the more overlap. Our guide to attribution windows walks through how to pick lengths that fit how long your customers really take to decide.
- Google Ads claims62
- Meta claims48
- TikTok claims21
- Total claimed131
- Real orders (store)100
This is a worked example with made-up numbers: when buyers touch more than one platform, each claims the sale, so the claims add up to more than the real orders.
Source: Worked example
Credit for ads people only saw
Some platforms also count view-through conversions: sales from people who saw an ad but never clicked it. Google is careful here. Its conversion measurement guide says view-through conversions are kept out of the main Conversions column. Meta's default, by contrast, folds 1-day views into the main number.
A view is a weak signal. Someone may have scrolled past your ad for a second on the way to a friend's photo and then bought because a coworker recommended you. The platform still sees an impression followed by a purchase. We cover this in more depth in view-through conversions explained.
Sales that would have happened anyway
The deeper problem is that a click before a purchase does not prove the ad caused the purchase. People who were already going to buy are exactly the people most likely to search for you and click your ad. Two well-known studies show how big this gap can be:
These studies don't mean ads don't work. They mean the number a platform reports is a measure of ad contact, not a measure of extra sales your ads created.
- A 2015 study of eBay's search ads, published in Econometrica, found that returns from paid search were a fraction of non-experimental estimates, and that brand keyword ads had no measurable short-term benefit.
- A 2019 Marketing Science paper used 15 US advertising experiments at Facebook and found that common observational methods often fail to produce the same effects as randomized experiments.
How to see the real number
You can't make the platforms stop over-counting, but you can stop relying on their totals. A few habits help:
Matrix ROI, built by Smith App Studio, does this side-by-side view for you: what each platform claims next to what your Stripe payments or store exports verify, day by day. You can try the live demo to see how a claimed-versus-verified gap looks in practice.
- Pick one source of truth for revenue, such as your payment processor or store, and treat platform numbers as claims to be checked.
- Put each platform's claimed conversions beside your real orders for the same days. A rising gap is a warning sign even if each platform's report looks healthy.
- Use the same attribution window across platforms when you compare them, so you are not mixing 30-day and 7-day numbers.
- Tag every ad link with campaign parameters so your own analytics can see where buyers came from.
- Run a holdout test now and then, where you pause ads for a region or a group, to measure what changes when the ads are gone.