Google Ads · Usage → expansion · Conversion tracking
How to track usage growth to plan upgrade for Google Ads
In most mature subscription businesses expansion exceeds new business, and none of it was produced by an advertisement. Pooling the two makes acquisition look several times more effective than it is and hides that growth came from customer success. 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 plan upgrade or seat expansion in billing — no cookie survives the gap between original acquisition and expansion billed.
✓ 30-minute call · No commitment · You leave with a written remediation plan even if we’re not the right fit.
Written guarantee
95%+ conversion accuracy on Google Ads · Usage → expansion
Measured against your own order records at handover. Miss it and we keep working at no cost until it’s met.
Built on — and certified for — the platforms that matter
Stape
Pro Partner
Meta
Tech Provider
Tag Manager
TikTok
Events API
Microsoft
UET Partner
CAPI Partner
CAPI Partner
Built on the same partner stack used by enterprise DTC brands.
Where this funnel usually breaks
Expansion credited to the acquisition campaign
A campaign from two years ago collects revenue produced by a customer success team last week. It makes that campaign look unbeatable and unrepeatable at once.
Net revenue retention read as a marketing metric
It is a product and service metric. Marketing can influence who you acquire, not whether they expand.
Downgrades never reversed
Contraction is expansion's mirror and it is almost never wired, so reported net revenue drifts upward permanently.
Seat expansion in one account counted as new customers
Fifty new seats at an existing customer is not fifty acquisitions.
Specific to Google Ads × Usage → expansion
Google Ads and upgrades: keep brand-search clicks off expansion
Don't import expansion into a Google Ads conversion action used for bidding. If you track it at all, upload the upgrade from billing as a separate secondary conversion action, matched on gclid, gbraid or wbraid or Enhanced Conversions, so it shows in reports but never steers Smart Bidding toward customers you already have.
The Google-specific leak is brand search. Existing customers type your product name to find the login page, click the brand ad sitting above the organic result, and arrive with a fresh gclid. If they upgrade inside the next 90 days and your billing event is uploaded as a primary conversion, the brand campaign collects the expansion revenue and Smart Bidding learns that bidding on your own customers pays. Enhanced Conversions widens the same leak, because the hashed email of a logged-in customer matches whether or not that customer was ever acquired through an ad.
Set expansion up as its own conversion action, marked secondary so it appears in reporting columns but stays out of the bidding goal. Use the 'every' counting setting, since one account can upgrade more than once, and pass the incremental monthly or annual amount as the value rather than the new plan's full price. A downgrade should come off through a conversion adjustment against the original upload rather than a negative-value conversion; confirm adjustment support and its time limit for your action type in Google's documentation.
The cheaper fix sits upstream. Add login, sign in and account-access terms as negative keywords on the brand campaign, and exclude your customer list from acquisition campaigns where your account is eligible for Customer Match. After that, the only expansion Google can see is expansion that followed a click it genuinely paid for.
Architecture
The exact event sequence
Five stages. Nothing breaks technically. What breaks is attribution hygiene: expansion arrives on an account that still carries the original acquisition identifier, and takes its credit. The identifier has to survive all of them.
Step 1
Original acquisition
Months or years earlier. The click that started the relationship.
Step 2
Steady usage
The product working, which is a customer success outcome.
Step 3
Limit approached
Seats, volume or features running out.
Step 4
Upgrade prompted
By the product, by an account manager, or by the customer noticing.
Step 5
Expansion billed
Real revenue, produced by service rather than by media.
Diagnostic sequence
What's specific to Google Ads
The funnel logic above is the same wherever you advertise. These are the parts that change because it's Google Ads.
- 1
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.
- 2
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.
- 3
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.
- 4
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.
- 5
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.
Source-of-truth validation
How to prove the chain works
One real journey, followed all the way, then a reconciliation. Neither on its own is enough.
- A live Google Ads ad clicked, and the identifier confirmed present on the landing URL.
- The same identifier confirmed on the plan upgrade or seat expansion in billing after a full real journey through every step.
- Expansion billed confirmed arriving at Google Ads, verified by the match rate on the upload, not the success message.
- Your billing system, with new business and expansion held apart reconciled against Google Ads per record over a fully closed window.
- The same reconciliation repeated 30 days later.
Straight talk
When this doesn't apply to you
Worth checking before you build anything, because two of these are common and both mean the work isn't worth doing.
- If your product has no expansion path — one plan, one price, no seats — this funnel does not exist for you.
- 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 expansion billed regularly exceeds the import window, the final event can't drive bidding whatever you build. Optimize toward new-business revenue only, with expansion reported separately instead and use the later data for budget decisions rather than for bidding.
- If almost none of your expansions carry a click identifier today, that's the whole project. Fix capture first — the import is the easy half and no tooling rescues a record with nothing to reference.
What working looks like
Expansion billed attributed to the click
Server-sideWeeks later if necessary, because the identifier lives on the plan upgrade or seat expansion in billing rather than in a cookie.
Google Ads bidding fed the real outcome
8+ EMQVia offline conversion import, so it optimizes toward expansion revenue rather than toward total revenue growth.
A reconciliation that closes
DedupedYour billing system, with new business and expansion held apart matched per record against what Google Ads reports, over a fully closed window.
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 plan upgrade or seat expansion in billing
Keep the original acquisition identifier on the account for reporting, but do not let expansion events carry it into an ad platform.
Send expansion billed from the record
Your billing system, as a separate expansion event that is never mixed with new-business conversions. 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. Downgrades and contraction reverse against the expansion, not against acquisition.
Want this built for Google Ads · Usage → expansion? One fixed price, $400–$1,800, no monthly fee. Live in 2–4 business days, 95%+ accuracy in writing. See packages
Book a free 30-min callGot questions?
The honestanswers.
No buzzwords, no upsell. If we don’t know, we say so.
01Should plan upgrades be a primary conversion in Google Ads?
No. Make them a secondary conversion action so they appear in reporting without entering Smart Bidding, and keep new-business subscriptions as the only primary goal on acquisition campaigns.
02Why does my Google brand campaign show so much upgrade revenue?
Existing customers search your name to log in, click the brand ad, and then upgrade within the 90-day window. Add login-intent negative keywords and exclude your customer list so the campaign stops paying for its own users.
03Why isn't steady usage enough to optimize on?
Because total revenue growth in a mature subscription business is mostly expansion, and optimising acquisition against it rewards campaigns for work the customer success team did.
04How does the identifier survive to expansion billed?
It doesn't, as a cookie — the gap is too long. It has to be written onto the plan upgrade or seat expansion in billing at the point of original acquisition, where it lives as a field rather than as browser storage.
05What does Google Ads need to accept the conversion?
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.
06How long does this take to build?
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.
07Can I do this myself?
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 an account record that outlives every campaign that touched it, which fails silently at every stage.
Still have questions?Book a 30-min call— bring them all.
RELATED GUIDES
Related funnels, and the checks that close this one
- Google Ads · Self-serve → sales assistedHow to track self-serve signup to sales-assisted contract for Google Ads
- Google Ads · Free tool → paid planHow to track free tool to paid plan for Google Ads
- Google Ads × SubscriptionsHow to reconcile Google Ads against your billing system
- Google Ads · PQL → closed wonHow to track product-qualified lead to closed won for Google Ads
- Google Ads · Invite → team adoptionHow to track seat invite to team adoption for Google Ads
- Google Ads · Signup → activationHow to track signup to product activation for Google Ads
- Google Ads · Freemium → paidHow to track freemium signup to paid upgrade for Google Ads
- Google Ads · Free trial → paidHow to track free trial to paid for Google Ads
Get usage growth to plan upgrade tracked properly on Google Ads
Book a free 30-minute call. We measure your actual identifier coverage on your own account, live, and you leave with a written plan — including the option that you don't need us.
Free · 30-min consultation · No commitment · Replies in under 2 hours · Available worldwide via WhatsApp
95% tracking accuracy guarantee
Free 30-min consultation · from $400 · 1st-party server-side
95% guarantee · from $400


