Meta Ads conversion tracking for air duct cleaning companies
This industry has a structural honesty problem that shows up directly in its measurement. 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 air duct cleaning companies, and what Meta specifically needs to accept it.
Free30 minutesNo obligation
Specific to Meta × Air duct cleaning
Meta Ads for air duct cleaning: send the invoice as Purchase
For air duct cleaning on Meta, send the invoiced ticket as a Purchase through the Conversions API, matched on fbclid/_fbc or the Instant Form lead ID plus hashed contact data, from the booking system with the job ID as event_id. The short cycle means the invoice usually reaches Meta while it is still usable.
Coupon-style Instant Form ads dominate this category on Meta, and they produce exactly what the page warns about: large volumes of cheap leads booked at the coupon price. Meta will optimize toward whoever fills in forms most readily, which is rarely the household that accepts a full-system quote. Store the lead ID on the booking at intake. Without it, an invoiced ticket from a form lead has nothing to match on, because the customer never visited your site and no fbclid exists.
The advantage this trade has over most services is timing. A booking is usually cleaned and invoiced within a week, so a Purchase sent from the invoicing system often arrives inside Meta's event-age limit and can carry the real ticket as value. Confirm the current freshness limit in Events Manager, and send Schedule for the booking with Purchase for the invoice so Meta sees both. Use the job ID as event_id on both paths if the site also fires a pixel event.
Keep allergy and respiratory questions from intake forms out of every event. A note that a child has asthma is health information about the customer, and Meta restricts it regardless of how harmless the field name looks.
Meta · Air duct cleaning · what breaks
Why Meta under-reports for air duct cleaning companies
- 01
Advertised price treated as job value
The booking is priced at the ad; the invoice is priced at the house.
- 02
Enormous ticket variance
The same booking can be a small clean or a full system service.
- 03
Bookings that cancel on arrival
A homeowner who expected the advertised price and declines the real quote.
- 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 · Air duct cleaning · the fix
What working looks like — Meta · Air duct cleaning
Invoiced tickets as the conversion
At the amount actually charged.
Booking-to-invoice variance measured
So the gap is a known number rather than a surprise.
Declined-at-door jobs counted
Because they cost a van and produce nothing.
Meta · Air duct cleaning · architecture
How Meta and air duct cleaning companies actually connect
- 1
The conversion in air duct cleaning companies
The money event is the invoiced ticket. The booking is a price-led enquiry and is worth whatever the technician actually sells.
- 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
The booking and invoicing system — invoiced tickets by date, at the amount charged.
- 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 · Air duct cleaning · events
The conversion map for air duct cleaning companies
Five events where the value is not known until someone is standing in the house.
| Event | What it means here |
|---|---|
| Enquiry or booking | Driven by the advertised price, which is not the job. |
| Appointment scheduled | Usually within days. |
| Technician on site | Where the real scope and price are set. |
| Work completed | Or declined, which happens and matters. |
| Invoice raised | The money event, at the real number. |
Meta · Air duct cleaning · diagnose
Diagnostic order — Meta · Air duct cleaning
- 01
Count records carrying fbclid and _fbc
- 02
Advertised price used as conversion value
It understates real revenue and rewards whichever campaign produces the cheapest bookings.
- 03
Ticket variance ignored
Without measuring it, no cost-per-booking figure can be turned into a profitability judgement.
- 04
Declines at the door
A van, a technician and an hour spent for nothing. A campaign producing many of these is expensive.
- 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 · Air duct cleaning · prove
How it gets proven — Meta · Air duct cleaning
Source of truth
The booking and invoicing system — invoiced tickets by date, at the amount charged
- Invoiced tickets reconciled per job against what each platform reports.
- Booking-to-invoice variance measured and reported.
- Declined and no-access visits counted separately.
- Average ticket by campaign, not blended.
- The Deduplicated indicator and the per-event match quality score, both read over seven days read directly, not inferred from an upload succeeding.
Meta · Air duct cleaning · free audit
What we check in the free audit
- Count records carrying fbclid and _fbc
- Advertised price used as conversion value
- Ticket variance ignored
- Declines at the door
- Read the Deduplicated indicator and the per-event match quality score, both read over seven days
Checked against
The booking and invoicing system — invoiced tickets by date, at the amount charged
Free30 minutesNo obligation
Meta · Air duct cleaning · when not to buy
When you don't need this — Meta · Air duct cleaning
- If Meta already reports conversions that reconcile against the booking and invoicing system 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 · Air duct cleaning · what we deliver
What gets built — Meta · Air duct cleaning
Click identifier captured and persisted
Through a short, price-driven decision.
Carried into the booking system
Onto the customer record.
Invoiced ticket fires the conversion
At the final amount, after the work is done.
Declines and no-access visits handled
Reversed or counted as cost, never as revenue.
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 The booking and invoicing system — invoiced tickets by date, at the amount charged. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
Meta · Air duct cleaning questions, answered
On invoiced Purchase where volume allows, because coupon leads and invoiced tickets diverge sharply. Jobs close quickly enough that the invoice usually reaches Meta in time.
They generate cheap volume at the advertised price, with high decline rates at the door. Store the lead ID so invoiced tickets can be sent back and the form campaign judged on revenue.
Because bookings are priced at your advertisement and invoices are priced at the house. Two campaigns with identical cost per booking can differ twofold in revenue, and booking counts cannot see that.
Count them, separately, as a cost. They consume a van and a technician and produce nothing, so a campaign generating a lot of them is more expensive than its cost per booking suggests.
Yes, and it is usually the most revealing number in the account. Price-led traffic and problem-led traffic produce very different tickets from identical-looking bookings.
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 The booking and invoicing system — invoiced tickets by date, at the amount charged. An upload that succeeds is not an upload that matched.
More on Meta · Air duct cleaning
- Air duct cleaningConversion tracking for air duct cleaning, measured in invoiced tickets
- Google Ads · Air duct cleaningGoogle Ads conversion tracking for air duct cleaning companies
- TikTok · Air duct cleaningTikTok Ads conversion tracking for air duct cleaning companies
RELATED GUIDES
More for air duct cleaning: other angles on the same outcome
- Air duct cleaningConversion tracking for air duct cleaning, measured in invoiced tickets
- Meta · Well drillingMeta Ads conversion tracking for well drilling
- Meta · Chimney sweepsMeta Ads conversion tracking for chimney sweeps
- Meta · Phone call → saleHow to track phone call to sale for Meta Ads
- Meta × Invoicing SystemHow to reconcile Meta Ads against your invoicing system
- Meta · Paving and asphaltMeta Ads conversion tracking for paving and asphalt contractors
- Meta · RoofingMeta Ads conversion tracking for roofing companies
- Meta · Masonry contractorsMeta Ads conversion tracking for masonry contractors
Free · 30 min
Get Meta reporting what air duct cleaning companies actually earn
Free30 minutesNo obligation
