TT·TikTok Pixel·critical

TikTok CompletePayment Missing Value

Your CompletePayment events fire on every order, but they ship with no `value` and no `currency` field. TikTok counts the order. TikTok can't tell you what it was worth. Every purchase looks identical to the bidding system, so optimization treats a $9 trial and a $900 enterprise plan as the same outcome.

CL
By Christopher LandaverdeCreator of AdLint · ad-tech tracking specialistUpdated

Why It Matters

CompletePayment is the TikTok standard event tied to revenue. Per TikTok's standard-events spec, the event accepts `value` (the order total), `currency` (ISO 4217, e.g. USD), and a `contents` array describing the line items. When `value` is missing, TikTok's reporting drops to count-only. Value-based bidding, ROAS reporting, and the auction signals that prioritize high-LTV shoppers all degrade to a flat conversion count. The usual failure modes look the same in code: a hardcoded `value: 0`, a templated value that resolves to `undefined` because the variable name doesn't match the data layer, or a value computed before discount and tax so it disagrees with what the customer actually paid. The pixel still fires. Events Manager still records the event. The match quality score even looks healthy. Only the revenue column is hollow. Event Match Quality won't help you catch this. EMQ measures identifier coverage (email, phone, IP, user agent) — it doesn't validate parameter completeness. An account can hit a green EMQ score and still be invisible for value-based optimization. This is the gap agencies miss most often when reviewing client setups.

How To Fix It

  1. On the order-confirmation page, source the order total from the same field your accounting system reads. Pass it as `value` (number, not string) on `ttq.track('CompletePayment', { value, currency, contents })`.
  2. Set `currency` explicitly as a 3-letter ISO code. Do not assume USD. Multi-region storefronts must pass the buyer's currency, not the store default.
  3. Decide once whether your value is gross (with tax, with shipping) or net, and document it. Mismatched conventions between client and server events break deduplication.
  4. Open TikTok Test Events, run a real test purchase, and confirm `value` and `currency` appear on the CompletePayment payload.
  5. Backfill the same parameters on any matching server-side Events API call so client and server agree.

Example

Configuration
ttq.track('CompletePayment', { value: 129.99, currency: 'USD', contents: [{ content_id: 'SKU-1', quantity: 1, price: 129.99 }] });
For Your Client Report

This TikTok Pixel fires CompletePayment events without the `value` or `currency` parameters required for value-based optimization. Per TikTok's standard events and parameters reference, CompletePayment must include `value` (numeric order total) and `currency` (ISO 4217) for revenue reporting and value-based bidding to function; events without these parameters degrade to count-only and treat every purchase as equivalent at auction. Reported ROAS for this account is therefore not derived from actual order value, and high-LTV shoppers receive no bidding priority. Fix: pass dynamic `value` and `currency` from the confirmed order total on every CompletePayment call, align the same parameters across client and server Events API hits, and verify in TikTok Test Events. Source: ads.tiktok.com/help/article/standard-events-parameters.

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