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.
By Joris van Huët, Founder & CEOPublished 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:
- 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.
- 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.
- 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.
- 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)
Related answers
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
- AttributionAttribution identifies user actions that contribute to a desired outcome and assigns value to each. It reveals which marketing touchpoints drive conversions.
- Attribution ModelAn Attribution Model defines how credit for conversions is assigned to marketing touchpoints. It dictates how marketing channels receive credit for sales.
- Attribution WindowAttribution Window is the defined period after a user interacts with a marketing touchpoint, during which a conversion can be credited to that ad. It sets the timeframe for assigning conversion credit.
- ConversionConversion is a specific, desired action a user takes in response to a marketing message, such as a purchase or a sign-up.
- Holdout TestA holdout test is an experiment that keeps a random part of an audience from seeing a campaign and compares its results with those of the part that could see it. The held-out part is the control group, so the gap in outcomes estimates what the campaign added.
- IncrementalityIncrementality is the part of an outcome, such as orders or revenue, that a marketing activity caused: the extra results compared with what would have happened without it. It is a causal effect, not the number of conversions credited to a channel.
- Incrementality TestingIncrementality Testing measures the additional impact of a marketing campaign. It compares exposed and control groups to determine causal effect.
- UTM ParametersUTM Parameters are URL tags marketers use to track campaign effectiveness across traffic sources. They provide data for accurate campaign tracking and attribution in analytics platforms.