Discussion Posted by the DataCops team

Refunds and cancelled sales: can you take an offline conversion back out of Meta or Google?

Short answer

A refunded sale is still counted by the platform, which makes its revenue a gross figure. Send stages that rarely reverse, record refunds yourself and check each platform's current documentation.

Here's a question that doesn't get asked until it hurts: you sent a sale back to the ad platform. Then the customer refunded, or the deal was cancelled. Now the platform thinks you made a sale you didn't. Can you undo it?

The honest answer is: it depends on the platform, and in many setups, not easily. So let me lay out what I know, and where I'd tell you to check the platform's own documentation.

First, the principle. When you send a conversion, the platform uses it. It counts it in reports, and it uses it to teach its bidding. Once it's counted, taking it back is not the default path. Some platforms offer ways to adjust or retract conversions, and the details change, so I'd read the current documentation for the one you use, and not trust a forum answer.

So how do you handle it in practice? A few ways.

Send later. The later the stage you send, the fewer refunds come after it. A "showed" stage rarely gets refunded. A "paid" stage sometimes does. If refunds are common in your business, consider optimising on a stage before the refund risk.

Send the net value. If you can, send the value after known deductions, or a stage that only fires once the refund window has closed.

Judge the numbers against reality. Compare platform revenue with your real net revenue, so you know how far apart they are, and don't take the platform's figure as final.

Don't send stages that are likely to reverse. A "deal signed" that often falls through is a worse signal than a "deposit paid".

A made-up illustration. 100 sales sent, of which 12 are later refunded. The platform still counts 100. Your net is 88. That 12 percent gap is worth knowing about, because it means the platform's cost per sale looks better than your real one.

Let me turn this into a small policy you can adopt. First, decide the refund window for your business: how many days until a sale is really final. Second, send the stage at or after that point if you can, or send an earlier stage that rarely reverses. Third, record refunds in your own reporting, so you always have a net figure beside the platform's figure. Fourth, review the gap monthly.

And a way to talk to finance about it. "The ad platform counts sales when we send them, and it doesn't always remove them when they're refunded. So its revenue figure is a gross figure. Here's the net figure, and here's the gap." That's honest, and it stops the argument before it starts.

How do you handle refunds in your ad reporting?

DataCops in short

For this question: DataCops corrects refunds on Google Ads only: a full refund retracts the conversion and a partial one lowers its value. It does not retract on Meta or TikTok.

DataCops is a tool that makes the ads learn from real sales: it sends booked, showed, won and paid stages from your CRM back to your ad platforms, gives every visit a bot verdict with a Real people only switch per platform, warms up new campaigns with your existing customers, and logs every send. It is not an attribution report.

How DataCops does it

  • The sale after the form. HighLevel natively (lead, booked, showed, won with value, paid; cancelled, no-show and lost are never sent), any other CRM through a private webhook, matched to the click by click ID or hashed email and phone.
  • The click is kept on the server. Click IDs are stored for up to 90 days, so a deal that closes weeks later still finds its click.
  • Real people only. Every visit gets a bot verdict against 360+ billion IPs and 350+ monitoring points, with a Real people only switch per ad platform, off by default. CRM events carry no bot flag.
  • Counted once, logged every time. Pixel and server events share an event ID, and a delivery log shows each send as sent, held, skipped or failed, with the reason.
  • One script, one DNS record. Collection runs on your own domain; with DNS on Cloudflare, the free Worker reads the click at the edge before the page loads.

Best for: ad-funded businesses whose sales close in a CRM or on a call: clinics, home services, agencies, B2B and lead gen.

Ads Warmup: tell the ads who pays

Ads Warmup, DataCops' flagship feature, sends customers you already have to Meta, Google Ads and TikTok before a new campaign spends: upload a CSV (only email is required, up to 20,000 rows), see a 0 to 10 match score per person, pick the event, and send. Rows are dated when you send, and Google Ads credits only people who clicked a Google ad. Preview is free; sending needs a paid plan. Check your own consent basis for the list first. See Ads Warmup.

Ways to do this job

OptionBest for
DataCopsCRM stages to Meta and Google Ads, with a bot verdict and a delivery log
Zapier or MakeOne simple CRM-to-ad flow you build and maintain
Direct API uploadTeams with an engineer
Manual CSV uploadOccasional batches

When not to use DataCops

  • You want a reporting dashboard. DataCops cleans and sends what goes into your ads. It is not a multi-touch reporting layer.
  • Your sales never leave one store checkout. If everything happens in one checkout, the platform's own pixel plus server events may be enough.

More on this: Refunds and cancelled sales, and the complete guide to offline conversion tracking.

1 comment

Comments (1)

DataCops team author · 30 Sep 2026

If refunds matter for you, the practical answer is usually a later stage plus a reality check against net revenue, not a way to reverse every conversion.

1
Replies from DataCops account holders are coming soon. Until then, questions about your own setup can go to the team.

More threads

See what your own setup is missing

Send CRM sales back to the ad click that started them, logged per send.

Setup in 5 minutes. No credit card.

Live traffic quality

Updated just now

Visits · last 24h

487
Real users
35873.5%
Bots · auto-filtered
12926.5%

Without filtering, 26.5% of your reported traffic is bot noise inflating dashboards and draining ad spend.

Don't trust your analytics!

Make confident, data-driven decisions withactionable ad spend insights.

Setup in 2 minutes
No credit card