How to track free trial to paid for Google 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 Google Ads the specifics that matter are the click identifier (gclid, gbraid and wbraid), the import mechanism (Google's offline conversion import), and conversion actions deduplicate on their own counting setting rather than an event ID, so the setting matters more here than the payload. 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 Google Ads × Free trial → paid
Google Ads trial-to-paid: bid on the first invoice, not the signup
Send the first successful payment from your billing webhook to Google Ads as an offline conversion, uploaded against the gclid, gbraid or wbraid saved on the account at signup, with the amount actually charged as value. Keep trial start as a secondary conversion action so it informs reporting without steering bidding until payment volume allows.
Search is where trial-to-paid works best, because the people who type a product category into Google are already shopping, and the 90-day window comfortably covers a 14- or 30-day trial plus a late first invoice. Build two conversion actions, "Trial started" and "First payment". While paid accounts are few, keep the trial action primary with a modelled value (your trial-to-paid rate times the first-month price). Once the payment action arrives often enough that the bid strategy stops sitting in learning, make payment primary and demote the trial to secondary.
Google is also the one platform here that lets you correct an uploaded payment. Conversion adjustments can retract or restate a conversion, so a refund or chargeback in the first billing cycle can be taken back out rather than living in your ROAS forever. Upload the invoice ID as the order ID so the adjustment has something to reference, and confirm the adjustment time limits in your account before relying on them.
The common break is a "Sign in with Google" button. The OAuth round trip lands on a new URL with no gclid, so the account is created without one unless you stored the identifier server-side before the redirect. Enhanced Conversions for Leads can recover some of those on the hashed signup email, which also helps when the trial starts on a phone and the card is added on a laptop.
Google Ads · Free trial → paid · what breaks
Where this funnel usually breaks — Google Ads · 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.
Google Ads · Free trial → paid · the fix
What working looks like — Google Ads · 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.
Google Ads bidding fed the real outcome
Via offline conversion import, 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 Google Ads reports, over a fully closed window.
Google Ads · Free trial → paid · architecture
The exact event sequence — Google Ads · 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.
Google Ads · Free trial → paid · diagnose
What's specific to Google Ads
- 01
Click identifier: gclid, gbraid and wbraid
Three parameters, not one. gclid is the long-standing identifier; gbraid and wbraid arrive on iOS traffic where privacy constraints prevent the usual one. Capture code that names only gclid loses a growing share, silently, and the loss is invisible until you audit how many records carry an identifier.
- 02
Import mechanism: offline conversion import
Uploaded against the click identifier, either through the Google Ads API or as a file. The upload is the easy part; what limits it is how many of your records carry an identifier at all. Verify the current column format against Google's own template — it has changed before.
- 03
Deduplication
There's no shared event ID mechanism like Meta's. What matters instead is the counting setting on each conversion action — 'one' for lead-type conversions so a repeat submitter doesn't count three times, 'every' for ecommerce where a second purchase is a second sale. This is the single most common misconfiguration we find in Google Ads accounts.
- 04
Window and timing
Google's offline import window is 90 days from the click. Anything older can't be matched, and rows outside it fail as unmatched without much explanation. Measure your median click-to-outcome time against that before designing anything.
- 05
The Google Ads gotcha
A conversion action that stops receiving hits is flagged as inactive 30 days later — by which point a month of budget has already run against a missing signal. Check the last-received date on every action monthly; it takes two minutes and it's the cheapest monitoring available.
Google Ads · Free trial → paid · prove
How to prove the chain works — Google Ads · 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 Google Ads, verified by the match rate on the upload, not the success message.
- Your billing system's record of first successful payment reconciled against Google Ads per record over a fully closed window.
Google Ads · Free trial → paid · free audit
What we check in the free audit
- Click identifier: gclid, gbraid and wbraid
- Import mechanism: offline conversion import
- Deduplication
- Window and timing
- The Google Ads gotcha
Checked against
your billing system's record of first successful payment
Free30 minutesNo obligation
Google Ads · Free trial → paid · when not to buy
When this doesn't apply to you — Google Ads · 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 running Performance Max exclusively and haven't separated your conversion actions, the import will work and the reporting won't tell you much. Worth sorting the account structure first.
- 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.
Google Ads · Free trial → paid · what we deliver
The implementation, on Google Ads
Capture gclid, gbraid and wbraid on landing
Auto-tagging appends the identifier. Confirm it's enabled in every account — it gets switched off for cleaner analytics URLs more often than you'd expect, and that single setting removes conversion attribution, Enhanced Conversions and offline import in one go.
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 Google Ads through Google's offline conversion import.
Deduplicate and reverse
Conversion actions deduplicate on their own counting setting rather than an event id, so the setting matters more here than the payload. Refunds and first-month cancellations should reverse, or reported revenue only ever climbs while the cohort shrinks.
FAQ
Google Ads · Free trial → paid questions, answered
Both, in different roles: the first payment as the primary action once volume supports it, the trial as secondary. A payment-only setup at low volume leaves Smart Bidding with too little to learn from.
Yes, through conversion adjustments, which can retract or restate an uploaded conversion. Wire first-cycle refunds and chargebacks to that, and check the adjustment time limits in your account.
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 click identifier inside the 90-day window, a conversion action name that matches one configured in the account, a conversion timestamp for when the outcome happened, and a value. Read the match rate after uploading — a file can upload perfectly and match nothing.
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 gclid, gbraid and wbraid 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 Google Ads · Free trial → paid
- Meta · Free trial → paidHow to track free trial to paid for Meta Ads
- TikTok · Free trial → paidHow to track free trial to paid for TikTok 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
- Google Ads · Free tool → paid planHow to track free tool to paid plan for Google Ads
- Google Ads · Usage → expansionHow to track usage growth to plan upgrade for Google Ads
- Google Ads × SubscriptionsHow to reconcile Google Ads against your billing system
- Google Ads · Gyms and studiosGoogle Ads conversion tracking for gyms and fitness studios
- Google Ads · Yoga and pilatesGoogle Ads conversion tracking for yoga and pilates studios
- Helcim → Google AdsConnecting Helcim to Google Ads
- Elavon → Google AdsConnecting Elavon to Google Ads
- Google Ads · Self-serve → sales assistedHow to track self-serve signup to sales-assisted contract for Google Ads
Free · 30 min
Get free trial to paid tracked properly on Google Ads
Free30 minutesNo obligation
