Refunds Are Quietly Inflating Your ROAS

If a chunk of your orders get refunded, your ad platforms never find out. Here is how to send refunds back so your reported ROAS matches your real margin.

Your ad platforms find out the moment someone buys. They never find out when that person sends it back.

For a store with a 5 percent return rate this is a rounding error. For fashion, footwear, or furniture, where returns can run above 30 percent, it means your reported ROAS is describing a business you do not actually have.

What is going wrong

A customer buys for 200. The purchase event fires and Google and Meta both record 200 of revenue against the campaign.

Two weeks later they return it. You refund the 200. Your bank balance knows. Shopify knows. Neither ad platform hears a thing.

Multiply that across a few hundred orders and your campaigns look considerably more profitable than they are. Worse, Smart Bidding is learning from that inflated data, so it actively seeks out more of the customers who return things.

The part that really costs money

This is not only a reporting problem, and that is the bit people miss.

Bidding algorithms optimise toward the value you report. If a particular audience, product, or region has a very high return rate but you never report the returns, the algorithm sees strong performance and spends more there.

You end up paying to acquire your least profitable customers, efficiently.

How to fix it

Google Ads: conversion adjustments

Google Ads supports retroactive corrections to conversions you already reported. There are three kinds.

  • Retraction cancels the conversion entirely. Use it for a full refund or a cancelled order.

  • Restatement changes the value. Use it for partial refunds or a revised order total.

  • Enhancement adds customer data without changing the value.

Adjustments are matched by order ID, so your original conversion needs to have carried one. If it did not, this is the moment you find out.

Meta: send the refund as a negative value

Meta handles this through the Conversions API, reporting the refund so the original purchase value is corrected.

GA4: the refund event

GA4 has a built in refund event. Send it with the same transaction ID as the original purchase and the revenue is adjusted. Most stores never implement it, which is why GA4 revenue drifts away from actual revenue over time.

Where it usually goes wrong

  • No order ID on the original conversion. Without it there is nothing to match the adjustment against, and the whole approach fails at the first step.

  • Order ID mismatch. The refund webhook sends a different format of ID than the purchase did. The adjustment is accepted, reports success, and changes nothing.

  • Only refunds are handled, not cancellations. Orders cancelled before shipping never generate a refund event in some setups, so they stay in the data forever.

  • Partial refunds sent as full ones, which swings the correction too far the other way.

A warning about testing here. Google’s adjustment endpoint can return a success response while quietly rejecting the adjustment in the response body. Do not trust a green tick. Check what actually changed in the reporting a day later.

Getting the timing right

Do not send the adjustment the instant a return is requested. Send it when the refund is actually processed, otherwise a cancelled return request corrects a conversion that was fine all along.

Also accept that there is a lag. A return that happens 40 days after purchase may fall outside the adjustment window, so some leakage is unavoidable. The goal is to catch most of it, not all of it.

What changes afterwards

Reported ROAS will fall. That is correct and it is the point, but warn whoever reads the reports before it happens.

Then bidding starts learning from real profitability rather than gross sales. For high return categories this usually reallocates budget noticeably, and toward better customers.

Pair it with proper Shopify purchase tracking so the original conversions carry the order IDs the adjustments need.

Need this fixed properly?

If you have a meaningful return rate and none of it reaches your ad platforms, your reported ROAS is describing the wrong business. I set up and repair tracking for ecommerce stores and lead generation businesses, so the numbers in your ad accounts match the money in your bank account.

Have a look at what I do, or book a call and we can go through your setup together.

Need accurate tracking?

Its Free

500+ Happy Clients ⭐️

Keep Reading

See exactly where you’re wasting ad spend and how better tracking can double your sales.

See exactly where you’re wasting ad spend and how better tracking can double your sales.

Tracking in 3 Hours

Tracking in 3 Hours

I Manage Everything

I Manage Everything

24/7 Expert Support

24/7 Expert Support

TESTIMONIALS

Trusted by 500+ satisfied clients

Discover how we’ve driven growth and innovation.

500+ Tracking

500+ Tracking

Adélaïde De Vos

3,922 followers

I had the pleasure to work with Abdul and I can say that he exceeded my expectations. He was professional, patient, and clear in his explanations and committed to client satisfaction. If you're looking for someone who is not only highly skilled but also reliable and committed to client satisfaction, I highly recommend Kayium!

Dean Watson

1,030 followers

Kayium setup our tracking for Google Ads and Meta Ads, which helped us get 20%+ more conversions on the same ad spend. He didn’t just handle the technical setup,he also took the time to explain why it works and how it improves results. If you’re looking for someone skilled, reliable, and committed to delivering real results, I highly recommend him!

David Friend

CEO: Profitable Sites

Kayium set up accurate tracking that helped us scale ads fast and boost conversions by over 25%. He gave us clear insight into which ads drive revenue.

Lalita Sundari

7,924 followers

I've worked with Kayium; his strategic mindset and expertise in GTM, GA4, Pixel & Server Side Tracking, are invaluable! I highly recommend Kayium!