Made by Rune Andersen @ Copenhagen, Denmark
TikTok logo

Debug TikTok in Chrome DevTools

To debug TikTok in Chrome DevTools, install the free Event Watcher extension and open its panel: every TikTok request is captured the moment it fires, decoded by a dedicated parser into named events, readable parameters, and consent signals, and cross-referenced against the visitor's consent state. Event Watcher has listed TikTok under Advertising since v1.0.0, and flags any TikTok event that fires without marketing consent.

TikTok Pixel for conversion tracking and audience building on TikTok Ads.

Last updated:

Category
Advertising
Detected via
Network requests: Event Watcher matches the request URLs this platform sends
Consent category
Marketing consent: Event Watcher flags TikTok activity that fires without it
Dedicated parser
Yes: requests are decoded into named events, parameters, and consent signals, not just raw URLs
Supported since
Event Watcher v1.0.0 (2026-02-20)
Show the URL patterns Event Watcher matches
  • analytics.tiktok.com
  • tiktok.com/i18n/pixel
  • events.tiktok.com
  • analytics-sg.tiktok.com
  • an.tiktok.com
  • analytics-ipv6.tiktokw.us
  • .tiktokw.us

What TikTok traffic looks like

TikTok's pixel is POST-and-JSON: everything interesting lives in the request body, often with several logical events batched into one network row.

Endpoint pattern
Loader from analytics.tiktok.com/i18n/pixel/events.js?sdkid=<pixelCode> (sdkid is the pixel code, an alphanumeric string like C4A7..., not a plain number); event traffic goes to endpoints under analytics.tiktok.com, with regional variants such as analytics-sg.tiktok.com and the US-hosted tiktokw.us hosts
Transport
POST with a JSON body (unlike Meta's GET beacons); multiple events are often batched into a single request
Key parameters
event / action event name (Pageview, ViewContent, CompletePayment, or custom) · context.pixel.code which pixel the hit belongs to · event_id / message_id deduplication keys against TikTok Events API server events
Payload
properties business payload (currency, value, contents, content_type) · context.user Advanced Matching: SHA-256 hashed email and phone_number, plus external_id · context.ad.callback the ttclid click ID captured from the ad landing URL

A typical event POST, as Event Watcher captures it:

{
  "event": "CompletePayment",
  "event_id": "ev-8842",
  "context": {
    "pixel": { "code": "C4A1B2…" },
    "user": { "email": "f0e1d2…hash", "external_id": "u-4821" },
    "ad": { "callback": "EAB-ttclid…" }
  },
  "properties": { "currency": "DKK", "value": 499, "contents": [{ "content_id": "SKU-123" }] }
}

Debugging TikTok with Event Watcher

  • The dedicated TikTok parser decodes the POST body. Each hit appears under its event name with the pixel code and event ID in the overview.
  • properties render as an Event Properties table; hashed email/phone and external_id group under Identity; the ttclid callback sits under Device data.
  • Page URL, referrer, and title land under Page Context; SDK library and version, message IDs, and batch flags in the Request group.
  • Batched payloads are visible per event: no unpicking JSON by hand.

TikTok and consent

Marketing consent

The extension checks TikTok hits against marketing consent. TikTok has no cookieless consent-mode variant in the browser pixel: a request to analytics.tiktok.com before the CMP grants marketing means data already left the browser, marked pre-consent or denied.

The nuance to watch: sites gate the events.js load correctly but call ttq.identify() with hashed PII as soon as the script arrives. Hits with populated context.user before consent are the highest-severity finding.

Common debugging scenarios

  • CompletePayment shows no revenue in TikTok Ads Manager. Open the event and check properties for value and currency. A missing currency invalidates the value.
  • Events API deduplication fails. Compare the browser hit's event_id in the Request group against the server event; mismatched or absent IDs mean double counting.
  • Which pixel code fired? Agencies frequently add a second pixel. Pivot the Grouped view by Tool, then inspect each hit's context.pixel.code to separate them.
  • Pixel fires before consent. The consent check flags it directly; the pattern and fix mirror GA4 fires before consent.
  • Traffic goes to tiktokw.us instead of analytics.tiktok.com. US data-residency routing. Event Watcher recognizes both hosts as the same platform, so a hit is a hit either way.

See TikTok traffic on your own site

Free, no account, runs entirely inside Chrome DevTools.

Add to ChromeFree on the Chrome Web Store

Related guides

More advertising platforms