Back to Blog Listing

Where your return rate actually leaks: the missing join between returns and campaigns

Where your return rate actually leaks: the missing join between returns and campaigns
Kacper Osiewalski Jul 11, 2026 4 min read

Written by: Kacper Osiewalski, Lead Backend Engineer, Digital Colliers

Ask your ops lead what your return rate is. They'll give you a number. Ask your paid social lead what their ROAS is. They'll give you a number too. Now ask either of them which creative sold the most units that came back. Silence. That silence is where the money goes.

The join nobody built

Return data sits in your 3PL or WMS. Campaign data sits in Meta, Google, TikTok, maybe a BI tool on top. Order data sits in Shopify or a custom OMS. Each system knows its slice. None of them know the full sentence.

The result is that your ROAS numbers are lying to you by whatever your return rate is. Online returns run around 19-20% of gross sales on average, and UK apparel sits at 25-40% depending on category. If your dashboard says a campaign did 3.2x ROAS and 35% of those units came back, your real ROAS is closer to 2.1x. And that's before you subtract the reverse logistics cost, the refurb cost, and the units that get written off.

Most operators know this in the abstract. Very few have the join wired up so they can act on it weekly.

What the join actually looks like

You don't need a warehouse rebuild. You need one table where each row is an order line, and each row carries:

  • The SKU and variant
  • The campaign, ad set, and creative ID that drove the session
  • The order value and margin
  • The return flag, return reason, and days-to-return
  • The net contribution after ad spend and reverse logistics

The hard part isn't the schema. It's the identity stitching. Click IDs from ad platforms have to survive the checkout. Returns have to be matched back to the original order line, not just the order. Return reasons have to be normalised because "too small" and "size issue" and "didn't fit" are the same signal.

Once that table exists, you can group by creative and rank by net contribution instead of ROAS. The results are usually uncomfortable.

What surfaces when you run it

The pattern operators keep finding is that a small set of creatives punch above their weight on top-line ROAS but drag on net contribution. Usually it's the creatives that oversell fit, colour accuracy, or scale. The customer clicks, buys, receives, and returns. You paid Meta twice: once for the click, once for the click on the replacement ad that follows them around for six weeks.

Roughly 30% of SKUs at a typical multi-channel brand lose money per order after returns and ad spend. That's not a returns problem. That's a targeting and creative problem masquerading as one. The SKU isn't the villain. The creative that keeps pushing it to the wrong buyer is.

When you rank creatives by post-return contribution instead of ROAS, the reorder is usually severe. The top-three shifts. Sometimes a creative that looked mid-tier is your best earner because its returns are half the average.

The cost of leaving it scattered

Here's the part that stings. Customer acquisition cost across DTC has risen around 40% since 2023, and Meta CPMs kept climbing through 2024 and 2025. UK eCommerce grew about 3% in 2024. So you're paying more to acquire, growing slower, and if your returns join is missing, you're scaling the exact creatives that are quietly bleeding.

Run the arithmetic on your own numbers. If 10% of your paid spend is going to creatives that produce above-average return rates, and your blended return rate is 25%, cutting or reworking those creatives is worth real money against the P&L this quarter. Not next year. This quarter.

The cost of inaction isn't a bad dashboard. It's that every week you keep spending on the wrong creatives, you're funding your own return processing pipeline.

Where to start this month

If you want to move on this without a six-month data project, three moves get you 80% there:

  1. Get order lines, campaign attribution, and returns into one table. A weekly dump into a warehouse or even a well-structured Google Sheet beats waiting for the perfect pipeline.
  2. Normalise return reasons down to five or six buckets. Fit, quality, expectation gap, damage, changed mind, other.
  3. Rank creatives by net contribution per impression, not ROAS. Kill or rework the bottom decile. Rerun in two weeks.

The brands that will be healthy in 2026 aren't the ones with the lowest return rate. They're the ones who finally connected the two halves of their own data.

Related Posts