Blog

Why your TikTok Events API match rate is below 60 percent

TikTok has stricter requirements than Meta and quieter error messages. Six fixes that move the needle.

TikTok's Events Manager shows your match quality score on a scale of 0 to 100. Anything below 60 means a meaningful share of your conversions are going unmatched, which means TikTok cannot optimise your campaigns against them. Here are the six causes that account for almost every case we have seen.

1. Missing ttp cookie

The TikTok Pixel sets a cookie called _ttp. Your server-side events need to forward this value as the ttp field. Without it, TikTok cannot tie the server event back to the browser session and falls back to email or phone matching only.

2. Click ID dropped after redirects

TikTok appends ttclid to landing page URLs. If your site redirects through a tracking URL or a checkout redirect, the parameter is often lost. Capture it on the first hit, store it in a first-party cookie, and forward it on every conversion event.

3. Hashed email in wrong format

TikTok requires SHA-256 with the same normalisation as Meta: lowercase, trim, no other transformation. The catch is that TikTok also accepts plaintext, so a misformatted hash will not throw an error. It will just match nothing. The same normalisation rules apply.

4. Missing user_agent and IP

Server-side events from sGTM include the original user agent and IP if you forward them explicitly. The TikTok client template in sGTM does this by default, but if you wrote a Custom Template you may have skipped these fields. They contribute a meaningful slice of the match score.

5. Event timestamp drift

TikTok rejects events with timestamps more than seven days old. If your server-side processing pipeline batches events for any length of time, double-check the event_time field. The Events Manager test tool will show "Event time is too old" but the production endpoint accepts the request and discards it silently.

6. Sending the same event from Pixel and CAPI without dedupe

If both your Pixel and your server-side CAPI are firing on the same conversion, you need a shared event_id. Without it, TikTok counts both, then deduplicates partially, and the resulting match score looks worse than the underlying setup deserves. The fix is the same as for Meta deduplication.

Work through these in order. Most accounts move from below 60 to above 75 within a single afternoon of cleanup.