Skip to content

Snapchat Ads ROAS looks low: what the dashboard misses

Snapchat's dashboard credits only the purchases it can link to an ad, and on iPhones some links break. Reconcile its count with GA4 and Shopify for one week, then hold out a region to see what the ads caused.

Three platforms, three answers, one budget to defend. Your GA4 export already holds the answer, and the first finding is free and never leaves your browser. Get your first finding free

By , Founder & CEOUpdated 6 min read

Run the numbers for your store: the free break-even ROAS calculator.

Snapchat's dashboard credits only the purchases it can link to an ad, and on iPhones some links break. By default Snap credits a purchase up to 28 days after a swipe and 1 or 2 days after a view. If your ad sets use those defaults, a short window isn't the reason, so three other causes are worth separating: lost signal, a duplicate-event setup that collapses real purchases, and ads that caused less than they were credited with. One week of numbers from Snap, GA4 and Shopify, plus one region held out, tells them apart.

What does Snapchat count by default?

Snap's Marketing API documentation states the defaults: "By default, Snap's attribution windows are 28 days post-swipe, 2 day post-view for engaged views (5 seconds or longer) and 1 day post-view (views shorter than 5 seconds)." Its reporting API accepts swipe windows of 1, 7 or 28 days and view windows up to 28 days, or no view credit, and it reports swipe, engaged-view and view conversions as separate variants.

Read that split first. A swipe is a click you can reproduce in GA4 with UTM tags. A view is credit for an ad nobody clicked, and GA4 doesn't see it, because no UTM tag travelled. GA4's session-scoped dimensions, such as Session source, describe the session that made the purchase and, Google says, are "unaffected by changes to the reporting attribution model". So a buyer who swiped on Monday and typed your address on Friday is Snapchat in Snap's report and Direct in a session-scoped GA4 report, since GA4 describes Direct as arrival "via a saved link or by entering your URL". GA4's attribution-model reports can credit the earlier tagged visit instead, so use the session-scoped view for the check below.

What do Apple's rules do to the conversions Snap can see?

Apple's support page says: "Starting in iOS 14.5, iPadOS 14.5, and tvOS 14.5, apps must ask for permission before tracking your activity across other companies' apps and websites." If the person taps Ask App Not to Track, the app doesn't get the advertising identifier (IDFA), and it is also "not permitted to track your activity using other information that identifies you or your device, like your email address" (Apple Support, published 19 December 2025).

Safari adds a second limit. WebKit, the engine behind Safari, documents that some trackers add "click IDs" to links as URL parameters, and that its Intelligent Tracking Prevention "detects such link decoration and caps the expiry of cookies created in JavaScript on the landing webpage to 24 hours." Snap's documentation says that when someone clicks or swipes up on a Snapchat ad, "the query parameter, &ScCid= is appended to the outgoing URL." Neither page says how often the two meet, so the size of the loss for your store isn't published.

A published measurement of what these rules did covers other platforms. A 2024 Marketing Science Institute working paper by Aridor, Che, Hollenbeck, Kaiser and McCarthy examined ad spend and performance data from over 4200 ecommerce firms worldwide on Meta, Google and TikTok. MSI's summary says Apple's policy "greatly reduced response to online ads and resulting revenues". MSI lists Meta, Google and TikTok, not Snapchat, and the finding is about real changes in how people responded to ads, not only what a dashboard could see. Both effects can land in the same Snap number, and the dashboard doesn't separate them.

How do you check what Snapchat is missing?

Run these on one complete week, with the same dates in each tool:

  1. Split Snap's purchases by type. Pull swipe, engaged-view and view purchases separately. If most of the count is view-based, your ROAS rests on credit for ads nobody clicked, and GA4 won't reproduce it.
  2. Count the same week in GA4 and Shopify. Tag each Snap ad URL with utm_source, utm_medium and utm_campaign, then count purchases by Session source in GA4 and total orders in Shopify. For a fair comparison, set Snap's swipe window to 1 day and turn view credit off, because a session-scoped report doesn't see longer trails or views. Pass: Snap's swipe count and GA4's Snapchat-tagged purchases sit close together, so the click path is being counted. Fail: GA4 shows clearly more, so Snap is missing purchases that a click brought. If Snap shows clearly more, look for untagged URLs or the duplicates in the next check.
  3. Check duplicate handling. If the Snap Pixel and the Conversions API both send purchases, each purchase needs the same identifier on both. Snap says that reusing one value across distinct conversions "will cause those events to be collapsed together in reporting, leading to under-counting", while missing ids let one event be counted more than once. Pass: Snap's purchase count doesn't exceed your Shopify orders for the week, and ids differ between orders. Fail: the count exceeds your orders, which points to duplicates, or one id repeats across different orders, which points to collapse.
  4. Hold out a region. Pause Snapchat in one region while it runs elsewhere, for longer than your buyers usually take from first ad to order. Compare Shopify orders in both regions with the weeks before. Pass: orders fall in the paused region by more than the regions differed before the pause. Fail: no visible gap, so the credited purchases weren't caused by the ads, or the test was too small to show one.

What doesn't the dashboard tell you?

It doesn't say how many iPhone purchases it missed: neither Snap's documentation nor Apple's pages give a figure, and the paper above doesn't cover Snapchat. It doesn't say whether a purchase it credited would have happened anyway, because a count of purchases after ad exposure has no comparison group. Each platform grades its own homework, and Snap's dashboard counts conversions that Snap's ads touched. A low ROAS may also be accurate: if the swipe count matches GA4 and the holdout shows a gap, the ads are working and the number is right.

Sources, 30 September 2026: Snap Marketing API: Measurement (Snap, 2026); Snap Conversions API: Deduplication (Snap, 2026); Snap Conversions API: Introduction (Snap, 2026); If an app asks to track your activity (Apple, 2025); Tracking Prevention in WebKit (WebKit, 2026); Evaluating the impact of privacy regulation on ecommerce firms (Marketing Science Institute, 2024); Default channel group (Google, 2026); Select attribution settings (Google, 2026)

Frequently asked questions

  • Why does Snapchat show fewer sales than GA4?
    Snap can only count purchases it can tie to an ad. Apple's rules stop apps tracking people who opt out, and Safari can cap cookies written by scripts after a link carrying a click ID. Tag Snap ads with UTMs and compare swipe purchases with GA4 for the same week: if GA4 is clearly higher, Snap is missing click-driven sales.
  • What is Snapchat's default attribution window?
    Snap's Marketing API documentation gives 28 days after a swipe, 2 days after an engaged view of 5 seconds or longer, and 1 day after a shorter view. Check the windows on your own ad sets before comparing periods.
  • Can Snapchat double count purchases?
    Yes, when the Pixel and the Conversions API send the same purchase without a shared id. Snap says that event can be counted more than once. Reusing one id across different purchases does the opposite and collapses them into under-counting.

Go deeper: Causal attribution, explained.

Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.

Have an audience of ecommerce operators? Earn 20% recurring commission by recommending the €99 read.

Keep reading

Terms in this article

Browse the full glossary

Your platforms guess.
We run the math.

Upload a GA4 export and see what each channel caused, next to last-click, in 1–2 minutes. The read is yours to keep.

The free finding runs in your browser. Your file never leaves it. The full read is €99, refundable within 30 days, no questions asked. Prices exclude VAT.