On TikTok the sale rarely happens in the session that clicked
Someone discovers a product in the feed, leaves the app, and comes back to buy later, often on another device. The browser pixel sees only a fragment of that journey. The Events API sends the purchase from your server, with the ttclid captured at first contact.
The problem
Why TikTok understates your performance
A channel that looks less profitable than it is ends up getting less budget. Under-measurement becomes a decision.
The in-app browser keeps nothing
The first click happens in TikTok's in-app browser. The purchase often happens later in Safari or Chrome. Those are two separate storage contexts, and what was written in one does not exist in the other.
The ttclid is lost before checkout
The click identifier arrives in the URL of the first page. If it is not captured and kept server-side right then, it will be gone by the time the order is placed, and the purchase attaches to no ad.
The lag between discovery and purchase
TikTok is a discovery channel: the delay between view and purchase tends to be longer than elsewhere. Measurement that cannot outlive the session is structurally wrong for this channel.
Match keys
What TikTok accepts, and what we send
Personal data is SHA-256 hashed on your server. Click identifiers are sent as-is, as TikTok requires.
- ttclid
- The TikTok click identifier, captured when the visitor lands and kept until the order. It is the strongest key on this channel: when it is present, the purchase attaches to the ad unambiguously.
- ttp
- The browser-side TikTok pixel identifier, passed with the server event. It complements the ttclid for visitors who return later without going through an ad again.
- email, phone, external_id
- SHA-256 hashed. The phone is normalised to E.164 from the buyer's actual country, never an assumed one: a wrong dialling code produces a hash that matches nobody.
- ip, user_agent
- Sent unhashed, with the visitor's real values. They act as a fallback when no click identifier survived the journey.
TikTok's rules
Constraints we respect on your behalf
Learned from the API itself, including the hard way.
Strict types, silent rejections
The Events API refuses an event when a field has the wrong type, and that error surfaces nowhere in your TikTok interface. A malformed send produces no alert, only an absence of conversions.
Consent denied, nothing sent
If the visitor declines advertising tracking, nothing goes to TikTok. Unspecified consent limits the payload to click identifiers, with no personal data.
A test code hijacks real events
A test code left active sends your real conversions to the test tab instead of your reports. Trackful passes that code only during an explicit test, never on production sends.
Your platforms
TikTok on Shopify and on WooCommerce
Shopify
The theme extension captures the ttclid on the landing page and carries it across visits. The Web Pixel and the order webhook feed the same purchase, deduplicated.
Trackful for ShopifyWooCommerce
The ttclid is stored in a server-set cookie valid for one year, which escapes the limits applied to cookies written in JavaScript. A direct PHP hook fires the send on the order.
Trackful for WooCommerceSetup
Connected in minutes
- 1
Enter the pixel
Pixel code and Events API token, generated in your TikTok Events Manager.
- 2
Send a test
A test conversion goes out immediately and you watch it land in Events Manager.
- 3
Switch the channel on
Once delivery is confirmed, leave the channel running. Trackful alerts you if sends stop landing.
Questions
Frequently asked
Should I keep the TikTok pixel on my site?
Yes. The pixel and the Events API complement each other: the browser captures what it can, the server fills the rest. Trackful sends a shared event identifier so TikTok collapses the duplicate instead of counting two purchases.
Why are my TikTok conversions not showing up?
The most common cause is an event rejected for a wrongly typed field, a rejection that appears nowhere in the TikTok interface. The second is a test code left active, which routes real conversions to the test tab.
Does the ttclid survive if the customer buys the next day?
Yes, that is exactly the point. It is captured on arrival and kept server-side, independent of what the browser decides to retain. On WooCommerce a server-set cookie holds it for a year.
What happens when a visitor declines tracking?
No event is sent to TikTok for that visitor. The decision is enforced on the server, where a script cannot bypass it.
Trackful is not affiliated with or endorsed by TikTok. TikTok is a trademark of ByteDance Ltd., referenced here to identify the service Trackful sends your conversions to.
Stop paying for results you cannot measure
Every day without Trackful is a day you make ad decisions with only 60% of the data. Install Trackful in 5 minutes and see the difference.