Snap PURCHASE Missing Value
Your Snap PURCHASE events are firing with non-zero volume but the `price` field is zero or missing. Without value, Snapchat cannot compute ROAS, cannot run value-based bidding (target ROAS, value optimisation), and reports the campaign as if every order were worth nothing. Conversion counts look fine while the revenue column stays at zero.
Why It Matters
Snap's PURCHASE event accepts `price` and `currency` as standard parameters. `price` carries the order total. `currency` is an ISO 4217 code that lets Snap convert across markets for aggregated reporting. When `price` is missing or zero, the event still counts as one conversion (so Conversions objective campaigns keep running), but ROAS in Ads Manager is zero divided by spend, which is zero, and value-based optimisation has no signal to weight against. This usually happens for two reasons. First, the team copied a generic PURCHASE snippet that did not include a value parameter and never went back to wire up the order total from the cart object. Second, a server-side templating bug renders the price as a string with currency symbols (`$129.90`) or with a comma decimal (`129,90`), and the Snap Pixel rejects or coerces it to zero. The browser shows the event firing, the console shows the call going out, but Events Manager logs value as zero. With value missing, you cannot meaningfully compare campaigns by ROAS, and you cannot trust Snap's lookalikes from value-based seed audiences, because the seed audience has no values to weight by.
How To Fix It
- Open the order confirmation page and inspect the `snaptr('track', 'PURCHASE', ...)` call in the browser console.
- Confirm the second argument includes `price` as a number (not a string), and `currency` as a three-letter ISO 4217 code.
- If your platform exposes the order total as a string like `$129.90`, strip the symbol and parse as a float before passing to Snap.
- Fire a real test order and confirm the PURCHASE event in Events Manager shows the correct value and currency.
- After 24 hours, check the ROAS column in Ads Manager has populated.
Example
Wrong: snaptr('track', 'PURCHASE', { transaction_id: '10492' })
Right: snaptr('track', 'PURCHASE', { transaction_id: '10492', price: 129.90, currency: 'USD' })Your Snap PURCHASE events are firing without value data. Per Snapchat's standard events documentation, PURCHASE should include `price` (as a number) and `currency` (as an ISO 4217 code) so Ads Manager can report ROAS and value-based bidding can weight conversions by revenue. When `price` is missing or zero, conversion counts still log but the revenue column reads as zero, ROAS becomes meaningless, and value-based optimisation has no signal to weight against. Common causes include generic copy-paste snippets that omit the parameter, or templating bugs that render the price as a string with currency symbols, which the pixel coerces to zero. Fix: pass `price` as a numeric value and `currency` as an ISO 4217 code on every PURCHASE call, verify in Events Manager, and confirm the ROAS column populates in Ads Manager. Source: businesshelp.snapchat.com/s/article/standard-events.
Drop this paragraph into your client deliverable. Sources back to the canonical platform documentation linked below.
References
Audit your own files for this check
AdLint runs this check (and 177 others) against your GTM, Google Ads, Meta, TikTok, LinkedIn, Pinterest, Twitter/X, and Snapchat exports. Everything stays in your browser. No uploads, no accounts.
Run a free audit