At a glance
The real-time alert that fires when a campaign’s return on ad spend falls sharply against its own recent baseline. It compares current ROAS to the prior same-day-of-week window and pings when the drop is large enough on a campaign carrying real spend. This is the first number to check when the ad team’s morning is about to go badly. On Snapchat a genuine ROAS drop usually means creative fatigue (the same Story Ad or Single Video has saturated a young, fast-moving audience) rather than a bidding error, so it warrants a same-session look before the day’s spend compounds. Caveat: a ROAS drop can be a measurement break (the Snap Pixel or Conversions API failing) rather than a demand drop, and Snapchat’s swipe-up traffic lands entirely in a mobile in-app browser where slow pages quietly suppress conversions, so always confirm against swipe-ups versus conversions before cutting spend.
| What it watches | Campaign-level ROAS, derived from Snapchat-attributed conversion_purchases_value divided by spend, pulled from the Snapchat Marketing API. The alert evaluates each campaign carrying meaningful spend, not just the account total. |
| The comparison basis | Current ROAS vs the prior same-day-of-week window. Same-DOW comparison removes weekday-versus-weekend seasonality so a normal Monday-to-Sunday swing does not trip the alert. |
| Alert trigger | ROAS drop greater than roughly 25% versus the prior same-DOW window, on any campaign with spend above a configured floor. The percentage and the spend floor are both tunable per profile in the Sensitivity tab. |
| Why a spend floor | A campaign spending a few units a day can swing wildly on one or two orders, and Snapchat’s auto-bid goal-based bidding can starve a small ad squad entirely for a day. The spend floor suppresses that noise so the alert only speaks when real money is at stake. |
| Attribution model | Inherits the ad account’s configured window, commonly 7-day swipe-up (click) plus 1-day view. A drop is measured on a like-for-like attribution basis across both windows. |
| iOS / SKAdNetwork impact | A sudden ROAS drop can reflect a tracking regression (the Snap Pixel or Conversions API events stopping) rather than a demand drop. Snapchat skews Gen-Z and younger millennials on heavily iOS-leaning devices, so SKAdNetwork delay and modelling matter more here than on most channels. Pair with Snap Pixel / Conversions API Tracking Broken to separate the two causes. |
| Modeled conversions | Snapchat fills attribution gaps with modelled and SKAdNetwork-reported conversions. A modelling recalibration can move ROAS without any real change in demand. The rolling comparison smooths most of this, but a single-day spike is less trustworthy than the rolling read. |
| Chart type | Alert list. Each row names the campaign, its current ROAS, the prior-window ROAS, and the percentage drop. |
| Currency | Account currency, set at advertiser-account creation and immutable. Single currency per ad account. |
| Time window | RT (real-time, recomputed on the standard refresh; Snapchat Marketing API ingest lags 3 to 6 hours, and SKAdNetwork postbacks can arrive up to 24 to 48 hours late, so today’s read is structurally incomplete). |
| Roles | owner, marketing, finance |
Calculation
Calculated automatically from your Snapchat Ads data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
Lumen & Loft, a UK Gen-Z homeware brand running Snapchat on a 7-day swipe-up plus 1-day view attribution window. The alert fires at 09:15 on 14 Apr 26. Account currency GBP. Conversions API is live alongside the Snap Pixel. All figures below are illustrative, not a real advertiser’s data.| Campaign | Spend last 24h (£) | ROAS now | ROAS prior same-DOW | Drop | Flagged |
|---|---|---|---|---|---|
| Prospecting (Single Video, cold) | 1,640 | 1.95x | 3.20x | -39% | Yes |
| Retargeting (Story Ads, 7d) | 580 | 5.40x | 5.70x | -5% | No |
| Dynamic Ads (catalogue, broad) | 470 | 2.10x | 2.20x | -5% | No |
| AR Lens (creator-led test) | 30 | 0.70x | 2.80x | -75% | No (below spend floor) |
- Only the cold prospecting campaign trips the alert. It carries the most spend and its ROAS fell 39% against the same weekday last week. That is a real money signal, not noise.
- The AR Lens test fell harder (-75%) but does not fire. It is below the configured spend floor, so a one-order swing is expected. Raising or lowering that floor is a Sensitivity-tab decision based on how much daily spend counts as material for this account.
- The first diagnostic is measurement, not demand. Before cutting the prospecting budget, check swipe-ups versus conversions and Snap Pixel / Conversions API Tracking Broken. If swipe-ups held steady while conversions dropped, the cause is likely a tracking break or a slow landing page, and cutting spend would be the wrong move.
- If tracking is healthy, treat it as creative fatigue first. A 39% drop on a cold Single Video is the classic Snapchat signature: the same vertical video has cycled through a tight Gen-Z audience and they have stopped swiping up. Snapchat creative fatigues fast on a young, high-frequency base, so plan a refresh and check CTR Trend (swipe-up rate) for the leading-indicator decline.
- Same-DOW comparison matters here. Comparing Saturday to the prior Friday would show a false drop on a B2C homeware account where weekends convert differently. The same-DOW basis removes that artefact.
- ROAS drop + swipe-ups steady + conversions down = suspect tracking or landing-page speed first. Check Snap Pixel / Conversions API Tracking Broken and Mobile Landing Pages with Poor Web Vitals.
- ROAS drop + swipe-up rate already declining for a week = creative fatigue. Refresh the video or Story Ad, do not just raise the bid.
- ROAS drop + spend up sharply = goal-based bidding has scaled a winner into less efficient inventory. Cap the daily budget. See Wasted-Spend Burst (3-day spike).
- ROAS drop on an Awareness or Reach objective = not a real signal. Awareness objectives are not optimised on purchases; do not read ROAS on them.
Sibling cards merchants should reference together
| Card | Why pair it with ROAS Dropped Below Threshold | What the combination tells you |
|---|---|---|
| ROAS | The headline level this alert watches. | Whether the drop is off a healthy base or a weak one. |
| ROAS Trend | The daily series behind the alert. | The shape of the decline: gradual fatigue versus a sudden cliff (tracking break). |
| Clicks vs Conversions | The broken-tracking canary (swipe-ups versus purchases). | If swipe-ups held while conversions fell, the ROAS drop is measurement, not demand. |
| Snap Pixel / Conversions API Tracking Broken | Confirms whether a tracking regression caused the drop. | Stops you cutting spend on a measurement bug. |
| Mobile Landing Pages with Poor Web Vitals | Every swipe-up lands in a mobile in-app browser, where slow pages crush conversion. | Tells you whether a ROAS drop is a page-speed problem rather than a creative or demand one. |
| CTR Trend | Swipe-up rate decline usually precedes ROAS decline by a week or so on Snapchat. | Early-warning shape for creative fatigue. |
| ROAS by Campaign | Where the drop concentrates. | Isolates the offending campaign for action. |
| Wasted-Spend Burst (3-day spike) | Catches a ROAS drop driven by spend scaling, not demand. | Tells you whether bidding scaled into inefficient inventory. |
Reconciling against Snapchat Ads Manager
Where to look in Snapchat Ads Manager: In Snapchat Ads Manager at ads.snapchat.com, open the Manage Ads view, drop to the Campaign level, and add the Purchases ROAS column (or build a custom column from Purchases Conversion Value divided by Spend). Set the date range to today and a comparison range to the prior 7 days. Snapchat does not surface a same-day-of-week alert natively, so you reconstruct the comparison manually. Match the attribution setting (swipe-up and view windows) to this card’s configured window and the per-campaign ROAS values should line up to within rounding. Other Ads Manager views that look related but are not:- Automated Rules: Snapchat’s own rule engine can pause campaigns on a ROAS or cost threshold, but it acts rather than alerts, and it does not use a same-DOW baseline. This card is a detection layer, not an auto-action.
- Account-level ROAS: the headline number blends all campaigns and can stay flat while one campaign collapses. This card watches each campaign individually.
- Events Manager: pixel and Conversions API health live separately at the Events Manager view. Use it to confirm a tracking cause, but it does not show ROAS.
| Reason | Direction | Why |
|---|---|---|
| Time zone | Boundary days off | Snapchat uses the ad-account time zone (set at account creation and immutable); this card uses UTC. On a same-day comparison the boundary can shift the percentage on US Pacific or UK accounts. |
| Same-DOW vs calendar | Different baseline | Snapchat’s built-in comparison is prior-period (yesterday or the prior 7 days as a block); this card compares the same weekday to strip seasonality. The two baselines can disagree on whether a drop is real. |
| Ingest and SKAdNetwork lag | Today reads low | Snapchat Marketing API ingest lags 3 to 6 hours and SKAdNetwork postbacks can arrive 24 to 48 hours late, so today’s ROAS is incomplete; the alert weights the rolling read to avoid false fires on lag alone. |
| Modelled-conversion recalibration | Variable | A Snapchat modelling update can move ROAS without a demand change. The rolling window absorbs most of this. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
google_analytics.ga_revenue_by_channel | If Snapchat ROAS drops but GA4 Paid Social holds, suspect Snapchat-side tracking | GA4 uses last-non-direct click; Snapchat uses its own swipe-up and view window. A divergence points at attribution, not demand. |
shopify.total_revenue | A store-wide revenue drop affects all channels | If Shopify revenue is flat while Snapchat ROAS dropped, the issue is Snapchat-specific (tracking, page speed, or fatigue), not market demand. |
google_ads.roas_drop_alert | Both firing at once suggests a store-wide cause | Both quiet except Snapchat points at a Snapchat-only problem. |