Yes. The practical fix is not to find one “correct” attribution number. Instead, build a measurement layer where Shopify is the source of truth for customers/orders, GA4 is the source of truth for onsite behavior, and ad platforms are treated as directional reporting.
1. Make Shopify the source of truth for revenue + customers
Use the Shopify order/customer data to answer:
- Who actually became a customer?
- When was their first order?
- How much did they subsequently spend?
- Which acquisition cohort did they belong to?
Shopify's customer cohort report already supports first-purchase cohorts, retention, repeat purchases, AOV, amount spent per customer, and marketing-channel breakdowns.
I'd export this data into a warehouse/BI layer if you're spending enough on acquisition that these decisions matter.
2. Create a customer-level acquisition table
The key is getting away from "sessions" and "purchases attributed to channels."
Have one row per customer:
| Customer | First order | First-touch source | Last-touch source | Campaign | First-order revenue | 30d revenue | 90d revenue | 180d revenue |
|---|
| A | Jan 5 | Meta | Google | X | $80 | $140 | $210 | $260 |
| B | Jan 7 | Organic | Email | — | $55 | $55 | $110 | $110 |
Capture UTM parameters at the first visit and persist them through checkout/customer creation. Ideally also capture click IDs where available.
Then join that identity to the Shopify customer/order record.
That single change is enormously valuable: you can ask "What did customers acquired from Meta in January ultimately become worth?" rather than "How many purchases did Meta get credit for?"
3. Stop using one LTV number
I'd track at least:
Revenue LTV
cumulative revenue / acquired customers
and, much more importantly:
Contribution LTV
cumulative revenue − COGS − fulfillment − payment fees − discounts/refunds − variable customer-service costs
Then look at 30/60/90/180-day LTV by acquisition cohort and channel.
For example:
| Acquisition source | CAC | 30d contribution LTV | 90d contribution LTV | LTV:CAC |
|---|
| Meta | $42 | $38 | $91 | 2.17x |
| Google | $55 | $61 | $105 | 1.91x |
| Organic | $12 | $54 | $122 | 10.2x |
| Influencer | $31 | $28 | $84 | 2.71x |
This often produces a very different conclusion from the ad-platform dashboards.
Shopify itself recommends using cohort analysis to understand long-term customer value, and its current reporting includes predicted spend projections—but I'd treat those projections as a forecasting aid rather than your accounting truth.
4. Separate CAC from "platform CPA"
Your real blended CAC should be something like:
Blended CAC = total acquisition spend / new customers acquired
Include the marketing costs you're actually trying to recover—not merely the spend shown inside Meta/Google.
Then calculate:
- Paid CAC
- Channel CAC
- New-customer CAC
- Blended CAC
- CAC by product/offer
- CAC by cohort
The particularly useful metric is:
90-day contribution LTV / CAC
because it tells you whether you can economically scale now, without pretending future purchases are guaranteed.
5. Use three attribution views rather than arguing about attribution
I'd put these side-by-side:
A. First-touch
"What introduced this customer to us?"
Useful for understanding demand creation.
B. Last non-direct touch
"What was closest to the purchase?"
Useful for optimization, but tends to over-credit retargeting, email, branded search, etc.
C. Blended / incrementality view
"What would actually disappear if we stopped spending this money?"
This is the one that ultimately matters for budget allocation.
GA4 and Shopify attribution are useful for the first two questions. Incrementality experiments answer the third.
For example, periodically run controlled geo/market holdouts for a meaningful channel. If Meta says it generated $500k but your holdout suggests only $250k was incremental, your economic CAC is radically different.
6. Your most important dashboard should actually be cohort-based
I'd build one dashboard with:
Acquisition
- Spend
- New customers
- CAC
- First-order revenue
- First-order contribution margin
Retention
- 30/60/90/180-day repeat rate
- Orders/customer
- AOV
- Contribution LTV
Economics
- LTV:CAC
- CAC payback period
- Contribution margin after marketing
- Blended vs attributed revenue
Dimensions
- First-touch channel
- Acquisition campaign
- First product purchased
- Offer/discount
- Geography
- Acquisition month
Shopify's cohort reporting can already expose channel information alongside customer spending and retention, which makes it a good sanity check against your warehouse calculations.
The architecture I'd use
Shopify → warehouse → customer/order fact table
GA4 → warehouse → sessions/events
Meta/Google/etc. → warehouse → spend + campaign data
UTMs/click IDs → persisted onto customer/order
↓
BI dashboard
The important principle is:
Ad platforms tell you what they think they caused. Your customer database tells you what customers actually did. Your experiments tell you what was incremental.
If you give me your monthly revenue, AOV, gross margin, monthly ad spend, main channels (e.g. Meta/Google/TikTok), and approximate repeat-purchase rate, I can lay out a concrete CAC/LTV model—including the exact tables/fields I'd build and the formulas for 30/90/180-day LTV.