Google Ads conversion tracking for air duct cleaning companies
This industry has a structural honesty problem that shows up directly in its measurement. What Google Ads adds on top of that is a mechanical requirement: gclid, gbraid and wbraid have to reach the record that holds the money, because Google Ads 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 Google Ads specifically needs to accept it.
Free30 minutesNo obligation
Specific to Google Ads × Air duct cleaning
Google Ads for air duct cleaning: bid on invoices, not $99 bookings
For air duct cleaning on Google Ads, upload the invoiced ticket as an offline conversion matched on gclid, gbraid or wbraid, sent from the booking and invoicing system at the amount charged. Set the booking as a secondary action so value-based bidding learns from invoices instead of the advertised entry price.
Search is where price-shopping is loudest in this trade. Queries containing a dollar figure or the word cheap attract the customers most likely to decline the real quote at the door, and a booking conversion valued at the advertised price makes those keywords look as good as problem-led searches about dust, odor or a new home. Only invoice value separates them.
The cycle is short: booking to invoice usually takes days, comfortably inside the 90-day upload window, so Google can learn from the real ticket almost in real time. Upload invoices daily, keep the booking as a secondary conversion for diagnostics, and set counting to one per click on the booking so a customer who rebooks after a reschedule is not counted twice. Add dryer vent and sanitizing add-ons to the invoice value rather than as separate conversions, so one visit counts once.
Declined-at-door visits should not be uploaded at all. If a booking was already sent as primary, retract it with a conversion adjustment. The common failure is the opposite: bookings imported as primary from a scheduling widget, at the advertised price, which pushes smart bidding toward the cheapest and least profitable traffic in the account.
Google Ads · Air duct cleaning · what breaks
Why Google Ads 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
Gclid, gbraid and wbraid never reaches the record
Three parameters, not one. gclid is the long-standing identifier; gbraid and wbraid arrive on iOS traffic where privacy constraints prevent the usual one. Capture code that names only gclid loses a growing share, silently, and the loss is invisible until you audit how many records carry an identifier.
Google Ads · Air duct cleaning · the fix
What working looks like — Google Ads · 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.
Google Ads · Air duct cleaning · architecture
How Google Ads 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
Google Ads needs a click to match
A click identifier inside the 90-day window, a conversion action name that matches one configured in the account, a conversion timestamp for when the outcome happened, and a value. Read the match rate after uploading — a file can upload perfectly and match nothing.
- 3
The identifier: gclid, gbraid and wbraid
Three parameters, not one. gclid is the long-standing identifier; gbraid and wbraid arrive on iOS traffic where privacy constraints prevent the usual one. Capture code that names only gclid loses a growing share, silently, and the loss is invisible until you audit how many records carry an identifier.
- 4
Where it gets sent from
The booking and invoicing system — invoiced tickets by date, at the amount charged.
- 5
Deduplication and window
There's no shared event ID mechanism like Meta's. What matters instead is the counting setting on each conversion action — 'one' for lead-type conversions so a repeat submitter doesn't count three times, 'every' for ecommerce where a second purchase is a second sale. This is the single most common misconfiguration we find in Google Ads accounts. Google's offline import window is 90 days from the click. Anything older can't be matched, and rows outside it fail as unmatched without much explanation. Measure your median click-to-outcome time against that before designing anything.
Google Ads · 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. |
Google Ads · Air duct cleaning · diagnose
Diagnostic order — Google Ads · Air duct cleaning
- 01
Count records carrying gclid, gbraid and wbraid
- 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 match rate on the upload, not the success message
A conversion action that stops receiving hits is flagged as inactive 30 days later — by which point a month of budget has already run against a missing signal. Check the last-received date on every action monthly; it takes two minutes and it's the cheapest monitoring available.
Google Ads · Air duct cleaning · prove
How it gets proven — Google Ads · 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 match rate on the upload, not the success message read directly, not inferred from an upload succeeding.
Google Ads · Air duct cleaning · free audit
What we check in the free audit
- Count records carrying gclid, gbraid and wbraid
- Advertised price used as conversion value
- Ticket variance ignored
- Declines at the door
- Read the match rate on the upload, not the success message
Checked against
The booking and invoicing system — invoiced tickets by date, at the amount charged
Free30 minutesNo obligation
Google Ads · Air duct cleaning · when not to buy
When you don't need this — Google Ads · Air duct cleaning
- If Google Ads 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 gclid, gbraid and wbraid.
- If you're running Performance Max exclusively and haven't separated your conversion actions, the import will work and the reporting won't tell you much. Worth sorting the account structure first.
Google Ads · Air duct cleaning · what we deliver
What gets built — Google Ads · 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 Google's offline conversion import
Uploaded against the click identifier, either through the Google Ads API or as a file. The upload is the easy part; what limits it is how many of your records carry an identifier at all. Verify the current column format against Google's own template — it has changed before.
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
Google Ads · Air duct cleaning questions, answered
Measure it before deciding. Once invoiced value per keyword is uploaded, price-led terms often show low tickets and high decline rates that cost per booking never revealed.
Within days, because most jobs are invoiced shortly after booking. Daily uploads keep value-based bidding close to real 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.
Three parameters, not one. gclid is the long-standing identifier; gbraid and wbraid arrive on iOS traffic where privacy constraints prevent the usual one. Capture code that names only gclid loses a growing share, silently, and the loss is invisible until you audit how many records carry an identifier.
Uploaded against the click identifier, either through the Google Ads API or as a file. The upload is the easy part; what limits it is how many of your records carry an identifier at all. Verify the current column format against Google's own template — it has changed before.
By reading the match rate on the upload, not the success message 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 Google Ads · Air duct cleaning
- Air duct cleaningConversion tracking for air duct cleaning, measured in invoiced tickets
- Meta · Air duct cleaningMeta 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
- Google Ads · Pool cleaningGoogle Ads conversion tracking for pool cleaning services
- Google Ads · Garage doorsGoogle Ads conversion tracking for garage door companies
- Google Ads · Quote → closed jobHow to track quote request to closed job for Google Ads
- Google Ads × Invoicing SystemHow to reconcile Google Ads against your invoicing system
- Google Ads · Self-storageGoogle Ads conversion tracking for self-storage facilities
- Google Ads · Appliance repairGoogle Ads conversion tracking for appliance repair companies
- Google Ads · Masonry contractorsGoogle Ads conversion tracking for masonry contractors
Free · 30 min
Get Google Ads reporting what air duct cleaning companies actually earn
Free30 minutesNo obligation
