Google Ads conversion tracking for commercial HVAC contractors
Commercial HVAC is three businesses with three timescales. 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 commercial HVAC contractors, and what Google Ads specifically needs to accept it.
Free30 minutesNo obligation
Specific to Google Ads × Commercial HVAC
Google Ads for commercial HVAC: three actions, one primary
Create separate Google Ads conversion actions for emergency service calls, site surveys booked and maintenance contracts signed, capture gclid, gbraid and wbraid on every form and tracked call, and upload signed contracts through offline conversion import from the CRM at annual value times expected renewals. Keep capital projects report-only.
Google is where commercial HVAC emergencies start: a facilities manager standing under a dead rooftop unit searches on a phone and calls the first number that looks credible. Those calls are fast, frequent and modest, and if a calls-from-ads action sits as primary next to contract work, Smart Bidding will chase them and little else. Set emergency calls as secondary, or give them their own campaign and target, and make the site survey the primary action for maintenance and replacement campaigns.
Maintenance contracts often sign within weeks of a survey, which fits the 90-day import window, so upload them with a value built from annual contract value times expected renewals. Capital replacements are different: a chiller or rooftop unit replacement that waits on budget approval frequently lands past 90 days. Upload the quote as a secondary conversion if it falls inside the window and leave the signed project to CRM reporting. Set the survey action to count one, so a facilities manager who books, cancels and rebooks isn't three conversions.
The most common break is the phone. Emergency callers dial the number in the ad or on the site, and if call tracking doesn't pass the click source into the service system, the job gets booked in dispatch with no link to the click. Make sure the dispatch record carries the tracking number's source, then reconcile against the service system monthly.
Google Ads · Commercial HVAC · what breaks
Why Google Ads under-reports for commercial HVAC contractors
- 01
Three business lines in one conversion action
Emergency, maintenance contract and capital project have nothing in common.
- 02
Maintenance contracts valued at one visit
They are annual recurring revenue and the core of the business.
- 03
Capital project cycles outrunning import windows
Procurement on a replacement can take a year.
- 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 · Commercial HVAC · the fix
What working looks like — Google Ads · Commercial HVAC
Signed work as the conversion, by type
Emergency job, maintenance contract or capital project.
Maintenance contracts valued over their term
Annual value times expected renewals.
Capital projects reported separately
Where the cycle exceeds any import window.
Google Ads · Commercial HVAC · architecture
How Google Ads and commercial HVAC contractors actually connect
- 1
The conversion in commercial HVAC contractors
Three money events with three timescales. The maintenance contract is the one that makes the business predictable, and it is the one most likely to be invisible when everything shares an action.
- 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 CRM and service system — work signed by date, by type, at contract value, for the same window.
- 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 · Commercial HVAC · events
The conversion map for commercial HVAC contractors
Five events across three business lines.
| Event | What it means here |
|---|---|
| Emergency service call | Same-day, modest value, its own action. |
| Site survey or assessment | The gateway to both contracts and projects. |
| Maintenance contract signed | Recurring money event, at annual value times expected term. |
| Capital project quoted | Serious, and not yet revenue. |
| Capital project signed | The largest money event, at contract value. |
Google Ads · Commercial HVAC · diagnose
Diagnostic order — Google Ads · Commercial HVAC
- 01
Count records carrying gclid, gbraid and wbraid
- 02
Procurement cycles on capital work
Frequently past 90 days and sometimes past a year.
- 03
Facilities managers versus owners
Different decision-makers researching separately.
- 04
Emergency work dominating a shared action
It converts fastest and most often, so it wins by default.
- 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 · Commercial HVAC · prove
How it gets proven — Google Ads · Commercial HVAC
Source of truth
The CRM and service system — work signed by date, by type, at contract value, for the same window
- Signed work reconciled per contract against what each platform reports, by type.
- Maintenance contract value shown as the calculation from your own renewal history.
- Median click-to-signature measured per work type against every import window.
- Multi-site accounts counted once rather than per location.
- The match rate on the upload, not the success message read directly, not inferred from an upload succeeding.
Google Ads · Commercial HVAC · free audit
What we check in the free audit
- Count records carrying gclid, gbraid and wbraid
- Procurement cycles on capital work
- Facilities managers versus owners
- Emergency work dominating a shared action
- Read the match rate on the upload, not the success message
Checked against
The CRM and service system — work signed by date, by type, at contract value, for the same window
Free30 minutesNo obligation
Google Ads · Commercial HVAC · when not to buy
When you don't need this — Google Ads · Commercial HVAC
- If Google Ads already reports conversions that reconcile against the crm and service 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 · Commercial HVAC · what we deliver
What gets built — Google Ads · Commercial HVAC
Click identifier captured and persisted server-side
Capital project research spans months and several stakeholders.
Carried into the CRM and the service system
Onto the account record.
Signed work fires the conversion
At the contract value with the work type.
Contract non-renewals reported
Because the value model assumes renewal.
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 CRM and service system — work signed by date, by type, at contract value, for the same window. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
Google Ads · Commercial HVAC questions, answered
Usually not when you also sell maintenance and projects. Emergency calls convert so often that bidding will favor them, so set them as secondary or isolate them in their own campaign.
The site survey or assessment booked, with signed contracts imported as value once they close. The survey happens soon after the click and is the gateway to the contract.
Maintenance contracts, if volume allows — they are recurring, predictable and the reason commercial HVAC businesses survive slow years. Emergency work will always convert more often and should never share a conversion action with them.
Annual contract value times your average number of renewals. A three-year relationship at a modest annual fee outearns most single emergency calls by a wide margin and bidding needs to see it.
Not uploaded against the original click — that is far outside any import window. Optimize toward site surveys or assessments, which happen near the click, and report capital revenue separately over the real cycle.
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 CRM and service system — work signed by date, by type, at contract value, for the same window. An upload that succeeds is not an upload that matched.
More on Google Ads · Commercial HVAC
- Commercial HVACConversion tracking for commercial HVAC, measured in signed work
- Meta · Commercial HVACMeta Ads conversion tracking for commercial HVAC contractors
- TikTok · Commercial HVACTikTok Ads conversion tracking for commercial HVAC contractors
RELATED GUIDES
More for commercial hvac contractors: other angles on the same outcome
- Commercial HVACConversion tracking for commercial HVAC, measured in signed work
- Google Ads · Self-storageGoogle Ads conversion tracking for self-storage facilities
- Google Ads · Insulation contractorsGoogle Ads conversion tracking for insulation contractors
- Google Ads · Quote → closed jobHow to track quote request to closed job for Google Ads
- Google Ads × Job SystemHow to reconcile Google Ads against your job management system
- Google Ads · Pool cleaningGoogle Ads conversion tracking for pool cleaning services
- Google Ads · Mold remediationGoogle Ads conversion tracking for mold remediation companies
- Google Ads · Paving and asphaltGoogle Ads conversion tracking for paving and asphalt contractors
Free · 30 min
Get Google Ads reporting what commercial HVAC contractors actually earn
Free30 minutesNo obligation
