Networks · TikTok
TikTok Pixel events and parameters
Updated 2026-09-27
The TikTok Pixel is the website tag that reports events such as page views, add to cart and checkout to TikTok Ads. Its events travel as JSON in browser requests to analytics.tiktok.com, mainly /api/v2/pixel. The pixel also sends supporting requests that carry no event, so a request to TikTok alone does not show that an event fired.
Where the events go
| Endpoint | Method | What it carries |
|---|---|---|
analytics.tiktok.com/api/v2/pixel | POST | One event as JSON, several events in an events or batch array, or the event JSON base64-encoded in analytics_message. |
analytics.tiktok.com/api/v2/pixel/act | POST, or GET with analytics_message | Automatic page metadata from the pixel script: action: "Metadata", auto_collected_properties (such as page_trigger and content_data) and an empty properties object. No event name. A second shape, action: "Direct", has also been seen; TikTok does not document it. |
TikTok's Shopify integration sends the same event format to /api/v2/shopify_pixel. Paths ending in inter or perf are support traffic and carry no events. The script itself loads from analytics.tiktok.com/i18n/pixel/events.js (or sdk.js or shopify.js); a loaded script is setup evidence, not an event.
Event names as sent
The event name is in event; some formats use event_name. The pixel ID is in context.pixel.code (or pixel_code or pixel_id), and the occurrence ID in event_id or eventID. Names are case-sensitive, so check the exact spelling.
| Name as sent | Notes |
|---|---|
Pageview | Page view. Note the lowercase v. |
ViewContent | Product or content view. |
AddToCart | Add to cart. |
Search | Site search. On a live store, the term was in properties.query. |
InitiateCheckout | Checkout started. |
CompletePayment | The standard purchase event (not yet confirmed on a live purchase: we don't place real orders). |
LandingPageView, EngagedSession | Also seen on page loads on live sites. |
Value, currency, order ID and products
Event fields sit in a properties object; some formats use params with the same keys.
| Field | Key(s) | Notes |
|---|---|---|
| Event value | properties.value, params.value | Must be a number. Never taken from an item price. |
| Currency | properties.currency, params.currency | Kept exactly as sent. |
| Order ID | transaction_id, order_id, orderId (under properties or params) | Read in that order. |
| Occurrence ID | event_id, eventID | Identifies this event, separate from the order ID. |
| Products (list) | properties.contents[] or properties.items[] | Per item: ID in content_id, id or item_id; name in content_name, name or item_name; quantity; price or item_price; currency, sku, brand, category. One row per item. |
| Single product | properties.content_id with content_name, price, quantity | Read as one product only when exactly one ID is sent. content_ids holds a list of IDs. |
| Item price | properties.price, contents[].price | The product's price, not the event value. |
Common problems
- Value sent as the text "undefined". On a live store,
InitiateCheckoutsentproperties.valueas the literal stringundefined. It is not a number, and the extension flags it as an invalid numeric value. - Add to cart without an event value. On live stores,
AddToCartcarriedproperties.currency, the product ID,priceandquantity, but noproperties.value. The item price is not an event value, so the value shows as not observed rather than copied from the price. - A request that is not an event. On a live store, a cart action produced only a
/api/v2/pixel/actrequest. That is metadata with no event name; it does not show thatAddToCartfired. - Two events for one click. On a live store, one add-to-cart click produced two TikTok events, and several other networks doubled too. The cause was the site's cart flow, not the pixel. Two requests do not by themselves prove two counted conversions.
- Matching diagnostics read "missing".
signal_diagnostic_labelsreportedmissingfor all ten email and phone keys for anonymous visitors, which is expected. TikTok does not document these labels.
How to check it with Universal Pixel Debugger
- Open the site and click the Universal Pixel Debugger toolbar icon to open the side panel.
- Find the TikTok lane on the signal board. It shows the event count, a red
!for request errors and an amber?for requests with no decoded event, such as metadata requests. Click the lane to show only TikTok. - Click an event. Value and currency each show the key they came from, for example "from properties.value", or read Not observed or Invalid.
- Open the TikTok parameters checklist: "N of M known fields sent", the sent fields by section, and a Not sent list. Anything else the request carried is under Other sent fields.
- Check the issues: invalid numeric value or currency, a value, currency or product mismatch when events on several networks share an order ID, and data that differs between destinations.