Google Ads conversion tracking for water damage and restoration companies
Restoration is the most urgent category in home services and the one with the widest job value spread: a small water extraction and a full fire rebuild are both one phone call. 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 water damage and restoration companies, and what Google Ads specifically needs to accept it.
Free30 minutesNo obligation
Specific to Google Ads × Restoration
Google Ads for restoration: import invoiced jobs, restate on approval
A restoration company on Google Ads should import the completed, invoiced job from its job management system as an offline conversion keyed on gclid, gbraid or wbraid, and treat qualified calls of a minimum duration as a separate, secondary action. Send the actual invoiced value by loss type, never an average.
Google is where emergency restoration demand shows up, and most of it arrives as a phone call placed seconds after a search. A call from a call asset or call-only ad never loads your site, so there's no gclid to store. If you use Google forwarding numbers, check that call conversions with a minimum duration are configured, and treat those as the volume signal for every dispatch that began without a landing page.
Insurance approval is a timing question Google can actually handle. The conversion adjustments feature lets you restate an uploaded conversion's value, so one workable design is to upload the dispatched job with a modeled value by loss type, then restate it to the invoiced amount or retract it when the carrier denies the claim. Confirm that adjustments are available for your conversion action type before you build. Approvals that take weeks still land well inside the 90-day window.
The common failure is a qualified-call action set as primary next to the job import, so Smart Bidding chases call volume from adjusters, vendors and out-of-area flooding. Make the completed job primary once you have enough of them, and check your Local Services Ads leads separately if you run them, since they're billed and reported outside these actions.
Google Ads · Restoration · what breaks
Why Google Ads under-reports for water damage and restoration companies
- 01
Every call counted regardless of outcome
Emergency inbound includes a great many calls that never become jobs.
- 02
Job values spanning two orders of magnitude
Averaging a small extraction with a fire rebuild destroys the signal.
- 03
Insurance approval sitting between the call and the revenue
A dispatched job is not an approved job.
- 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 · Restoration · the fix
What working looks like — Google Ads · Restoration
Completed jobs as the conversion
From the job management system, at the invoiced value.
Loss type carried on the conversion
Water, fire, mould — different values and different competition.
Calls filtered before they count
By duration and by whether a crew was actually dispatched.
Google Ads · Restoration · architecture
How Google Ads and water damage and restoration companies actually connect
- 1
The conversion in water damage and restoration companies
The money event is a completed and invoiced job. The insurance approval step means the value is not known at dispatch, which is the timing question to settle before building.
- 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 job management system — jobs completed and invoiced by date, by loss type, 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 · Restoration · events
The conversion map for water damage and restoration companies
Five steps with an insurer in the middle.
| Event | What it means here |
|---|---|
| Tracked phone call | The dominant channel. Filter hard. |
| Crew dispatched | A real commitment of resources, and a cost whether or not it bills. |
| Insurance approved | Where the job becomes revenue. |
| Job completed and invoiced | The money event, at the invoiced value. |
| Loss type | Carried on the conversion. |
Google Ads · Restoration · diagnose
Diagnostic order — Google Ads · Restoration
- 01
Count records carrying gclid, gbraid and wbraid
- 02
Number-swap script running too late
Emergency callers dial fast, so the highest-intent traffic is the least attributed.
- 03
Unfiltered call conversions
Inbound includes insurers, adjusters, competitors and wrong numbers.
- 04
Service area boundaries
Out-of-area emergency calls are pure cost.
- 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 · Restoration · prove
How it gets proven — Google Ads · Restoration
Source of truth
The job management system — jobs completed and invoiced by date, by loss type, for the same window
- Completed jobs reconciled per job against what each platform reports.
- The share of calls carrying a session measured, since phone is the funnel.
- Number-swap timing verified on a real page load.
- Invoiced values confirmed on the conversion rather than an average.
- The match rate on the upload, not the success message read directly, not inferred from an upload succeeding.
Google Ads · Restoration · free audit
What we check in the free audit
- Count records carrying gclid, gbraid and wbraid
- Number-swap script running too late
- Unfiltered call conversions
- Service area boundaries
- Read the match rate on the upload, not the success message
Checked against
The job management system — jobs completed and invoiced by date, by loss type, for the same window
Free30 minutesNo obligation
Google Ads · Restoration · when not to buy
When you don't need this — Google Ads · Restoration
- If Google Ads already reports conversions that reconcile against the job management 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 · Restoration · what we deliver
What gets built — Google Ads · Restoration
Click identifier captured with the number swap running immediately
Callers dial within seconds of landing; a deferred script loses them.
Carried into the job management system
Onto the job record.
Completed job fires the conversion
At the invoiced value, after insurance approval.
Cancelled and unapproved jobs excluded
A truck rolled that did not bill is a cost.
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 job management system — jobs completed and invoiced by date, by loss type, for the same window. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
Google Ads · Restoration questions, answered
Completed jobs, once you have enough of them each month. Until then, bid on filtered qualified calls and import completed jobs as a secondary action so the value data builds up.
Google supports conversion adjustments that can retract or restate an uploaded conversion. Check that it applies to your conversion action, and send the retraction once the job is confirmed unbilled.
Only filtered ones. Restoration inbound includes adjusters, insurers, competitors and wrong numbers alongside genuine emergencies. An unfiltered call conversion at restoration CPCs is expensive in a hurry.
Fire the conversion at completion with the invoiced value, or at dispatch with a modelled average if you need the faster signal. Either works if the choice is deliberate; what does not work is treating a dispatch as revenue when a meaningful share never bill.
Because the spread is wider than anywhere else in home services. A campaign producing small extractions and one producing fire rebuilds look identical on conversion count and are completely different businesses. Send the invoiced value, never an average.
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 job management system — jobs completed and invoiced by date, by loss type, for the same window. An upload that succeeds is not an upload that matched.
More on Google Ads · Restoration
- Water Damage RestorationGoogle Ads for water damage restoration companies: the build order
- RestorationConversion tracking for restoration, measured in completed jobs
- Meta · RestorationMeta Ads conversion tracking for water damage and restoration companies
RELATED GUIDES
More for water damage restoration: other angles on the same outcome
- RestorationConversion tracking for restoration, measured in completed jobs
- Google Ads · Commercial cleaningGoogle Ads conversion tracking for commercial cleaning companies
- Google Ads · Commercial HVACGoogle Ads conversion tracking for commercial HVAC 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
- Water damage restoration companiesLocal Services Ads for water damage restoration: night calls, wrong-trade leads and cost per mitigation job
- Google Ads · FencingGoogle Ads conversion tracking for fencing contractors
- Google Ads · Drywall contractorsGoogle Ads conversion tracking for drywall contractors
Free · 30 min
Get Google Ads reporting what water damage and restoration companies actually earn
Free30 minutesNo obligation
