Twitter/X Purchase Missing Value
Your X Pixel Purchase or CheckoutInitiated events are firing with no `value` parameter (or a value of zero) while the event count is non-zero. The conversions land in Events Manager, but X has no revenue to attach to them, so the ROAS column reads zero and value-based bidding has nothing to optimise toward.
Why It Matters
X Pixel revenue events accept `value` and `currency` parameters on the call: `twq('event', 'tw-XXXXX-XXXXX', { value: 129.00, currency: 'USD', conversion_id: orderId })`. Both fields are required for the platform to produce a revenue number. Missing `value` means every Purchase is treated as a unit conversion with no revenue weight. Missing `currency` means X cannot normalise across markets, and the reporting view falls back to the account default, which may not be what the order actually transacted in. The symptom is a Purchase column that ticks up in volume while the Revenue column stays at zero or sits suspiciously low. ROAS reads as zero or undefined. Value-based bidding strategies cannot run because there is no value signal to bid against, so the optimiser silently degrades to volume optimisation. Mixed-basket businesses (some $20 orders, some $400 orders) lose the ability to bid higher for higher-value carts, which is usually the reason the value parameter was supposed to be there in the first place. The usual cause is a tag template that was wired with `value` mapped to a Data Layer Variable that does not actually carry the cart total at the moment Purchase fires, or a hardcoded snippet that omits the parameter entirely.
How To Fix It
- Identify the source of truth for cart total at the Purchase moment: the order confirmation Data Layer object, the server-rendered template variable, or the commerce platform webhook.
- Update the Purchase tag so `value` reads that source and `currency` reads the actual transaction currency (ISO 4217 code, for example `USD`, `EUR`, `GBP`).
- Mirror the same value on any Conversions API call for the same order so server and browser agree.
- Fire a test Purchase and confirm the outgoing request payload carries the correct numeric `value` and the right `currency` string.
- After data lands in Events Manager, verify Revenue and ROAS columns populate and the per-order average matches your commerce platform AOV.
Example
Broken:
twq('event', 'tw-o1234-abcde', { conversion_id: '10492' })
Fixed:
twq('event', 'tw-o1234-abcde', { conversion_id: '10492', value: 129.00, currency: 'USD' })Your X Pixel Purchase or CheckoutInitiated events are firing with non-zero volume but no `value` parameter. Per X Ads Help Center documentation on conversion tracking for websites and the web event tags reference, revenue events accept `value` and `currency` parameters and both are required for the platform to attach revenue to a conversion, normalise across markets, and feed value-based bidding strategies. With value missing, every Purchase is recorded as a unit conversion, the Revenue and ROAS columns stay empty, and value-based optimisation degrades to volume optimisation, which costs mixed-basket businesses the ability to bid higher on higher-value carts. Fix: map `value` to the cart total source of truth at the Purchase moment, set `currency` to the actual transaction currency in ISO 4217 form, mirror the same values on any Conversions API path for the same order, and verify Events Manager reports a Revenue figure that matches commerce platform AOV. Source: business.twitter.com/en/help/campaign-measurement-and-analytics/conversion-tracking-for-websites.html.
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