How to reconcile Microsoft Ads against your job management system
This is the check we run first on every account, written out so you can run it without us. It takes about thirty minutes and needs two numbers: what Microsoft says it produced, and what your job management system actually shows. The gap between them is the only honest measure of whether your tracking works — and if it comes back small, you do not need us.
Free30 minutesNo obligation
Specific to Microsoft × Job System
Microsoft Ads vs completed jobs: msclkid into the job record
Capture msclkid on the booking form, store it on the job, and upload completed, invoiced jobs through Microsoft's offline conversion import. Compare against jobs completed in the same closed month. A small shortfall is normal; UET conversions far above completed jobs usually mean the goal counts form submits or calls rather than finished work.
Microsoft Ads search traffic for trades often comes from homeowners who search on a desktop and then pick up the phone, which makes it a reasonable fit for job-level reconciliation but a heavily phone-driven one. The join key is msclkid, appended by auto-tagging, captured in a hidden field on your request form and written to a custom field in ServiceTitan, Jobber or Housecall Pro. Calls join only if your call tracking passes the click ID or a campaign-specific number into the job.
If the account was built by importing campaigns from Google, the conversion goals may have arrived as form submissions with settings nobody revisited. Check each goal's counting, attribution window and view-through setting in Microsoft's own interface rather than assuming they mirror Google. Where the reporting allows it, compare by conversion date so a job quoted in one month and completed the next lands in the same period on both sides.
Use Microsoft's conversion goal reporting for the platform figure and your completed-jobs export by completion date for the other. Volume is usually low enough that matching each job on msclkid is practical, so every discrepancy can be traced individually. The most common mismatch is UET counting a booking-form submission, which lets cancelled and quoted-but-lost jobs inflate Microsoft's figure.
Microsoft × Job System · what breaks
Why Microsoft and your job management system disagree
- 01
Quotes counted as won work
A quote is a van, a person and an hour already spent. In trades the quote-to-job rate varies enormously by source, so counting quotes rewards the channels producing price-shoppers.
- 02
Estimate value used instead of invoiced value
Change orders, extras and variations move the final figure. The estimate is a forecast; the invoice is revenue.
- 03
Repeat customers credited to the original click
A maintenance customer booking twice a year for five years produces ten jobs against one click.
- 04
Phone-first demand invisible
Trades are overwhelmingly phone-driven. Without dynamic number insertion, most of the funnel is unmeasured.
Microsoft × Job System · the fix
What you get from this — Microsoft × Job System
A number instead of a suspicion
The likely cause, narrowed
A basis for deciding
Microsoft × Job System · architecture
What each side is actually counting — Microsoft × Job System
- 1
What Microsoft counts
msclkid inside the import window, a conversion goal name matching one in the account, a timestamp and a value.
- 2
How Microsoft attributes it
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.
- 3
The window it uses
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.
- 4
What your job management system counts
Jobs completed and invoiced, at the amount actually billed, found in ServiceTitan, Jobber, Housecall Pro, Simpro or whatever holds your job records.
- 5
The filter that makes them comparable
Status is complete and invoiced — not quoted, not scheduled, not in progress.
Microsoft × Job System · events
Reading the gap — Microsoft × Job System
| What you see | What it usually means |
|---|---|
| 15%+ platform higher | Usually the wrong event entirely — the platform is counting quotes, cancelled jobs, or repeat customers as new acquisitions. |
| 20%+ platform lower | Usually structural — the platform is missing jobs it produced — almost always phone calls with no number tracking. |
Microsoft × Job System · diagnose
Diagnostic order — Microsoft × Job System
- 01
Confirm both numbers cover the same period and channel
- 02
Quotes counted as won work
A quote is a van, a person and an hour already spent. In trades the quote-to-job rate varies enormously by source, so counting quotes rewards the channels producing price-shoppers.
- 03
Estimate value used instead of invoiced value
Change orders, extras and variations move the final figure. The estimate is a forecast; the invoice is revenue.
- 04
Repeat customers credited to the original click
A maintenance customer booking twice a year for five years produces ten jobs against one click.
- 05
Read the upload's match rate and Microsoft's conversion goal diagnostics
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 × Job System · prove
How to know you did it right — Microsoft × Job System
Source of truth
your job management system — completed jobs for a fully closed month
Microsoft × Job System · free audit
What we check in the free audit
- Confirm both numbers cover the same period and channel
- Quotes counted as won work
- Estimate value used instead of invoiced value
- Repeat customers credited to the original click
- Read the upload's match rate and Microsoft's conversion goal diagnostics
Checked against
your job management system — completed jobs for a fully closed month
Free30 minutesNo obligation
Microsoft × Job System · when not to buy
When the answer is that you do not need us — Microsoft × Job System
- If almost all of your completed jobs come from a channel with no click behind it, no tracking work will reach them — and knowing that is worth more than a build.
- 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.
Microsoft × Job System · what we deliver
The method, step by step — Microsoft × Job System
Pull what Microsoft reports
The upload's match rate and microsoft's conversion goal diagnostics.
Pull what your job management system shows
Export completed jobs by completion date for a closed month, with the invoiced amount, and separate first jobs from repeat customers.
Filter both to the same thing
Status is complete and invoiced — not quoted, not scheduled, not in progress.
Compare per record, not on totals
FAQ
Microsoft × Job System questions, answered
Mostly, by swapping gclid for msclkid and creating a matching offline conversion goal. Check Microsoft's own import window and file format rather than assuming they match Google's.
Each platform attributes within its own account, so a customer who clicked both ads is counted twice. Your job system holds one job, which is why the per-job match matters more than either total.
Because you should know the size of the problem before anyone quotes you for it. If the gap is small, you have saved yourself a purchase. If it is large, you now know what you are buying rather than taking our word for it.
No. Both numbers come from systems you already own and neither leaves them. There is no tool to sign up for and nothing to upload.
Then compare totals for a closed period and treat the result as directional rather than exact. The upload's match rate and microsoft's conversion goal diagnostics is still the right place to read the platform's side.
Under five percent is working. Five to fifteen usually means reversals are missing. Above twenty is normally the wrong event being counted, not a broken tag — which is why debugging tags first wastes so much time.
Then fix the filter before drawing any conclusion. Status is complete and invoiced — not quoted, not scheduled, not in progress. A mismatch in scope produces a gap that looks like a tracking fault and is not one.
Book the free thirty-minute call and bring both numbers. We will tell you which of the causes above it is, and whether it is something you can fix yourself — which it sometimes is.
More on Microsoft × Job System
- Google Ads × Job SystemHow to reconcile Google Ads against your job management system
- Meta × Job SystemHow to reconcile Meta Ads against your job management system
- TikTok × Job SystemHow to reconcile TikTok Ads against your job management system
RELATED GUIDES
Systems of record beside job management, and the funnels it settles
- Microsoft × Call RecordsHow to reconcile Microsoft Ads against your call tracking records
- Microsoft × Invoicing SystemHow to reconcile Microsoft Ads against your invoicing system
- Microsoft · Quote → closed jobHow to track quote request to closed job for Microsoft Ads
- Microsoft · LocksmithMicrosoft Ads conversion tracking for locksmiths
- Microsoft · Commercial cleaningMicrosoft Ads conversion tracking for commercial cleaning companies
- Workiz → Microsoft AdsConnecting Workiz to Microsoft Ads
- ServiceTitan → Microsoft AdsConnecting ServiceTitan to Microsoft Ads
- Microsoft × Appointment SystemHow to reconcile Microsoft Ads against your practice or scheduling system
Free · 30 min
Found a gap between Microsoft and your job management system?
Free30 minutesNo obligation
