How to track free trial to paid for TikTok Ads
The moment that matters is a card being charged in a billing system days or weeks after the click, with no page, no tag and no session anywhere near it. Browser-side tracking cannot see it by construction, so the chain runs through the account record: identifier captured at signup, stored, and referenced when the first invoice clears. On TikTok Ads the specifics that matter are the click identifier (ttclid), the import mechanism (the Events API), and deduplication uses a shared event ID between the pixel and the Events API, the same principle as Meta. The chain only works end to end if the identifier is captured on landing and stored on the account record in your product database — no cookie survives the gap between ad click and payment sent back.
Free30 minutesNo obligation
Specific to TikTok × Free trial → paid
TikTok trial-to-paid: cheap signups need the payment sent back
On TikTok, send a registration-type event at trial start and Subscribe from your billing webhook when the first charge clears, both through the Events API with the ttclid saved on the account at signup and hashed email. Optimize on the trial with a modelled value unless paid volume is high enough to bid on directly.
TikTok suits consumer subscriptions with a visual hook: editing apps, language learning, fitness programs, creator tools. It can produce trial signups quickly, and feed traffic signs up on impulse more often than search traffic does, so more of those trials lapse without a charge. That is exactly why the payment event has to reach TikTok. Without it, bidding keeps buying the cheapest signups and the dashboard calls it a win.
Map the trial to CompleteRegistration and the first charge to Subscribe, with value set to the amount billed. Check the current standard event list in TikTok Events Manager for a dedicated trial event before choosing; it is worth using if your account has it. Treat payment as reporting until it arrives in enough volume to optimize on, and verify the attribution window against your trial length first.
The TikTok-specific break is the hop out of the in-app browser. A user starts the trial inside TikTok, then adds a card days later from Safari or a desktop, in a session that never saw the ttclid. That is fine if the identifier was written to the account at signup, and fatal if it lived in the in-app browser's cookie. If the trial is in a native app billed through an app store, the paid signal comes from the store or your measurement partner instead of your billing webhook.
TikTok · Free trial → paid · what breaks
Where this funnel usually breaks — TikTok · Free trial → paid
- 01
The identifier lives in a cookie
Which is long gone by the time the card is charged. It has to be a column on the account, not browser storage.
- 02
Trial start valued as a full subscription
Reporting revenue that may never arrive, and teaching bidding to buy trials that never convert.
- 03
Trial length pushes the payment outside the window
A 30-day trial plus a slow start eats a third of the import window before the payment even happens.
TikTok · Free trial → paid · the fix
What working looks like — TikTok · Free trial → paid
Payment sent back attributed to the click
Weeks later if necessary, because the identifier lives on the account record in your product database rather than in a cookie.
TikTok bidding fed the real outcome
Via the Events API, so it optimizes toward paying customers rather than toward trial signups.
A reconciliation that closes
Your billing system's record of first successful payment matched per record against what TikTok Ads reports, over a fully closed window.
TikTok · Free trial → paid · architecture
The exact event sequence — TikTok · Free trial → paid
Nothing between stages two and four involves a browser, which is why cookie-based approaches cannot work here regardless of configuration.
- 1
Ad click
Identifier captured on landing, before the signup flow begins.
- 2
Signup
Written to the account record as a permanent field. This is the only durable place it can live.
- 3
Trial start
Sent as its own event with a modelled value, not the full plan price — it's volume for bidding to learn from, not revenue.
- 4
First payment clears
From the billing webhook. The conversion that actually matters.
- 5
Payment sent back
Referencing the click from weeks earlier, if it's inside the import window.
TikTok · Free trial → paid · diagnose
What's specific to TikTok Ads
- 01
Click identifier: ttclid
TikTok's click identifier, appended to the landing URL. Capture it on landing and persist it exactly as you would gclid or fbclid — it's the strongest matching signal available and the most commonly missing one, because TikTok is often added to a stack that was built around Google and Meta.
- 02
Import mechanism: the Events API
Structurally similar to the other server-side conversion APIs: event name, timestamp, event ID, hashed user identifiers, event properties. TikTok's exact field names change more often than the other major platforms', so build against their current documentation rather than a blog post — including this one.
- 03
Deduplication
Send the same event ID from the browser pixel and the server event. The mechanics mirror Meta's closely enough that a team who has done one can do the other, but verify TikTok's current requirements rather than assuming parity — the deduplication window in particular isn't a figure we'll guess at.
- 04
Window and timing
Verify the current attribution and import windows in TikTok's documentation. They differ from Google's and Meta's, and quoting a number here that goes stale would be worse than sending you to the source.
- 05
The TikTok gotcha
TikTok is usually the third platform added to a stack, and it typically inherits whatever assumptions were made for Google and Meta. The most common result is that ttclid is never captured at all, because the capture code was written naming gclid and fbclid and nobody revisited it.
TikTok · Free trial → paid · prove
How to prove the chain works — TikTok · Free trial → paid
Source of truth
your billing system's record of first successful payment
- The same identifier confirmed on the account record in your product database after a full real journey through every step.
- Payment sent back confirmed arriving at TikTok Ads, verified by TikTok's own event diagnostics, plus a reconciliation against your records.
- Your billing system's record of first successful payment reconciled against TikTok Ads per record over a fully closed window.
TikTok · Free trial → paid · free audit
What we check in the free audit
- Click identifier: ttclid
- Import mechanism: the Events API
- Deduplication
- Window and timing
- The TikTok gotcha
Checked against
your billing system's record of first successful payment
Free30 minutesNo obligation
TikTok · Free trial → paid · when not to buy
When this doesn't apply to you — TikTok · Free trial → paid
- If your trial converts within the same session — a paid trial with an immediate charge, say — this is just a purchase event and none of the complexity below applies.
- If TikTok is a small share of your spend, the effort is better spent making Google and Meta correct first — the same infrastructure then extends to TikTok as one additional tag rather than a separate project.
- If your cycle from click to payment sent back regularly exceeds the import window, the final event can't drive bidding whatever you build. Optimize toward an activation milestone inside the trial instead and use the later data for budget decisions rather than for bidding.
- If almost none of your accounts carry a click identifier today, that's the whole project.
TikTok · Free trial → paid · what we deliver
The implementation, on TikTok Ads
Capture ttclid on landing
ttclid is appended on ad clicks. Add it explicitly to your capture list — the single most common TikTok tracking fault is capture code that predates TikTok being in the account.
Persist it to the account record in your product database
Write it to the account record at signup as a permanent field, alongside the customer ID, so every later billing event can reference it.
Send payment sent back from the record
The billing webhook fires on the first successful invoice and sends the amount actually charged. Dispatched to TikTok Ads through the Events API.
Deduplicate and reverse
Deduplication uses a shared event id between the pixel and the events api, the same principle as meta. Refunds and first-month cancellations should reverse, or reported revenue only ever climbs while the cohort shrinks.
FAQ
TikTok · Free trial → paid questions, answered
Subscribe, sent from the billing webhook through the Events API with value set to the amount charged. Check TikTok's current event list for a dedicated trial-start event to use at signup.
Feed traffic signs up on impulse rather than search intent, so more trials lapse unpaid. That gap is why the payment needs to go back to TikTok, or bidding keeps buying signups that never pay.
Because trial-to-paid rates differ sharply by channel, and signup-optimized bidding reliably finds the channels producing the most trials, which are usually the ones producing the fewest customers.
It doesn't, as a cookie — the gap is too long. It has to be written onto the account record in your product database at the point of ad click, where it lives as a field rather than as browser storage.
A standard event name, an event timestamp, a shared event ID, hashed and normalized user identifiers, and ttclid where available. Confirm the current required fields in TikTok's documentation before building.
Two to four days for the implementation, plus a closed reconciliation window before we'd call it verified. Capture and persistence are the fiddly parts; the import itself is usually an afternoon.
Yes, and the reference pages on this site cover the mechanics. The part that's genuinely tedious rather than clever is keeping ttclid alive through multi-step forms and a signup flow that spans several steps or an OAuth bounce, which fails silently at every stage.
More on TikTok · Free trial → paid
- Google Ads · Free trial → paidHow to track free trial to paid for Google Ads
- Meta · Free trial → paidHow to track free trial to paid for Meta Ads
- Microsoft · Free trial → paidHow to track free trial to paid for Microsoft Ads
RELATED GUIDES
Funnels next to free trial to paid, and the checks that close it
- TikTok · Free tool → paid planHow to track free tool to paid plan for TikTok Ads
- TikTok · Freemium → paidHow to track freemium signup to paid upgrade for TikTok Ads
- TikTok × SubscriptionsHow to reconcile TikTok Ads against your billing system
- TikTok · Yoga and pilatesTikTok Ads conversion tracking for yoga and pilates studios
- TikTok · Gyms and studiosTikTok Ads conversion tracking for gyms and fitness studios
- Mollie → TikTokConnecting Mollie to TikTok Events API
- Supabase Auth → TikTokConnecting Supabase Auth to TikTok Events API
- TikTok · PQL → closed wonHow to track product-qualified lead to closed won for TikTok Ads
Free · 30 min
Get free trial to paid tracked properly on TikTok Ads
Free30 minutesNo obligation
