The native Google Ads conversion tag fires once. It fires when your customer hits the order success page, sends the order ID and revenue to Google, and stops. It has no memory. It cannot retract.

If the customer cancels the order an hour later, whether through a payment failure, fraud hold, change of mind, or anything else, Google never finds out. The conversion stays in your account. The revenue stays in your ROAS report. The bidding algorithm keeps optimizing as if the sale happened.

For most e-com brands this hidden inflation sits at 5-15% of reported revenue. It's the kind of measurement gap that quietly affects every budgeting decision you make, and almost nobody talks about it.

The mechanic

The conversion tag is a fire-and-forget HTTP call. The tag fires on a successful checkout, three pieces of information go to Google: an order ID, the value, the currency. Once that request lands, Google considers the conversion booked.

There's no callback when the order status changes. There's no nightly sync between your e-com platform and Google's conversion record. The only thing that exists in Google's view is the snapshot at the moment of checkout.

This is by design. The native tag is a client-side beacon, not a database connection. It was built before "did this order actually settle" was something anyone needed to factor into bidding.

Refunds, cancellations, fraud reversals, and chargebacks all happen after the tag has done its job. None of them update what Google thinks happened.

What it costs you

On a 30-day audit of one e-com account this week we found 203 orders that had been counted as conversions but were later cancelled. At the brand's blended average order value of around £190, that's roughly £38,000 of phantom revenue Google was still attributing to its campaigns. The tROAS target was calibrated against a number around 8% higher than what actually banked.

The compounding part is what Smart Bidding does with that inflated signal.

Set a 5x tROAS target. The algorithm sees revenue that's 8% higher than it really is. It bids up to a level where the reported return is 5x. But the real return (money that actually arrives in the bank) is 92% of that, which is 4.6x.

You are paying for traffic at a 5x assumption while operating at 4.6x.

Across a year on £500,000 of ad spend, an 8% cancellation rate means roughly £200,000 of reported revenue never actually settled. At typical e-com margins, that's £30-60k of margin the brand thought it earned but didn't. All of it spent into traffic that the bidding model was over-optimizing for, because the model couldn't see the reversal.

This is before refunds. Refunds usually run higher than outright cancellations in most verticals. Add a typical 3-5% refund rate on top of the cancellation rate and the gap widens.

Why agencies don't catch it

The discrepancy lives in a place most agencies don't look.

The ad platform dashboard shows you Google's number. The e-com platform shows you the brand's actual orders. The two systems never compare notes unless somebody deliberately builds a reconciliation layer between them.

Most agencies report the Google number and stop. That's what the client sees in their weekly report. That's what gets quoted in tROAS conversations. It's the number the agency itself is optimizing against. The whole pipeline is calibrated on a figure that's reliably wrong by single-digit percentages.

Even agencies that suspect the gap is there rarely have the tooling to close it. Pulling cancelled orders from the e-com platform daily, matching them against what's been sent to Google, and uploading conversion adjustments is data-pipeline work. It's not part of most agency workflows.

The most common audit finding is straightforward. Log in to Google Ads, go to Tools > Uploads > Bulk Actions, and check whether any conversion adjustment has ever been uploaded. For the majority of accounts the answer is zero. Not few. Zero.

The fix

Closing the gap is a two-part exercise. Half of it is internal, the other half is communicating with Google.

Part A: server-side reconciliation. Pull settled orders from your e-com platform on a daily schedule. Match each order by ID against what the conversion tag told Google. Any order now in cancelled, closed, or fraud status gets flagged and excluded from your real-ROAS dashboard. This gives the brand and the agency a number that matches the bank, not the tag.

This is the kind of thing a first-party attribution platform handles by default. We've written about this in Why GA4 Isn't Enough for Attribution. Once you have your own attribution layer sitting between the e-com platform and the ad networks, this reconciliation is a single daily job rather than a custom build.

Part B: tell Google. Use the Google Ads Offline Conversion Adjustments API.

A cancelled order gets a RETRACT adjustment. Google removes it from its conversion record entirely. A partial refund gets a RESTATE adjustment with the corrected value. Microsoft Advertising has the same mechanism for Bing Ads.

The effect is that Smart Bidding starts seeing the real numbers. Bids adjust. tROAS targets that you've been operating against now reflect actual cash. Year-on-year reporting becomes honest.

Diagnose your own account in 20 minutes

You don't need pipeline work to find out whether this is a problem in your account. Three checks.

1. Cancellation rate from your e-com platform. In your store admin, pull last month's orders. Total count, and the count marked cancelled, closed, or fraud. Divide. That's your platform-level cancellation rate. Because the conversion tag fires at checkout regardless of acquisition source, Google's reported conversions carry the same cancellation rate as the platform overall. So your platform cancellation rate is approximately the percentage Google is overstating your revenue by.

(This assumes cancellation rate doesn't vary materially by acquisition source. In rare cases a specific source, for example cheap remarketing on cold audiences, might cancel at a higher rate. If you suspect that, do a sample reconciliation by pulling 50 orders from Google's reported conversions and checking their current status manually.)

2. Adjustments history. Google Ads > Tools > Uploads > Bulk Actions. Has any conversion adjustment ever been uploaded? If the answer is no, every cancellation since you started running has been inflating your reported numbers.

3. Your effective tROAS. If you're bidding on a target ROAS strategy, your effective return is your nominal target multiplied by (1 minus the cancellation rate). A 5x target with an 8% cancellation rate is realizing 4.6x against real money. A 10x target with a 12% cancellation rate is realizing 8.8x.

That third number is what you should be operating against. Not the dashboard number.

Where to start

Calculate your true cancellation rate this week. It takes ten minutes in your e-com admin.

If it's above 5%, you have measurable ROAS inflation. If it's above 10%, the gap between reported and real returns is large enough to be reshaping every bidding decision the platform makes for you.

The fix is data-pipeline work, not creative or strategy. It's unglamorous. But it's the foundation everything else sits on. Without it, every campaign you launch is being optimized against a number that doesn't match the money.

The platforms aren't going to volunteer this. The native tag was never going to. Closing the gap is on you.