Skip to main content
TikTok · Free trial → paidUse-case guide

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

  1. 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.

  2. 02

    Trial start valued as a full subscription

    Reporting revenue that may never arrive, and teaching bidding to buy trials that never convert.

  3. 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. 1

    Ad click

    Identifier captured on landing, before the signup flow begins.

  2. 2

    Signup

    Written to the account record as a permanent field. This is the only durable place it can live.

  3. 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. 4

    First payment clears

    From the billing webhook. The conversion that actually matters.

  5. 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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

Get my free conversion tracking audit

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.

Free · 30 min

Get free trial to paid tracked properly on TikTok Ads

Free30 minutesNo obligation