How to track lead to booked call for Microsoft Ads
A form submission is not a booked call, and the gap between them varies enormously by channel — which is exactly what bidding can't see when it's only shown submissions. The booking almost always happens on a scheduler you don't own, so the conversion has to come from the booking record rather than a confirmation page. 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 lead record in your CRM or scheduler — no cookie survives the gap between ad click and attended call sent back.
Free30 minutesNo obligation
Specific to Microsoft × Lead → booked call
Microsoft Ads: import booked calls against the msclkid on the booking
Upload the booked call through Microsoft's offline conversion import against the msclkid stored on the booking record, with the booking time and value, into an offline conversion goal that counts one per click. UET must be live on the landing page for msclkid to be useful. Keep the form fill as a separate goal outside bidding.
Microsoft's search audience skews older, toward desktop and toward working hours, which tends to suit this funnel: people searching for a consultant or a demo during the working day book calls at decent rates. That makes the booking import worth doing even on modest spend, and it is often where Microsoft quietly outperforms its cost per lead.
The common failure is an account imported from Google that kept a form-fill goal as its only conversion and never got an offline goal of its own. Create the offline conversion goal first and allow time before the first upload, because uploads against a brand-new goal can fail; check Microsoft's current guidance on the wait. Then add msclkid to the scheduler prefill alongside gclid, since capture code written for Google rarely includes it.
Microsoft has its own enhanced conversions, matching on hashed email, which covers bookings where the scheduler dropped the parameter. Confirm it is switched on in Microsoft rather than assuming the Google import carried it over. With bookings in the low tens per month, keep automated bidding on the form goal and use the imported bookings to judge campaigns by hand rather than handing bidding a goal it can barely see.
Microsoft · Lead → booked call · what breaks
Where this funnel usually breaks — Microsoft · Lead → booked call
- 01
The scheduler can't read your landing URL
A hosted calendar page or a popup embed is its own browsing context. The identifier has to be passed in deliberately as a prefill field or link parameter.
- 02
Booked and attended treated as one event
Which teaches bidding to buy people who book and don't turn up — a real and cheap audience.
- 03
Cancellations never reversed
The scheduler exposes the event and almost nobody wires it, so reported bookings only ever climb.
Microsoft · Lead → booked call · the fix
What working looks like — Microsoft · Lead → booked call
Attended call sent back attributed to the click
Weeks later if necessary, because the identifier lives on the lead record in your CRM or scheduler rather than in a cookie.
Microsoft bidding fed the real outcome
Via offline conversion import, so it optimizes toward calls that actually happen rather than toward form submissions.
A reconciliation that closes
Your scheduler's booking records, joined to the crm lead matched per record against what Microsoft Ads reports, over a fully closed window.
Microsoft · Lead → booked call · architecture
The exact event sequence — Microsoft · Lead → booked call
The break is almost always between stages two and three, where the visitor crosses to a scheduler that cannot see your site's URL.
- 1
Ad click
The identifier arrives on your landing URL. Capture it here or it is gone — this is the only moment it exists in the browser.
- 2
Form submission
Bound to the form's real success state, not a thank-you page. Most modern forms submit over AJAX and never navigate.
- 3
Booking created
From the scheduler's webhook. The identifier must already be on the record, carried in as a hidden field or link parameter.
- 4
Booking attended
Booked is not attended. At the volumes most businesses run, no-shows distort the picture enough to matter.
- 5
Attended call sent back
Uploaded as the conversion, so bidding learns which campaigns produce calls that happen.
Microsoft · Lead → booked call · diagnose
What's specific to Microsoft Ads
- 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.
- 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.
- 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.
- 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.
- 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 · Lead → booked call · prove
How to prove the chain works — Microsoft · Lead → booked call
Source of truth
your scheduler's booking records, joined to the CRM lead
- The same identifier confirmed on the lead record in your CRM or scheduler after a full real journey through every step.
- Attended call sent back confirmed arriving at Microsoft Ads, verified by the upload's match rate and Microsoft's conversion goal diagnostics.
- Your scheduler's booking records, joined to the crm lead reconciled against Microsoft Ads per record over a fully closed window.
Microsoft · Lead → booked call · 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 scheduler's booking records, joined to the CRM lead
Free30 minutesNo obligation
Microsoft · Lead → booked call · when not to buy
When this doesn't apply to you — Microsoft · Lead → booked call
- If your calls are booked by a salesperson over the phone rather than by the prospect through a scheduler, there's no booking webhook to wire. That's a call-tracking problem with a different shape.
- 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 attended call sent back regularly exceeds the import window, the final event can't drive bidding whatever you build. Optimize toward form submission with a qualification flag instead and use the later data for budget decisions rather than for bidding.
- If almost none of your booking records carry a click identifier today, that's the whole project.
Microsoft · Lead → booked call · 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 lead record in your CRM or scheduler
Write it into a hidden field on the form and into the scheduler's prefill, so it lands on the booking record itself rather than living in a cookie that won't survive the domain hop.
Send attended call sent back from the record
The booking webhook fires on creation and again on attendance where your scheduler supports it, each as a distinct event with its own value. 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. Cancellations and reschedules should reverse or move the conversion — the scheduler exposes both and they're routinely ignored.
FAQ
Microsoft · Lead → booked call questions, answered
Not unchanged. Microsoft's import uses msclkid and its own goal names and columns, so build the file from Microsoft's current template.
Usually because msclkid was never captured, since the landing code only reads gclid, or because UET is missing. Count how many booking records actually carry an msclkid first.
Because the submission-to-booking rate varies a lot by channel, and bidding optimized on submissions reliably finds the channels with the worst rate — they produce the cheapest forms.
It doesn't, as a cookie — the gap is too long. It has to be written onto the lead record in your CRM or scheduler at the point of ad click, where it lives as a field rather than as browser storage.
msclkid inside the import window, a conversion goal name matching one in the account, a timestamp and a value. Confirm current requirements in Microsoft's documentation.
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 msclkid alive through multi-step forms and the hop into a hosted scheduler, which fails silently at every stage.
More on Microsoft · Lead → booked call
- Google Ads · Lead → booked callHow to track lead to booked call for Google Ads
- Meta · Lead → booked callHow to track lead to booked call for Meta Ads
- TikTok · Lead → booked callHow to track lead to booked call for TikTok Ads
RELATED GUIDES
Funnels next to lead to booked call, and the checks that close it
- Microsoft · Directory listing → enquiryHow to track directory listing to enquiry for Microsoft Ads
- Microsoft · Chat → qualified leadHow to track chat conversation to qualified lead for Microsoft Ads
- Microsoft × Appointment SystemHow to reconcile Microsoft Ads against your practice or scheduling system
- Microsoft · LASIKMicrosoft Ads conversion tracking for LASIK and refractive surgery practices
- Microsoft · Urgent careMicrosoft Ads conversion tracking for urgent care clinics
- Spacebring → Microsoft AdsConnecting Spacebring to Microsoft Ads
- TableCheck → Microsoft AdsConnecting TableCheck to Microsoft Ads
- Microsoft · Referral → closed saleHow to track referral to closed sale for Microsoft Ads
Free · 30 min
Get lead to booked call tracked properly on Microsoft Ads
Free30 minutesNo obligation
