
Stitch every order to the customer who placed it, then to the ad that first won them. Use a persistent customer ID across orders, lock first-touch source onto the acquiring order, and report repeat revenue and lifetime value by channel — not just the day-one conversion ad platforms record.
- Ad platforms record only the conversion that happens in their attribution window — usually the first order — so repeat purchases are invisible to them by default.
- Tracking repeat purchases requires a persistent customer identifier (email hash or customer ID) that links every order from the same person across sessions and devices.
- The key step is stamping each customer's first-touch acquisition source onto their record, so future orders can be credited back to the channel that won them.
- Customer lifetime value (CLV) by channel often reverses ROAS rankings — a channel that looks expensive on first order can be your most profitable once repeat revenue is counted.
- Your e-commerce platform's customer data (Shopify, WooCommerce) plus a CRM or analytics layer holds the repeat-purchase history; the ad platform never sees it unless you send it back.
Why Ad Platforms Can't See Repeat Purchases On Their Own
Ad platforms can't see repeat purchases because they only record the conversion that falls inside their attribution window — and that window almost always closes long before the second order.
When someone clicks a Google or Meta ad and buys, the platform fires a conversion and credits that sale to the click. That's the first purchase. Weeks or months later the same person comes back — types your URL directly, opens an email, or searches your brand name — and buys again. To the ad platform, that repeat order looks like it came from 'direct' or 'organic', or it isn't attributed at all. The ad that originally won the customer gets zero credit for everything they buy afterward.
This matters because the first order is rarely where the money is. In most e-commerce categories, a meaningful share of profit comes from customers buying again — subscriptions, replenishables, upsells, repeat seasonal purchases. If you judge a channel only on the first-order ROAS the platform reports, you're measuring a fraction of the value it actually drives, and you'll underfund your best acquisition source while overfunding channels that win one-and-done buyers.
The core problem is identity. The ad platform knows a click and a conversion; it doesn't reliably know that order #1042 in March and order #3318 in June are the same human. Bridging that gap — connecting orders to a stable customer identity, and that identity back to the acquiring channel — is the entire job. Everything else is reporting on top of it. Until you solve identity, repeat revenue stays in a blind spot, and your channel decisions are made on partial data.
How To Connect Every Order To A Customer And A Channel
To track repeat purchases, build a single record per customer that holds every order they've placed and the source that first acquired them — then never overwrite that first source.
Start with a persistent customer identifier. Most platforms already create one: Shopify and WooCommerce assign a customer ID and store the email on every order. Use that (or a hashed email) as the key that ties order #1, #2 and #5 to the same person, even across devices and months. Without this anchor, repeat orders just look like new customers.
Next, capture first-touch source. When a customer places their first order, stamp the acquiring channel onto their record — the UTM parameters or click ID from the session that converted them (gclid for Google, fbclid for Meta). Store it as a 'first source' field that you set once and never change. Later orders update lifetime value and order count, but the acquisition credit stays fixed to the channel that originally won them. This is the single step most stores skip, and it's what makes repeat-purchase attribution possible at all.
With those two pieces, your e-commerce or CRM data can answer the real question: for customers acquired by each channel, what's their total spend over time? That requires a place to do the math — your platform's customer reports, a connected CRM, or an analytics warehouse. Capture UTMs reliably (persist them through the session so they survive a checkout redirect), reconcile guest checkouts to returning customers by email, and treat the customer — not the order — as the unit you report on. Build identity and first-touch once, and repeat revenue becomes a query instead of a guess.
Reporting On Lifetime Value, Not Just First-Order ROAS
Once orders are tied to customers and channels, report customer lifetime value by acquisition source — because that's the number that should drive your budget, not first-order ROAS.
First-order ROAS asks 'how much revenue did this channel produce on day one per dollar spent?' CLV by channel asks 'how much will customers from this channel spend over their whole relationship?' Those two numbers frequently disagree. A channel that looks expensive on the first sale — higher cost per acquisition, thin first-order ROAS — can be your most profitable once you count the repeat orders its customers go on to place. Meanwhile a channel with a flashy first-order return may win bargain-hunters who never come back. Judge only the first order and you'll cut your best customers and scale your worst.
Build a simple cohort view: group customers by the month and channel they were acquired in, then track cumulative revenue per customer over the following months. This shows how each channel's customers mature — how quickly they repeat, how much they're ultimately worth, and how long it takes to recover acquisition cost. Pair it with repeat-purchase rate and average orders per customer by source so you can see which channels build loyalty versus one-time buyers.
You can also close the loop with the ad platforms. Importing high-value or repeat-customer signals back into Google Ads and Meta — through offline conversions or value-based bidding — lets them optimize toward people who buy again, not just people who buy once. That's the payoff of all the identity work: you stop bidding for first orders and start bidding for lifetime value, which is the only ROAS that reflects real profit.
What You Actually Need To Set This Up
You don't need an expensive stack to track repeat purchases — you need three things wired together: a customer identity source, reliable UTM capture, and a place to do the lifetime-value math.
Your e-commerce platform is the foundation. Shopify ($39–$399/mo plus transaction fees) and WooCommerce (hosting roughly $30–$200/mo) both store customer records, order history, and email on every order — the raw material for repeat-purchase tracking. Shopify's native customer and cohort reports get many stores most of the way; WooCommerce typically needs a reporting plugin or an export. The data is already there; the gap is usually that first-touch source is never captured and never reported on.
For source capture, make sure UTMs and click IDs survive the journey to purchase — persist them in a cookie or hidden field so they aren't lost on the checkout redirect, and write the first one to the customer record. For the analysis layer, you have options by scale: native platform cohort reports for smaller catalogues, a CRM or email platform (which often tracks lifetime value and source natively) for mid-size stores, or a lightweight analytics warehouse once you're stitching multiple channels and want true cross-channel CLV.
The common failure isn't tooling — it's that nobody owns the wiring. UTMs get dropped, guest checkouts fragment the same person into three 'customers', and first source gets overwritten by the latest one. If you'd rather not assemble this yourself, this is exactly the kind of full-funnel measurement an agency should set up — connecting your store, ad accounts, and reporting so you can see repeat revenue by channel in accounts you own. If you want a second set of eyes on your tracking, [get in touch](/contact) and we'll map where your repeat-purchase data is leaking.
Related questions
No. Both platforms credit a conversion inside their attribution window — typically the first order after a click — and lose sight of the customer after that. Repeat orders that arrive weeks later usually show as direct or organic. To attribute repeat purchases you have to track them in your own store and CRM data and, if you want, feed lifetime-value signals back into the platforms via offline conversions.
Stamping each customer's first-touch acquisition source onto their record the moment they first buy — and never overwriting it. Once a customer's 'first source' is fixed, every future order can be credited back to the channel that originally won them. Most stores already have customer IDs and order history; the missing piece is almost always this first-touch field.
Because first-order ROAS only measures day one. A channel can look expensive on the first sale but produce customers who buy again and again, making it your most profitable source over time. Reporting lifetime value by channel often reverses your ROAS rankings — and prevents you from cutting the acquisition channel that actually drives the most long-term revenue.
Reconcile by email. Guest checkouts don't create a logged-in customer, so the same person can appear as several one-time buyers. Use the email address on each order to merge them into a single customer record, then attach order history and first source to that record. Most platforms can group orders by email; cleaning this up is essential or your repeat-purchase rate will look artificially low.
Usually not to start. Shopify's native customer and cohort reports, or a WooCommerce reporting plugin, plus reliable UTM capture get most stores meaningful repeat-purchase visibility. A CRM or analytics warehouse becomes worthwhile once you're stitching several channels and want true cross-channel lifetime value. The bottleneck is rarely the tool — it's making sure source is captured and customers aren't fragmented.
Want a second opinion on your situation?
Get a free, no-obligation proposal. We’ll look at your site and your market and tell you honestly what we’d do — and what we wouldn’t.
Get Free Proposal →