Meta Ads conversion tracking for roofing companies
A roofing lead is worth nothing until an inspection happens and a contract gets signed, and that sequence takes weeks with a high drop-off at every stage. What Meta Ads adds on top of that is a mechanical requirement: fbclid and _fbc have to reach the record that holds the money, because Meta can only credit a conversion it can tie back to a click it recognizes. This page covers both halves — what a conversion is in roofing companies, and what Meta specifically needs to accept it.
Free30 minutesNo obligation
Specific to Meta × Roofing
Meta for roofers: instant-form leads that become signed jobs
For roofers on Meta, send signed jobs, or attended inspections at lower volume, through the Conversions API from the job system. Match on the instant form's lead_id or on _fbc plus hashed phone and email. Pass contract value with the event so Meta learns which leads become replacements rather than repairs.
Roofers usually advertise on Meta through instant forms offering a free inspection, and those forms produce lots of names with phone numbers that never pick up. Without feedback, Meta keeps finding more people who tap Submit. Send stage events back from the job system, inspection attended and contract signed, keyed to the lead_id, and check whether conversion-leads optimization is available so Meta targets the people who reach the roof.
Meta's 7-day click window is short for a replacement decision that takes three weeks. Optimizing directly on signed contracts will look sparse in-platform even when the campaign is working. Optimize on inspection attended. Send the signed job with its contract value for reporting and value-based learning, and judge the channel against the job system rather than Ads Manager.
Roofing is not a restricted category on Meta. Roof financing ads are different: an ad promoting payment plans can fall under Meta's special ad category for financial products, which removes age and zip-code targeting. Check before launching a financing offer. The common break after a storm is door-knocking canvassers entering leads into the same job system, so offline leads with no ad behind them get sent to Meta as campaign conversions.
Meta · Roofing · what breaks
Why Meta under-reports for roofing companies
- 01
Cheap leads that never become jobs
Because bidding was shown submissions.
- 02
Storm-season spikes distorting everything
Volume without a quality signal.
- 03
Calls arriving with no source
The dominant channel, unattributed.
- 04
Fbclid and _fbc never reaches the record
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.
Meta · Roofing · the fix
What working looks like — Meta · Roofing
Booked inspections measured
Not raw enquiries.
Signed jobs fed back to bidding
With contract value.
Calls attributed to campaigns
Down to keyword where data allows.
Meta · Roofing · architecture
How Meta and roofing companies actually connect
- 1
The conversion in roofing companies
Enquiry, inspection booked, inspection attended, contract signed. Contract value varies enormously, which makes value-based bidding worth far more here than in most verticals.
- 2
Meta Ads needs a click to match
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.
- 3
The identifier: fbclid and _fbc
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.
- 4
Where it gets sent from
your job management system's record of signed contracts.
- 5
Deduplication and window
This is the mechanism that decides whether adding CAPI helps or doubles your conversions. Both the Pixel and the server event must carry the same event_id — the order or booking reference works best, because both sides can produce it without coordinating. A case difference in the event name alone produces two events even with a matching ID. Read the Deduplicated indicator in Events Manager over a full week, not one session. 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.
Meta · Roofing · events
The conversion map for roofing companies
Four stages with a very wide value distribution at the end — a repair and a full replacement are the same lead and very different jobs.
| Event | What it means here |
|---|---|
| Enquiry (call or form) | Call tracking plus browser-side form events. |
| Inspection booked | Server-side from the job management system. |
| Inspection attended | Server-side. The reliable mid-funnel target. |
| Contract signed | Server-side with real contract value, uploaded as an offline conversion. |
| Job type | Repair versus replacement. The value difference is large enough to bid on. |
Meta · Roofing · diagnose
Diagnostic order — Meta · Roofing
- 01
Count records carrying fbclid and _fbc
- 02
Hard-coded numbers everywhere
Roofing sites carry the phone number in headers, footers and images. Insertion can't reach most of them.
- 03
Flat conversion values
A $600 repair and a $28,000 replacement counted the same teaches bidding nothing.
- 04
Storm spikes treated as performance
Volume from a weather event isn't campaign quality, and mixing them corrupts the learning.
- 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 · Roofing · prove
How it gets proven — Meta · Roofing
Source of truth
your job management system's record of signed contracts
- Number insertion confirmed on every template.
- A live test call attributed to the correct campaign.
- Click ID present on a live job record.
- Signed jobs reconciled against the job system for a closed month.
- The Deduplicated indicator and the per-event match quality score, both read over seven days read directly, not inferred from an upload succeeding.
Meta · Roofing · free audit
What we check in the free audit
- Count records carrying fbclid and _fbc
- Hard-coded numbers everywhere
- Flat conversion values
- Storm spikes treated as performance
- Read the Deduplicated indicator and the per-event match quality score, both read over seven days
Checked against
your job management system's record of signed contracts
Free30 minutesNo obligation
Meta · Roofing · when not to buy
When you don't need this — Meta · Roofing
- If Meta already reports conversions that reconcile against your job management system's record of signed contracts within a few percent, this is working and there is nothing to buy.
- Measure identifier coverage yourself first — pull your last hundred records and count how many carry fbclid and _fbc.
- 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 · Roofing · what we deliver
What gets built — Meta · Roofing
Call tracking with number insertion
Across every template, including vehicle-wrap-style footers.
Click ID written to the job record
At the enquiry, not at the sale.
Job management system as the source of truth
Inspections booked and jobs signed.
Contract value uploaded as the conversion value
So bidding optimizes toward big jobs.
Dispatch via the Conversions API
Server events go through CAPI with an action_source describing where the conversion happened. Offline outcomes flow through the same API rather than a separate product. Verify current field names against Meta's documentation before building — this surface changes.
Written guarantee
95%+ tracking accuracy
Measured against your job management system's record of signed contracts. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
Meta · Roofing questions, answered
They produce volume, but much of it is low intent. Feed attended inspections and signed jobs back by lead ID so Meta learns which form-fillers become customers.
It can. Ads promoting financing may fall under Meta's special ad category for financial products, which limits targeting options.
Yes, where you can get it. The value spread between a repair and a replacement is wide enough that flat-value bidding leaves real money on the table.
It's the normal case in roofing. Number insertion attributes the call and the job system supplies the outcome.
Flag it. Volume from a weather event is not campaign performance, and letting it into the baseline makes every subsequent month look like a decline.
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.
Server events go through CAPI with an action_source describing where the conversion happened. Offline outcomes flow through the same API rather than a separate product. Verify current field names against Meta's documentation before building — this surface changes.
By reading the Deduplicated indicator and the per-event match quality score, both read over seven days and reconciling against your job management system's record of signed contracts. An upload that succeeds is not an upload that matched.
More on Meta · Roofing
- RoofingConversion tracking for roofing companies, from inspection to signed job
- Meta · Home securityMeta Ads conversion tracking for home security companies
- Meta · Pest controlMeta Ads conversion tracking for pest control companies
RELATED GUIDES
More for roofing companies: other angles on the same outcome
- RoofingConversion tracking for roofing companies, from inspection to signed job
- Meta · LocksmithMeta Ads conversion tracking for locksmiths
- Meta · Carpet cleaningMeta Ads conversion tracking for carpet cleaning companies
- Meta · Quote → closed jobHow to track quote request to closed job for Meta Ads
- Meta × Job SystemHow to reconcile Meta Ads against your job management system
- RoofersLocal Services Ads for roofers: storm spikes, bad inspections and cost per signed job
- ServiceTitan → MetaConnecting ServiceTitan to Meta Conversions API
- Meta · Gutter installationMeta Ads conversion tracking for gutter installation companies
Free · 30 min
Get Meta reporting what roofing companies actually earn
Free30 minutesNo obligation
