How to reconcile Meta 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 Meta 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 Meta × Job System
Meta Ads vs completed jobs: lead forms, hashed phone numbers, lag
Most trades leads from Meta arrive through instant forms or Messenger, so the join is a hashed phone number or email rather than fbclid. Compare against jobs completed and invoiced in a closed month, and expect Meta's 7-day click and 1-day view figure to exceed matched jobs, because it credits leads and view-through rather than finished work.
For a home-service business, a Meta lead often never visits your site: it arrives through an instant form, Messenger or a click-to-call ad. That leaves no fbclid or _fbc to carry into ServiceTitan or Jobber, so the practical join key is the phone number or email the customer gave, normalized and hashed the same way on both sides. Instant-form leads also carry a Meta lead ID; check whether your lead sync writes it to the customer record, because it is the cleanest key when present.
Meta's default 7-day click and 1-day view setting counts the form submission, not the job, and reports it against the date of the ad interaction. A homeowner who submits in the last week of one month and is invoiced three weeks later lands in different months on each side. To compare like with like, send completed jobs back through the Conversions API with the invoiced amount, and read Ads Manager with the attribution setting column visible so you know whether view-through is included.
Meta reporting more leads than you have completed jobs is the expected direction, often by a wide margin, because prefilled forms attract low-intent submissions. It points to breakage when matched jobs fall toward none while lead volume holds, usually because phone formats in the job system stopped matching what is hashed, or leads are being retyped by hand.
Meta × Job System · what breaks
Why Meta 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.
Meta × Job System · the fix
What you get from this — Meta × Job System
A number instead of a suspicion
The likely cause, narrowed
A basis for deciding
Meta × Job System · architecture
What each side is actually counting — Meta × Job System
- 1
What Meta counts
event_name from the standard set with exact casing, event_time in seconds, a shared event_id, an action_source, and hashed user_data that was normalized before hashing. Purchase additionally requires value and currency.
- 2
How Meta attributes it
fbclid arrives on the landing URL and is normally written into the _fbc cookie. If it isn't captured on landing, _fbc never exists — and _fbc is the strongest click signal Meta has, so its absence caps your match quality regardless of what else you send. Forward _fbp too, from the browser rather than regenerating it server-side.
- 3
The window it uses
Meta's default attribution is a 7-day click and 1-day view. View-through is included by default, which is a large part of why Meta claims more conversions than your other platforms — that overlap is expected rather than a fault.
- 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.
Meta × Job System · events
Reading the gap — Meta × 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. |
Meta × Job System · diagnose
Diagnostic order — Meta × 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 Deduplicated indicator and the per-event match quality score, both read over seven days
Match quality is where most Meta accounts lose attribution, and it's almost always normalization rather than coverage. An email hashed with a capital letter, or a phone hashed with brackets, produces a perfectly valid hash that matches nobody and errors nowhere. Normalize first, then hash, and read the score per event rather than overall.
Meta × Job System · prove
How to know you did it right — Meta × Job System
Source of truth
your job management system — completed jobs for a fully closed month
Meta × 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 Deduplicated indicator and the per-event match quality score, both read over seven days
Checked against
your job management system — completed jobs for a fully closed month
Free30 minutesNo obligation
Meta × Job System · when not to buy
When the answer is that you do not need us — Meta × 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 you're advertising a business type Meta restricts data collection for — health being the obvious one — the parameters you can legitimately send are narrower, and that constraint should shape the build rather than be worked around.
Meta × Job System · what we deliver
The method, step by step — Meta × Job System
Pull what Meta reports
The deduplicated indicator and the per-event match quality score, both read over seven days.
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
Meta × Job System questions, answered
Instant forms prefill contact details, so submitting costs the homeowner almost nothing and many are browsing rather than ready to book. Compare cost per completed job across channels, not cost per lead.
Yes, provided both sides are normalized to the same format with country code before hashing. Typos and second household numbers will still drop out, so read the match rate rather than assuming it.
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 deduplicated indicator and the per-event match quality score, both read over seven days 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 Meta × Job System
- Google Ads × Job SystemHow to reconcile Google Ads against your job management system
- TikTok × Job SystemHow to reconcile TikTok Ads against your job management system
- Microsoft × Job SystemHow to reconcile Microsoft Ads against your job management system
RELATED GUIDES
Systems of record beside job management, and the funnels it settles
- Meta × Enrolment SystemHow to reconcile Meta Ads against your application or enrolment system
- Meta × POS SystemHow to reconcile Meta Ads against your point-of-sale system
- Meta · Quote → closed jobHow to track quote request to closed job for Meta Ads
- Meta · Commercial cleaningMeta Ads conversion tracking for commercial cleaning companies
- Meta · PoolsMeta Ads conversion tracking for pool installation and service companies
- FieldEdge → MetaConnecting FieldEdge to Meta Conversions API
- Jobber → MetaConnecting Jobber to Meta Conversions API
- Meta × Invoicing SystemHow to reconcile Meta Ads against your invoicing system
Free · 30 min
Found a gap between Meta and your job management system?
Free30 minutesNo obligation
