Attribution-Window Mismatch: Why Your Retention Curve And Your CAC Disagree On The Same Channel

Metricuno
June 18, 2026
6 min read
Attribution-Window Mismatch: Why Your Retention Curve And Your CAC Disagree On The Same Channel — Your channel CAC uses a 7-day click window. Your retention curve uses first-order attribution. Reconcile them before you reallocate a single euro of spend.
Quick answer

Channel CAC and retention curves almost always run on different attribution windows — which means reallocating between them quietly compounds the error. Here's how to spot the mismatch and fix it before the memo goes to finance.

Quick answer

Your channel CAC is reported on a 7-day-click window by the ad platform. Your retention curve is built from first-order date in Shopify, which credits whichever channel was set as the first touch. They are measuring different events on different timelines, so dividing one by the other inflates channels with short click-to-purchase paths (Meta, TikTok) and starves channels with long consideration windows (Google non-brand, organic). Reconcile both sides onto the same join key — first_order_date by customer — before you reallocate.

Definition
Attribution

Attribution-Window Mismatch

When channel CAC and the retention curve are calculated on different attribution windows, making any reallocation decision built on both numbers structurally biased.

An attribution-window mismatch happens when the numerator and denominator of your channel economics come from incompatible measurement systems. Channel CAC typically uses the ad platform's own attribution — Meta's 7-day-click / 1-day-view, TikTok's 7-day-click, Google's data-driven attribution. The retention curve, by contrast, is almost always built from Shopify's first_order_date and credits whichever channel was tagged as the customer's first touch in your own analytics.

The two sides count different customers under the same channel label. The result: reallocation decisions look quantitative but are arithmetically incoherent.

Also known as
click-window vs cohort-window mismatch
CAC/LTV attribution drift

This page is the parent of a small cluster on reconciling channel CAC with retention. If you're here because your Meta cohort retention looks great but the CFO is asking why blended ROAS is flat, you're in the right place.

Why the two numbers disagree on the same channel

Meta reports a conversion if a click happened in the last 7 days, regardless of whether your CRM thinks Meta was the first touch. Your retention curve, built from Shopify orders, groups customers by the first_order_date and labels the channel from your own UTM or first-touch model.

So a customer who clicked a Meta ad on day 6, then bought via a branded Google search on day 8, shows up in Meta's CAC denominator and in Google's retention cohort. Both reports are internally consistent. Together, they double-count the same order against two different channels.

The compounding error

Every time you reallocate spend toward the channel with the 'better' ratio, you are reinforcing whichever channel happens to have the shorter click-to-purchase window — not whichever channel has better unit economics. Three reallocation cycles in, your media mix reflects measurement artefacts more than customer behaviour.

How to detect the mismatch in your own data

Pull platform-reported conversions next to first_order_date conversions for the same channel, same week. If Meta says 412 conversions and your Shopify-first-touch model says 287 for the same window, the gap is your mismatch. A 20-40% delta is normal; above 50% and your reallocation memo is built on sand.

Run the same check on TikTok and Google separately — the gaps will not be symmetric. TikTok's 7-day-click window catches view-driven purchases that retention curves don't credit to TikTok at all, which is why TikTok's CAC looks artificially cheap before cohort 2 retention collapses.

Benchmark

Typical platform-reported vs first-touch order counts (apparel, €3-8M revenue band)

ChannelPlatform-reported ordersFirst-touch (Shopify) ordersOverlap delta
Meta (7-day click + 1-day view)412287+44%
TikTok (7-day click)198112+77%
Google Ads (DDA, brand + non-brand)356381-7%
Google Ads (non-brand only)94138-32%
Klaviyo email176164+7%

How to fix it before the next reallocation cycle

Pick one join key and stick with it: customer_id × first_order_date. Stitch platform CAC onto that timeline by attributing spend to the cohort the customer landed in, not to the platform's own click window. This is the minimum reconciliation — everything else (MTA, MMM, incrementality) sits on top of it.

