Jun 21, 2026 · 7 min read

Meta Ads + Shopify: Calculate Your Real CAC

Daymark Product & Data TeamAnalytics practitioners at Daymark

First-hand guidance from the Daymark team on analytics workflows, growth reporting, and the operational metrics teams use to make decisions.

Meta Ads Manager and Shopify rarely agree on campaign performance. Meta reports cost per purchase. Shopify records actual orders. The two numbers measure different things, and only one of them reflects what you spent to acquire a paying customer.

This guide covers why Meta's numbers and Shopify's numbers diverge, and how to blend ad spend, order data, and margin to find a real customer acquisition cost (CAC) and profit figure per campaign.

Why Meta's Numbers and Shopify's Numbers Disagree

A few structural reasons explain most of the gap:

  • Attribution window. Meta's default attribution counts purchases within a 7-day click or 1-day view window. A customer who saw an ad, didn't click, then bought through a Google search five days later can still be attributed to the Meta ad.
  • Modeled conversions. Since iOS App Tracking Transparency, Meta fills attribution gaps with statistical modeling rather than purely observed events, particularly for users who don't accept tracking.
  • "Purchases" includes repeat buyers. Meta's reported purchase count and CAC are often blended across new and returning customers. The number that actually matters for growth, new customer acquisition cost, is a subset of that.
  • Double counting across ad sets. If the same person sees ads from two different ad sets before buying, both can claim partial or full credit depending on settings. Shopify only ever records one order.

The practical effect: Meta's dashboard often shows more attributed purchases over a given period than Shopify's actual order count from Meta traffic. Meta's reported CAC is also usually lower than the CAC you'd calculate by working backward from real new customers in Shopify.

Real CAC vs. Meta's Reported CAC

The number that should drive budget decisions is:

Real New-Customer CAC =
  Total Meta Ad Spend / New Customers Acquired (matched in Shopify)

New customers acquired should come from Shopify's customer records: first order ever, not first order from this campaign, matched to sessions or orders that arrived via Meta traffic. This is a meaningfully different, and usually higher, number than Meta's self-reported cost per purchase.

How to Calculate Real CAC and Margin by Campaign

Getting to that number takes four steps: tighten the signal Meta is working with, match spend to real Shopify orders, layer in margin, and weigh the result against payback. Here's each one.

Step 1: Tighten the Signal Before Tightening the Reporting

Before trying to reconcile numbers, make sure Meta is getting the cleanest data it can. Server-side conversion events from Shopify, deduplicated against the browser pixel, reduce reliance on modeling. This makes the attributed data more trustworthy, even though it still won't match Shopify order for order.

Step 2: Match Spend to Orders at the Right Grain

Don't try to reconcile Meta's "Purchases" metric to Shopify's order count directly. They're built on different logic and will rarely agree. Instead:

  • Use campaign-specific discount codes or landing pages where you can, the same way you would for Google Ads.
  • Compare blended weekly totals: total Meta spend against total new-customer revenue from Meta-attributed sessions, rather than chasing exact per-order matches.
  • Separate prospecting (cold audience) campaigns from retargeting before comparing anything. Retargeting will almost always show a far higher ROAS, because it's reaching people who were already likely to buy. Blending the two together hides whether your prospecting spend is actually working.

Step 3: Bring In Margin, Not Just Revenue

Meta's reported revenue says nothing about COGS, discounts, refunds, or fulfillment cost, just like Google Ads. Apply the same contribution margin layer:

CampaignSpendNew Customers (Shopify)Meta-Reported CACReal New-Customer CACContribution Margin
Prospecting: Video$5,000110$32$45$1,400
Prospecting: Static$3,20095$28$34-$200
Retargeting$90060$9$15$2,100

Prospecting: Static looks cheap on Meta's own CAC number, but once matched to actual new customers and margin, it's the one losing money. Retargeting looks efficient on both numbers, which is expected. It isn't doing the harder job of finding new customers.

Step 4: Weigh CAC Against AOV and Repeat Purchase Rate

Meta is usually a colder, more top-of-funnel channel than Google Search. A first-order CAC that looks too high in isolation can still be a good investment if repeat purchase rate and average order value mean the customer pays back over their first few orders. Don't judge prospecting campaigns purely on first-order contribution margin. Pair it with a basic payback view: how many orders, on average, before a new customer covers their acquisition cost.

Make It a Recurring View

Signal loss, creative fatigue, and rising CPMs mean campaign economics shift week to week. Rebuilding a Meta spend and Shopify orders spreadsheet by hand every Monday is the default, but it's slow and easy to get wrong. Daymark connects Meta Ads and Shopify directly, so you can ask for new-customer CAC and contribution margin by campaign in plain English instead of re-exporting and rejoining the data every week.

Frequently Asked Questions

Why does Meta show more purchases than my actual Shopify orders?

Meta attributes purchases within a 7-day click or 1-day view window, and fills gaps with modeled conversions where tracking signal is incomplete, particularly for iOS users who decline tracking. It can also award credit across multiple ad sets for the same purchase. Shopify only ever records one order per purchase, so the two counts rarely match.

What's a good CAC for Meta ads?

It depends on your contribution margin and repeat purchase behavior, not a fixed benchmark. A useful test is payback period. If a new customer's contribution margin from their first order, or first few orders, covers the CAC within a timeframe your business can sustain, the campaign is working, even if Meta's own CAC number looks high.

Should I optimize for ROAS or new-customer CAC?

Use both, but separate prospecting from retargeting first. ROAS is more useful for retargeting, where the goal is efficient revenue from an already-warm audience. New-customer CAC, matched to actual Shopify customer records, is the more honest metric for prospecting, where the job is acquiring people who haven't bought before.

Do I need to wait for full LTV data before judging a campaign?

Not entirely. Waiting for full lifetime value can delay decisions too long. A practical middle ground is tracking contribution margin on the first order plus repeat purchase rate within 60 to 90 days. That gives a reasonably early read without requiring a full LTV model.

How is this different from using Triple Whale or Polar Analytics?

Those tools specialize in ad attribution and measurement for Shopify brands, and can be a good fit if that's your primary need. The approach here suits teams that want to blend Meta and Shopify directly, including margin and other business data like HubSpot or a custom database, without adopting a dedicated attribution platform.

Can I connect Meta Ads and Shopify without engineering help?

Yes. Both platforms support standard API connections that a tool like Daymark can use directly, so the connection itself doesn't require custom engineering. The harder part is usually deciding how to match spend to orders and which margin inputs to include, not the technical integration.

Conclusion

Meta's dashboard is built to make Meta look good, which is a reasonable thing for an ad platform to do and a poor basis for your budget. The fix is the same shape as it is for any ad channel: match spend to real Shopify customers, apply real margin, and separate prospecting from retargeting before comparing anything. Once that's in place, "good CAC" and "profitable customer" mean the same thing again.

For the same approach applied to Google Ads, or to go deeper on margin, see our guide to contribution margin for ecommerce.

Related articles