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

How to track free trial to paid for Microsoft 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 Microsoft Ads the specifics that matter are the click identifier (msclkid), the import mechanism (Microsoft's offline conversion import), and conversion goals deduplicate on their own counting settings, as in Google Ads, rather than through a shared event ID. 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 Microsoft × Free trial → paid

Microsoft Ads trial-to-paid: work desktops, separate offline goal

On Microsoft Ads, upload the first successful payment as an offline conversion against the msclkid saved on the account at signup, with the charged amount as value, from your billing webhook. Create a dedicated offline goal for it; the goals copied over from a Google import track the trial page, not the payment.

Microsoft's search audience leans toward work desktops, which makes it a reasonable fit for B2B software trials and productivity tools, and a weak one for consumer apps that start on a phone. LinkedIn profile targeting lets you narrow by company, industry or job function on top of keywords, which helps when the buyer is a role rather than a search phrase. Judge it on paid accounts, because trial volume will look small next to Google.

Most accounts were imported from Google, and the import usually carried a "signup" goal pointing at the trial confirmation page and nothing for payment. Add an offline conversion goal for the first payment, set its counting to one per click so a prorated upgrade in week one doesn't count as a second customer, and send it from the same billing webhook that feeds Google with Microsoft's own columns. Confirm the current import window against your trial length plus payment delay.

Team trials break this in a specific way. One person clicks the ad and creates the workspace, invites five colleagues, and an admin who never saw the ad enters the card. Store the msclkid on the workspace or organization record rather than on the individual user, so the payment from any seat in that workspace can still reference the original click.

Microsoft · Free trial → paid · what breaks

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

Microsoft · Free trial → paid · the fix

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

  • Microsoft 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 Microsoft Ads reports, over a fully closed window.

Microsoft · Free trial → paid · architecture

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

Microsoft · Free trial → paid · diagnose

What's specific to Microsoft Ads

  1. 01

    Click identifier: msclkid

    Microsoft's click identifier, appended when auto-tagging is enabled. It depends on the UET tag being present on the site — without UET, msclkid arrives in the URL and there's nothing consuming it, which is a common half-configured state on accounts imported from Google.

  2. 02

    Import mechanism: offline conversion import

    Uploaded against msclkid, closely mirroring Google's approach. Because so many Microsoft accounts are imported wholesale from Google Ads, people assume full parity — verify the current column format and requirements in Microsoft's documentation rather than reusing your Google template unchanged.

  3. 03

    Deduplication

    The same counting question applies: one conversion per click for lead-type goals, every conversion for ecommerce. Accounts imported from Google frequently carry over the goal structure and not the counting review, so it's worth reading every goal rather than assuming the import got it right.

  4. 04

    Window and timing

    Check Microsoft's current offline import window and attribution settings directly. They resemble Google's closely enough to be assumed and differ enough to matter.

  5. 05

    The Microsoft gotcha

    Almost every Microsoft account we open was imported from Google Ads, and the import copies campaign structure without copying the tracking. The result is a live account spending money with UET missing, msclkid unconsumed, or conversion goals pointing at pages that don't exist on the site any more.

Microsoft · Free trial → paid · prove

How to prove the chain works — Microsoft · 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 Microsoft Ads, verified by the upload's match rate and Microsoft's conversion goal diagnostics.
  • Your billing system's record of first successful payment reconciled against Microsoft Ads per record over a fully closed window.

Microsoft · Free trial → paid · free audit

What we check in the free audit

  • Click identifier: msclkid
  • Import mechanism: offline conversion import
  • Deduplication
  • Window and timing
  • The Microsoft gotcha

Checked against

your billing system's record of first successful payment

Get my free conversion tracking audit

Free30 minutesNo obligation

Microsoft · Free trial → paid · when not to buy

When this doesn't apply to you — Microsoft · 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 your Microsoft account is a straight import you've never separately configured, fix the account structure and UET installation first — offline import on top of an unconfigured account produces data nobody will trust.
  • 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.

Microsoft · Free trial → paid · what we deliver

The implementation, on Microsoft Ads

  • Capture msclkid on landing

    Auto-tagging appends msclkid, and the UET tag has to be present to make use of it. Add msclkid explicitly to your capture list alongside the Google parameters — code written for gclid alone won't pick it up.

  • 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 Microsoft Ads through Microsoft's offline conversion import.

  • Deduplicate and reverse

    Conversion goals deduplicate on their own counting settings, as in google ads, rather than through a shared event id. Refunds and first-month cancellations should reverse, or reported revenue only ever climbs while the cohort shrinks.

FAQ

Microsoft · Free trial → paid questions, answered

The pipeline, yes; the file, no. Microsoft matches on msclkid against its own goal names, so the billing webhook needs a second destination in Microsoft's format. Check the current template in Microsoft's documentation.

Free · 30 min

Get free trial to paid tracked properly on Microsoft Ads

Free30 minutesNo obligation