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

How to track free trial to paid for Meta 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 Meta Ads the specifics that matter are the click identifier (fbclid, which becomes the _fbc cookie), the import mechanism (the Conversions API), and deduplication is on event_name and event_id together, so both paths must send the same ID and the identically-cased name. 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 Meta × Free trial → paid

Meta trial-to-paid: StartTrial for bidding, Subscribe for reporting

On Meta, send StartTrial at signup with a modelled value and Subscribe from your billing webhook when the first invoice clears, both through the Conversions API with the fbc saved on the account plus hashed email. With Meta's 7-day click window, the payment from a 14- or 30-day trial usually lands outside attribution.

Meta's standard events already split this funnel: StartTrial for the signup and Subscribe for the first charge. The arithmetic decides which one bids. A 14-day trial puts the payment on day 14 at the earliest, a week past Meta's default 7-day click window, so Meta will receive the Subscribe and usually be unable to credit it to the ad. Optimize delivery on StartTrial, and send Subscribe anyway so the value comparison and your audiences reflect paying customers.

Make the StartTrial value honest. Meta documents a predicted_ltv parameter for StartTrial and Subscribe; fill it from your own trial-to-paid rate by plan rather than the list price, and confirm the current parameter list before building. If one plan converts at twice the rate of another, that difference belongs in the value, because it is the only way Meta learns which trials are worth buying.

The quiet failure is the billing email. The person who starts the trial signs up with a personal address, then a colleague pays with the company card under an accounts@ address. Matching the Subscribe on the billing customer's email finds nobody. Send the email and the fbc stored on the account record, not whatever the payment processor holds, so the payment matches the same person Meta saw click.

Meta · Free trial → paid · what breaks

Where this funnel usually breaks — Meta · 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.

Meta · Free trial → paid · the fix

What working looks like — Meta · 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.

  • Meta bidding fed the real outcome

    Via the Conversions 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 Meta Ads reports, over a fully closed window.

Meta · Free trial → paid · architecture

The exact event sequence — Meta · 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.

Meta · Free trial → paid · diagnose

What's specific to Meta Ads

  1. 01

    Click identifier: fbclid, which becomes the _fbc cookie

    fbclid arrives on the landing URL and is normally written into the _fbc cookie. If it isn't captured on landing, _fbc never exists — and _fbc is the strongest click signal Meta has, so its absence caps your match quality regardless of what else you send. Forward _fbp too, from the browser rather than regenerating it server-side.

  2. 02

    Import mechanism: the Conversions API

    Server events go through CAPI with an action_source describing where the conversion happened. Offline outcomes flow through the same API rather than a separate product. Verify current field names against Meta's documentation before building — this surface changes.

  3. 03

    Deduplication

    This is the mechanism that decides whether adding CAPI helps or doubles your conversions. Both the Pixel and the server event must carry the same event_id — the order or booking reference works best, because both sides can produce it without coordinating. A case difference in the event name alone produces two events even with a matching ID. Read the Deduplicated indicator in Events Manager over a full week, not one session.

  4. 04

    Window and timing

    Meta's default attribution is a 7-day click and 1-day view. View-through is included by default, which is a large part of why Meta claims more conversions than your other platforms — that overlap is expected rather than a fault.

  5. 05

    The Meta gotcha

    Match quality is where most Meta accounts lose attribution, and it's almost always normalization rather than coverage. An email hashed with a capital letter, or a phone hashed with brackets, produces a perfectly valid hash that matches nobody and errors nowhere. Normalize first, then hash, and read the score per event rather than overall.

Meta · Free trial → paid · prove

How to prove the chain works — Meta · 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 Meta Ads, verified by the Deduplicated indicator and the per-event match quality score, both read over seven days.
  • Your billing system's record of first successful payment reconciled against Meta Ads per record over a fully closed window.

Meta · Free trial → paid · free audit

What we check in the free audit

  • Click identifier: fbclid, which becomes the _fbc cookie
  • Import mechanism: the Conversions API
  • Deduplication
  • Window and timing
  • The Meta gotcha

Checked against

your billing system's record of first successful payment

Get my free conversion tracking audit

Free30 minutesNo obligation

Meta · Free trial → paid · when not to buy

When this doesn't apply to you — Meta · 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 you're advertising a business type Meta restricts data collection for — health being the obvious one — the parameters you can legitimately send are narrower, and that constraint should shape the build rather than be worked around.
  • 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.

Meta · Free trial → paid · what we deliver

The implementation, on Meta Ads

  • Capture fbclid and _fbc on landing

    fbclid is appended automatically on ad clicks. Capture it on landing and persist it — if you only ever read the _fbc cookie later, you're depending on a cookie that Safari caps at seven days when it's set through JavaScript.

  • 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 Meta Ads through the Conversions API.

  • Deduplicate and reverse

    Deduplication is on event_name and event_id together, so both paths must send the same id and the identically-cased name. Refunds and first-month cancellations should reverse, or reported revenue only ever climbs while the cohort shrinks.

FAQ

Meta · Free trial → paid questions, answered

StartTrial in most cases, because the first payment on a 14-day or longer trial falls outside Meta's default 7-day click window and arrives too late to steer delivery. Send Subscribe anyway for reporting and value checks.

Free · 30 min

Get free trial to paid tracked properly on Meta Ads

Free30 minutesNo obligation