Then run both calculations side by side: CAC on the platform's native window, and CAC on the first_order_date join. The difference between them is your mismatch tax. Reallocate only against the second number, and document the first one for the platform reps.

MER is the tie-breaker

When channel CAC and retention disagree after reconciliation — which they still will, just less — use Marketing Efficiency Ratio (total revenue ÷ total spend) as the arbiter. MER doesn't care about attribution windows because it ignores channel labels entirely. If a reallocation moves channel-CAC favourably but MER worsens, the channel CAC was wrong.

Experiment ideas to validate the reconciliation

Run a one-week Meta blackout in a single geo (e.g. pause Belgium, keep Netherlands live) and watch blended Shopify orders. If the platform was over-claiming by 40%, Belgium orders should only fall by ~60% of what Meta's dashboard predicts. This gives you an incrementality coefficient you can apply to every future reallocation.

Pair this with a 90-day cohort hold-out: tag the customers acquired during the blackout week and watch their cohort 2 and cohort 3 retention. This is the test that catches the TikTok-style 'cheap CAC, collapsing cohort' pattern before you've spent another quarter doubling down on it.

Frequently asked

Frequently asked questions

Meta credits any conversion that happened within 7 days of a click, regardless of what your own first-touch model says. Your retention curve groups customers by first_order_date and uses your UTM-based channel label. The same order can be counted as Meta-attributed in the CAC denominator and as organic or Google in the retention cohort.

Neither is 'right' — what matters is internal consistency. First-click pairs better with retention curves because it captures the channel that brought the customer in. Last-click pairs better with CAC because it matches how platforms self-report. The error you want to avoid is using first-click on one side and last-click on the other.

Pick customer_id × first_order_date as your join key. Pull platform spend, allocate it to the cohort whose first order falls in that platform's click window, and recompute CAC on that basis. You'll get a number that's 10-40% different from the platform dashboard, and that number is the one to budget against.

Yes, but in the opposite direction. DDA tends to over-credit branded search because branded clicks correlate with purchase intent that was generated elsewhere. Your retention curve will show branded Google customers as high-LTV; the CAC will look great; both numbers are partly measuring demand other channels created.

Only when you have an incrementality test that says the view actually caused the conversion. Default view-through inclusion (Meta's 1-day-view) inflates CAC denominators by 15-30% on prospecting campaigns. Exclude view-through from the reconciled CAC unless you've validated it with a hold-out test.

In our experience on €1-15M stores, the mismatch swings channel-level CAC by 20-50% per channel, and reverses the rank order of channels in roughly one out of three reallocation reviews. A channel that looked second-best becomes second-worst once the windows are aligned.

TikTok's 7-day-click window catches a lot of low-intent impulse purchases that retention curves don't credit to TikTok at first touch. The CAC denominator looks cheap because TikTok claimed orders that other channels also claimed. By cohort 2, the cheap acquisitions don't repeat, and the retention curve exposes the gap.

No, but use MER as the tie-breaker. Channel CAC tells you where to move spend; MER tells you whether the move actually worked. If you reallocate based on reconciled channel CAC and MER moves in the wrong direction, your reconciliation still has a flaw worth chasing.

Monthly, and before any reallocation memo. Platform windows change (Meta moved to 7-day-click default in 2021, iOS 14.5 shifted the underlying behaviour), and your channel mix shifts seasonally. A reconciliation older than 6 weeks shouldn't drive a budget decision.

Two columns in a spreadsheet: platform-reported orders per channel and Shopify first_order_date orders tagged by UTM source. Compute the delta. If any channel shows >30% gap, freeze reallocation toward that channel until you've stitched the timelines properly. That alone prevents most bad memos.

Track CAC, channels, and funnel conversion in one place

Metricuno connects ad spend, funnel events, and revenue so you can see CAC by channel, cohort, and campaign — without stitching together five tools.