TikTok conversions that survive the in-app browser
Almost all TikTok traffic arrives through the in-app browser, where cookie storage behaves differently from Safari or Chrome — which makes the server path proportionally more valuable here than on any desktop-heavy channel. We capture ttclid at landing before a redirect can strip it, send CompletePayment from your order record, deduplicate on a shared event_id, and clear the rejected events TikTok reports and most accounts never read.
Free30 minutesNo obligation
TikTok Events API · what breaks
What breaks on TikTok specifically
- 01
No ttclid on converting sessions
The click ID never captured, so server events have almost nothing to attribute on.
- 02
CompletePayment roughly double your orders
Pixel and Events API each minting their own event_id.
- 03
Rejected events nobody has looked at
TikTok reports them explicitly, unlike some platforms.
- 04
Desktop testing that proves nothing
The in-app browser is where your audience actually is.
TikTok Events API · the fix
What you get out of it — TikTok Events API
ttclid on every conversion
Captured at landing and persisted first-party.
One conversion per order
Deduplicated, with both paths still contributing.
Zero rejected events
Confirmed in the diagnostics panel over a full week.
Conversions that survive in-app storage quirks
Because they come from your order record.
TikTok Events API · architecture
Why the numbers were wrong before you got here — TikTok Events API
Worth understanding before buying anything, because it decides which tier you need — and for some readers the answer is that you don't need us yet.
- 1
The browser is the weakest link, and it is getting weaker on purpose
Every browser-side tag has to survive the page loading, the visitor staying, the script running and the request leaving. All four are now contested. The order in your database is certain; the browser event reporting it is not.
- 2
Safari caps the cookie your attribution depends on
Intelligent Tracking Prevention limits JavaScript-set cookies to seven days whatever expiry you set, so a customer who takes longer than a week to decide returns as a stranger. A cookie your own server writes in an HTTP response is not capped — the single largest practical difference between browser-side and first-party server-side.
- 3
Ad blockers remove the tag with no error
A blocked pixel does not warn anyone. The customer buys, the order lands, and no platform hears about it. First-party events from your own subdomain are not a third-party request and are not filtered the same way.
- 4
Consent is enforced by hope, not by architecture
Client-side consent means trusting each vendor script to honour a flag. A server container decides at the container: a denied destination receives nothing. That is a materially stronger position, and it also stops the over-blocking that discards data no law required losing.
- 5
Checkout can end where your tag isn't
Wallets and hosted payment pages can be abandoned after the money moves. Sending the purchase from the order record means it arrives whether or not anyone came back.
TikTok Events API · diagnose
How we scope the tiktok build
Before quoting. Each step narrows what the work actually is, so the price reflects your account rather than an average.
- 01
Check ttclid capture on a real in-app click
From the app on a device, not a desktop preview.
- 02
Read the diagnostics panel
Rejected events and missing-parameter warnings.
- 03
Confirm event_id parity across both paths
Identical, not merely present.
- 04
Inspect payload types
Numeric value, explicit currency, single-hashed identity.
- 05
Count active integrations
App, partner and server container can all be sending.
- 06
Reconcile a closed window
Against store orders, matched on order ID.
TikTok Events API · prove
How the work gets proven — TikTok Events API
A dashboard turning green proves a dashboard turned green. These are what we hand over instead.
Source of truth
Your store order records
- CompletePayment showing deduplication in TikTok Events Manager across a full week.
- ttclid present on every conversion from a TikTok click.
- Zero rejected events over seven days.
- Server CompletePayment count within a few percent of backend orders for a closed window.
- Reconciled over a fully closed window, matched on ID rather than on totals — totals hide equal and opposite errors.
- Payload evidence captured from real transactions, saved to your own records.
- The same reconciliation repeated 30 days later, because a setup that works once and drifts is the harder failure.
TikTok Events API · free audit
What we check in the free audit
- Check ttclid capture on a real in-app click
- Read the diagnostics panel
- Confirm event_id parity across both paths
- Inspect payload types
- Count active integrations
- Reconcile a closed window
Checked against
Your store order records
Free30 minutesNo obligation
TikTok Events API · when not to buy
When you shouldn't buy this — TikTok Events API
We would rather say it now than three weeks into an engagement.
- TikTok is under about 10% of your paid spend. Fix the channel carrying the other 90% first.
- You're in the first month of testing TikTok. Run the standard Pixel, see whether the channel works at all, then invest in the signal layer.
- You sell something in a category TikTok restricts. Better tracking won't change a policy outcome.
- Your creative isn't working. TikTok performance depends on creative more than measurement, and we'll say so.
TikTok Events API · what we deliver
What's included in the tiktok build
ttclid capture at landing
First-party, before any redirect.
Full event set
ViewContent through CompletePayment with correct parameter types.
Server-side CompletePayment
From the order record, deduplicated on event_id.
Hashed identity
Email and phone, normalised and hashed once.
Payload types corrected
Numeric value, explicit currency — TikTok rejects rather than silently accepting.
Reconciliation
Against your store orders, matched on order ID.
Written guarantee
95%+ tracking accuracy
Measured against Your store order records. Miss it and we keep working at no cost.
Pricing
Pick the package that fits your ad spend
Browser-side starter
$400One-time fee · lifetime ownership
The correct browser-side build, done properly and verified on a live transaction. Honest about its ceiling: it will not survive Safari's cookie cap, an ad blocker, or a checkout that ends somewhere your tag isn't. If you spend $1K+/month on paid media, start one tier up.
- Correct events, correct parameters, correct values
- Verified on a live transaction, not in preview
- Reconciled against your own order records
- Written handover you keep
1st-party server-side
Recommended$800One-time fee · most popular
The tier that changes the outcome rather than patching it. Your money events stop depending on the browser: they are sent from your order records through a first-party server container on your own subdomain, so iOS, ad blockers, consent banners and interrupted payment redirects can no longer take them away. Built in 2–4 days. You own the stack outright, with no monthly SaaS.
- First-party server container on your own subdomain
- Money events sent from your order records, not the browser
- Meta, Google, TikTok, Microsoft and LinkedIn all fed server-side
- Deduplicated on a shared event ID, verified at every destination
- First-party cookies beyond Safari's 7-day cap on JavaScript-set cookies
- 95%+ conversion accuracy and 8+ Meta EMQ, guaranteed in writing
Full 1st-party stack
$1,800One-time fee · lifetime ownership
Every paid-media channel server-side, plus the offline loop that connects closed revenue back to the click. For advertisers whose spend makes an attribution leak more expensive than the build.
- Everything in 1st-party server-side
- Pinterest, Snapchat, Reddit and LinkedIn CAPI
- CRM and offline conversion loop, so closed revenue reaches bidding
- Refunds and cancellations reversed at every destination
- Klaviyo identity stitching, BigQuery and Looker Studio
- Monitoring, so the next break surfaces in days rather than a quarter
FAQ
TikTok Events API questions, answered
It's stricter about types than most platforms — a value sent as a string or a missing currency gets refused rather than silently accepted. Rejected events don't count and can't deduplicate.
Yes. In-app cookie identity is weaker, so the click ID carries proportionally more of the attribution.
You can, but you lose browser signals. Both, deduplicated, is stronger than either alone.
Because that's where your audience is. The in-app browser handles storage and scripts differently, so a desktop test doesn't represent real sessions.
Free · 30 min
Get TikTok conversions arriving properly
Free30 minutesNo obligation
