Google Ads typically optimizes toward gross checkout revenue, not the revenue a business ultimately retains after returns. For categories with meaningful return rates, that can inflate reported return on ad spend (ROAS), distort Smart Bidding signals, and direct budget toward products that look profitable in the platform but generate much weaker economics once refunds are accounted for.
The solution is to feed returns-adjusted revenue back into Google Ads. Whether through transaction-level conversion adjustments or category-level keep-rate modeling, aligning bidding signals with retained revenue helps Smart Bidding optimize toward the revenue the business actually keeps rather than the revenue it later gives back.
Why Reported ROAS Counts Money You Give Back
Google Ads measures revenue at the time of purchase, not after returns are processed. As a result, reported ROAS can overstate true performance and cause Smart Bidding to allocate budget based on revenue the business ultimately gives back through refunds.
Return on ad spend, or ROAS, is simple on the surface:
Conversion value ÷ ad spend = ROAS
Spend $10,000 and record $60,000 in conversion value, and Google Ads reports a 6.0 ROAS. That looks clean in the interface. It looks clean in the weekly performance deck. It may even look clean enough for Smart Bidding to keep pushing harder.
But the $60,000 reflects revenue at the moment of purchase, not revenue the business ultimately keeps. Google Ads has no native understanding of returns. Refund data lives in your ecommerce platform, enterprise resource planning (ERP) system, returns management system, or payment processor, and unless that information is sent back through conversion adjustments, every report, bidding signal, and optimization target continues treating a returned order as a successful sale.
Consider a category where 35% of that $60,000 is eventually refunded. The business retains roughly $39,000, dropping returns-adjusted ROAS from 6.0 to 3.9. Google Ads still sees 6.0. The platform never revisited the original conversion to remove the refunded value. The purchase was recorded at checkout, the value was passed in, and Smart Bidding learned from that signal.
Smart Bidding is now optimizing toward $60,000 in value that the business doesn't actually have. It keeps pursuing the auctions, queries, and audiences associated with those conversions, and because the signal looks strong, budget follows. High-return products get treated as high-performing products. Bids get more aggressive. The account scales exactly the demand it should be pulling back on.
What makes this hard to catch is that the people who can see the problem aren't looking at Google Ads. Finance is tracking retained revenue. Operations is processing returns. The warehouse is absorbing reverse-logistics costs. Merchandising is managing inventory churn. None of that shows up in a ROAS column. The marketing team sees a 6.0 and keeps spending. Everyone else sees the cost of what that 6.0 actually produced.
The delay makes it worse. Today's bids are being trained on purchases from two or three weeks ago, before most of those returns have been processed. By the time the true economics are visible, the algorithm has already spent heavily on the wrong signal, and it will keep spending until the signal changes.
How to Push Returns-Adjusted Values Back Into Bidding
Returns-adjusted bidding helps Google Ads optimize toward retained revenue instead of gross checkout revenue. Advertisers can achieve this by updating conversion values after refunds occur or by reducing conversion values upfront using historical return-rate data.
Google Ads cannot automatically discover refunded revenue. If you want Smart Bidding to optimize toward retained revenue, the value signals inside the platform need to reflect what the business actually keeps.
There are two ways to do that: adjust individual conversion values after returns occur using actual refund data, or reduce conversion values before Smart Bidding uses them by applying historical return rates at the moment of purchase. The first is more precise. The second is faster and works well for high-volume categories where return behavior is consistent enough to model in advance.
Restating Values by Order ID
Order-level conversion restatements replace gross checkout revenue with retained revenue after returns occur. By matching refunds back to the original transaction and updating the conversion value in Google Ads, advertisers can train Smart Bidding using actual kept revenue rather than revenue that was later refunded.
The goal is cumulative: consistently correcting returned orders trains Smart Bidding away from systematically overvaluing the products customers return most.
The precision comes with a cost. Every refund must be matched back to the original conversion, retained revenue must be calculated at the order level, and the revised value must be sent back to Google Ads before the platform's adjustment window expires.
1. Confirm the prerequisites before touching anything else
Before pulling any refund data or building any upload file, verify that Google Ads will actually accept adjustments for your conversions. Two things have to have been true at the time of the original purchase, not just going forward, but historically. If either was missing, those conversions are locked.
First, confirm that the purchase conversion action you intend to adjust exists and was active during the period you want to restate.
This sounds obvious, but accounts that have been restructured, migrated, or managed by multiple agencies often end up with duplicate purchase actions, renamed conversions, or purchases tracked under generic event names. Google Ads uses the conversion action name to determine which conversion type should receive the adjustment, so verify there is a single clearly defined purchase conversion action before moving forward.
Second, confirm that the original purchase conversion included a transaction ID. The transaction ID is what allows Google Ads to identify the specific order that should be restated or retracted. Verify this in Google Tag Manager (GTM) by checking whether the transaction_id field was populated in the purchase event, or by reviewing a sample of historical conversions.
If transaction IDs were not captured at the time of purchase, those conversions generally cannot be matched back to individual orders for adjustment.
One hard constraint applies regardless: Google only accepts adjustments within 54 days of the original conversion. That window sounds generous until you map it against your return cycle.
A customer who purchases on day one and returns on day 40 (not unusual for apparel or electronics with 45 or 60-day policies), may already be outside the window by the time the refund processes and the upload is ready. For categories with late returns, some portion of refunds simply cannot be restated, and your retained revenue figures in Google Ads will always run slightly higher than actual as a result. And there's a tighter limit nested inside the 54-day one: an adjustment only feeds real-time auction bidding when it lands within 7 days of the original conversion. Almost no return cycle settles that fast, so in practice most restatements arrive later, on days 8 through 54. Those still count: they correct your reported conversion value and ROAS columns, and they update the historical performance data that trains future bidding and targets. They just no longer move live auction bids. That long-term correction is the main payoff of order-level restatements, while predicted return rates handle the faster, real-time signal.
2. Match your refund records to Google Ads transaction IDs
Pull a sample of recent refunds and try to match them back to the transaction IDs Google Ads received. This is where most teams hit their first wall.
Shopify might record the order as #12345. Your payment processor logged it as ch_8X92A. Your returns platform (Loop, AfterShip, or a custom system) may have created its own reference number like RMA-7781 with no direct link to the original order. Google Ads has 12345, the number your checkout tag passed at purchase. These are all the same transaction. None of the systems know that automatically.
If the IDs don't match, you need a lookup table in your data warehouse or a spreadsheet that links your ecommerce order number, your returns platform reference, and the Google Ads transaction ID, all keyed to the same order. When a refund comes in, you find the order, pull the Google Ads transaction ID, and that's what goes into the adjustment upload. You usually don't discover the mismatch until your first refund fails to match, at which point you're tracing backward through your tag implementation and sometimes months of historical orders to find where the gap is.
3. Calculate retained revenue at the order level
The number you're calculating is what the order actually generated after all return activity settled, net of refunds. That's what replaces the original checkout value in the adjustment upload.
For a full return on a single-item order, that number is zero. Everything else requires working through the line items.
A customer places a $180 order, three items at $60 each, and returns one. Retained revenue is $120. In practice you're pulling refunded line items from your ecommerce platform, subtracting them from the original order value, and adjusting for anything else that affected the final amount (return shipping, restocking fees, or order-level discounts). Verify the result against what your payment processor actually settled, because the two don't always match.
Exchanges require a judgment call. If a customer returns a $120 item and exchanges it for a $90 item, restate the original conversion to $90 or retract it and treat the exchange as a new transaction. Neither is wrong, but pick one and apply it consistently.
Store credits are the messiest case. The refund has been issued but the customer hasn't spent it and may never spend it. Most teams either treat store credits as full refunds at the time of issue or hold the adjustment until the credit is redeemed. Whatever you decide, document it; when someone audits why your kept-revenue figures don't match finance's numbers, this is almost always where the gap is.
4. Build and upload the adjustment file
Download Google's conversion adjustment template before building your file. You'll find it in the conversion uploads area of your Google Ads account; use it as your starting point rather than building from scratch. Removing or renaming any column will cause the import to fail, sometimes without a clear error message.
Fill in one row per order: the transaction ID (Google labels this column "Order ID" in the template), the conversion action name exactly as it appears in Google Ads, the adjustment type, the date and time of the adjustment, and for restatements, the new retained revenue value.
For adjustment type, you have two options. Restatement changes the conversion value but leaves the conversion count intact; a $180 order where the customer kept $120 becomes a $120 conversion. Use this for partial returns and for full returns where you want to preserve the conversion signal.
Retraction removes the conversion entirely from both value and count. Use this for full returns where the order produced no retained revenue. Retractions and restatements to zero lock the conversion: once either is applied, the conversion can't be adjusted again, so check those rows carefully before every upload.
If your return rate is high enough that frequent retractions would meaningfully reduce your conversion count, consider restating full returns to zero instead. That removes the revenue signal while preserving the behavioral data Smart Bidding uses.
Two things cause most silent failures: the conversion action name doesn't match exactly including capitalization and spacing, or the adjustment timestamp isn't after the original conversion date or is missing the timezone offset.
After uploading, wait 24 hours before checking results. If an adjustment hasn't appeared after 48 hours, the conversion action name and transaction ID are the first two things to check.
The timing decision
For most categories where returns settle within 30 days, a weekly upload cadence works well. For categories with longer return windows (60 or 90-day policies are common in furniture, electronics, and some apparel), the decision is harder.
Uploading weekly works well when customers make all their returns at once. The problem is when a customer makes multiple returns from the same order over time: returning two items in week one, then a third item in week three. If you uploaded an adjustment after the first return, you now have to upload a second adjustment for the same order when the third item comes back. For high-return categories this can mean a significant portion of orders require multiple corrections.
Some teams avoid this by waiting a fixed number of days after purchase, say, 45 days, before uploading any adjustment for that order. The idea is that by then, most customers who are going to return something have done so, and you can upload one adjustment that reflects the final retained revenue rather than chasing it with multiple corrections. The tradeoff is that Smart Bidding is learning from the original gross checkout value for those 45 days.
For categories with 90-day return policies, this approach has a hard ceiling. Any customer who returns near the end of that window falls outside the 54-day adjustment limit and cannot be corrected regardless of when you upload.
Your retained revenue figures in Google Ads will always be somewhat higher than actual retained revenue for these categories.
The predicted return rate approach in the next section handles this better. By applying an expected return rate at the moment of conversion rather than correcting after the fact, it doesn't depend on the adjustment window at all.
Using Predicted Return Rates for Fast-Moving Categories
Historical return rates can be used to adjust conversion values at the time of purchase, giving Smart Bidding a more realistic estimate of retained revenue from the start. This approach is less precise than order-level restatements but is often more practical for high-volume categories where returns follow predictable patterns.
A category that has consistently returned 35% of revenue over the past year isn't going to suddenly change behavior next week.
Rather than sending a $100 conversion value and correcting it to $65 three weeks later, you send $65 from the start. Smart Bidding gets a realistic signal immediately.
This is also more practical for high-volume categories where order-level restatements at scale become operationally unrealistic. The tradeoff is precision: you're working from averages, and averages hide variation.
1. Calculate your return rate by category
Pull at least 90 days of order and refund data (ideally six months or more), and calculate return rate at the category level: total refunded revenue divided by total order revenue.
Use revenue, not order count. A category where customers frequently return the most expensive item in a multi-item order will look fine on an order-count basis and terrible on a revenue basis.
Before applying a category-level average, check the distribution at the product level.
A category showing 35% may actually be a mix of products returning at 10% and a handful of SKUs returning at 70%. Applying a 35% adjustment across the board penalizes products that don't deserve it and still doesn't fully correct for the ones that do. If that pattern appears, handle the high-return SKUs separately.
2. Apply the adjustment in your data layer
Instead of pushing the raw order total as the conversion value, your development team applies the category-specific keep rate to each line item before the data layer event fires. A $100 item in a category with a 35% return rate contributes $65 to the conversion value. A $60 item in a category with a 10% return rate contributes $54. The tag fires with the blended adjusted value across all line items.
This requires a category-to-keep-rate lookup at the time of purchase. It's a moderate engineering lift but not a complex one, and once it's in place it runs automatically on every order.
For teams without engineering resources, a custom JavaScript variable in Google Tag Manager can multiply the order value by a fixed keep rate; no backend changes required. This works cleanly if one return rate applies broadly across your catalog. If your products carry meaningfully different return rates by category, you'll need the data layer approach, because GTM applies the same multiplier to the entire order value rather than adjusting each line item individually.
If your high-return products are already segmented into their own campaigns or Performance Max asset groups, conversion value rules are another no-engineering option. Go to Goals → Conversions → Value rules, create a rule scoped to that campaign, and set a multiply action to your keep rate.
The limitation is that value rules can only be applied by audience, device, or location; there's no native condition for product category or SKU, so they only work cleanly if your campaign structure already maps to return rate tiers.
3. Maintain and update your return rate estimates
This is where most implementations stop working.
A return rate calculated in January and never updated is no longer a prediction, it's an assumption. New product launches, seasonal shifts, holiday shoppers, and clearance inventory all behave differently than historical averages suggest.
At minimum, review return rates by category quarterly and update the keep rate mapping before it drifts far enough to introduce meaningful error.
For volatile categories, monthly is better. The review is just pulling the same calculation from step one, comparing it to what's currently applied, and updating where the gap is material. Document what you change and when. When someone asks why ROAS on a category looks different than it did last year, the answer is usually in the keep rate history.
If maintaining a distinct keep rate for every category feels operationally demanding, the return rate tiers in the next section offer a simpler alternative: four buckets, four multipliers, updated quarterly.
Bidding by Return Tier, Not Just Revenue
Return rates change the true value of a conversion. Grouping products into return-rate tiers allows advertisers to set bidding targets based on retained revenue potential rather than gross revenue alone, helping prevent high-return products from absorbing budget they do not justify.
Not all revenue is worth the same amount of ad spend. A $100 order in a category returning at 40% is worth $60 in retained revenue. A $100 order returning at 8% is worth $92. Bidding the same way on both means systematically overspending on one and underspending on the other. The products that look like winners in Google Ads often turn out to be margin drains once returns are factored in.
|
Return Rate |
Keep Rate |
Kept Revenue on $100 |
Bid Posture |
|
Under 10% |
92% |
$92 |
Protect and scale |
|
10–25% |
81% |
$81 |
Maintain. Monitor for drift |
|
25–40% |
67% |
$67 |
Reduce. Lower ROAS targets |
|
Above 40% |
55% or less |
$55 or less |
Suppress. Investigate before spending more |
The mechanism is custom labels in Google Merchant Center. Five free-form attributes (custom_label_0 through custom_label_4) that you define and populate yourself. Google doesn't use them for product matching; they exist entirely for your own segmentation and bidding logic.
Assign one label slot to return rate tier and populate each product based on your return rate analysis. The most maintainable approach is a supplemental feed: a secondary spreadsheet containing just product IDs and custom label values that Merchant Center merges with your primary feed. This lets you update tier assignments without touching your main feed.
In a Standard Shopping campaign, subdivide product groups by your return tier custom label. Each tier becomes its own product group with its own ROAS target. High-return tiers get lower targets, low-return tiers get protected budget and aggressive targets.
In Performance Max, subdivide listing groups within your asset group by the same label, or create separate asset groups per tier for more control over creative and budget.
One caveat: moving a product between tiers reassigns it to a new product group and the historical performance data doesn't transfer. Set stable tier thresholds before you start rather than adjusting them frequently.
Proving the Profit Lift After You Account for Returns
Returns-adjusted measurement changes how performance should be evaluated. A decline in reported ROAS can coincide with an increase in retained revenue if Google Ads shifts spend away from high-return products and toward demand that produces stronger long-term economics.
When you start sending returns-adjusted values into Google Ads, your reported ROAS will go down. That is not a sign the changes are working against you, it is a sign they are working. The number got smaller because it is now closer to the truth.
Compare kept-revenue ROAS before and after implementation, measured over a window that spans your full return cycle. Each period should be at least 60 days, with a clean break between them at the point you made the change. Comparing reported ROAS across those periods will show a decline. That is the wrong comparison. The number that matters is kept-revenue ROAS: conversion value net of returns divided by ad spend.
|
Metric |
Before |
After |
|
Reported ROAS |
5.8 |
4.6 |
|
Returns-adjusted ROAS |
3.7 |
4.1 |
|
Ad spend |
$50,000 |
$50,000 |
|
Gross revenue |
$290,000 |
$230,000 |
|
Retained revenue |
$185,000 |
$205,000 |
Reported ROAS dropped from 5.8 to 4.6. That is the number that will prompt questions. Retained revenue went from $185,000 to $205,000 on the same spend.
That is the number that reflects what actually happened. Gross revenue fell because Smart Bidding stopped scaling the products customers return most. Retained revenue rose because a larger share of spend is now producing revenue the business actually keeps.
The conversation with finance
When reported ROAS drops and someone asks why, the answer is: it dropped because we corrected the measurement. We were reporting a 5.8 ROAS on revenue that included money we were giving back. The real efficiency on revenue we kept was 3.7. It is now 4.1. We are generating more retained revenue on the same spend than we were before.
That framing matters because the instinct when reported ROAS falls is to reverse the change that caused it. The before/after table is what prevents that conversation from going the wrong way. The reported number declining and the business outcome improving are not in contradiction. They are the expected result of measuring the right thing.
The broader point is worth stating plainly. Google Ads has always been willing to optimize toward whatever signal you give it. For most ecommerce accounts, that signal has been gross checkout revenue, complete at the moment of purchase, never corrected for what came back. Smart Bidding did exactly what it was designed to do with that signal. It found more of it.
This process is about changing the signal. Not gaming the platform, not working around it, giving it a more accurate picture of what a conversion is actually worth to the business. When the signal improves, the optimization improves. The campaigns that look like winners stay winners. The ones that were winning on paper but losing on returns stop getting the budget that was making things worse.
That is what efficiency on the money you keep looks like. It is a smaller reported number and a better business outcome, and it is worth being able to explain the difference.
Frequently Asked Questions
Yes. Product returns affect the true economics behind Google Ads ROAS, but they do not automatically reduce the ROAS reported in the platform. Google Ads records conversion value at the time of purchase and continues using that value unless advertisers send conversion adjustments or other value corrections back into the account.
The most accurate approach is to adjust conversion values after returns occur and send the revised values back to Google Ads using the original transaction ID. Some advertisers also apply category-level value adjustments based on historical return rates. Both methods help Smart Bidding optimize toward retained revenue rather than gross checkout revenue.
Products with the highest return rates and the lowest retained-revenue ROAS are usually the first candidates for lower bids or stricter ROAS targets. A product can appear highly profitable in Google Ads while generating weak retained revenue once refunds, exchanges, and return-related costs are taken into account.
Ready to see how much of your ad spend is non-incremental?
Request a demo to start the risk-free, 30-day AdAi trial to quantify your trapped capital and reclaim budget to fund your growth campaigns.
