Skip to main content
Google Ads · Local servicesGoogle Ads × Local services

Google Ads conversion tracking for local service businesses

A local business gets found in a map pack, and the customer taps call or directions without ever loading the website — which means the majority of conversions happen somewhere your tags cannot reach. 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 local service businesses, and what Google Ads specifically needs to accept it.

Free30 minutesNo obligation

Specific to Google Ads × Local services

Google Ads for local services: call conversions, then completed jobs

Track a local service business on Google Ads with call conversions from call assets and a website forwarding number, a call-duration threshold that filters spam, and gclid, gbraid and wbraid stored on the job. Then import booked and completed jobs as offline conversions with invoice value, counted once per click.

Google is where most local service demand starts, and on mobile it starts with a call. Calls from call assets and calls from the website's Google forwarding number are separate conversion actions with their own duration threshold, and the threshold is where accounts go wrong. Leave it too low and wrong numbers, spam and solicitors count as leads; check what yours is set to and raise it to the length of a real booking call.

The value step is a job import. When a call or form becomes a booked job in your field service software, write the gclid, gbraid or wbraid to that job and upload it as an offline conversion. Upload the completed job again later with the invoice amount as a separate action. Most local jobs close well within 90 days, so unlike longer-cycle businesses, completed revenue can genuinely drive bidding here.

Keep Local Services Ads and Performance Max in mind when reading results. LSA leads are reported in their own dashboard and are not the same as search-ad conversions, and PMax can serve to Maps placements where the customer taps call from a location asset. Confirm which conversion actions each campaign type is counting before comparing cost per job across them.

Google Ads · Local services · what breaks

Why Google Ads under-reports for local service businesses

  1. 01

    Most conversions never touch the website

    Map pack calls and direction requests.

  2. 02

    Organic and paid local traffic blended

    Two channels, one number.

  3. 03

    Website forms treated as the whole picture

    The smallest slice of demand.

  4. 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 · Local services · the fix

What working looks like — Google Ads · Local services

  • Profile actions measured alongside site conversions

    Calls, directions, messages.

  • Calls attributed to campaigns

    The dominant conversion path.

  • Completed jobs as the source of truth

    Not enquiry count.

Google Ads · Local services · architecture

How Google Ads and local service businesses actually connect

  1. 1

    The conversion in local service businesses

    Discovery, call or direction request, job booked, job completed. Most of the funnel happens off your site, which is the defining constraint.

  2. 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. 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. 4

    Where it gets sent from

    your scheduling system's completed jobs and invoices.

  5. 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 · Local services · events

The conversion map for local service businesses

Four stages, most of them outside your website entirely.

Profile actionCall, directions or message from the map pack. Off-site, measurable through the profile.
Website enquiryBrowser-side. The minority path for most local businesses.
Call connectedCall tracking with campaign attribution.
Job bookedServer-side from your scheduling system.
Job completedServer-side with invoice value. The conversion that counts.

Google Ads · Local services · diagnose

Diagnostic order — Google Ads · Local services

  1. 01

    Count records carrying gclid, gbraid and wbraid

  2. 02

    Profile actions unmeasured

    The largest conversion source for many local businesses, entirely absent from reporting.

  3. 03

    Organic and paid calls sharing a number

    So neither can be evaluated.

  4. 04

    tel: links with no event

    Mobile is most of the traffic and the tap goes unrecorded.

  5. 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 · Local services · prove

How it gets proven — Google Ads · Local services

Source of truth

your scheduling system's completed jobs and invoices

  • Profile actions confirmed appearing in reporting.
  • Separate numbers or pools confirmed for organic and paid.
  • Click-to-call events confirmed on a real mobile device.
  • Completed jobs reconciled against your own records for a closed month.
  • The match rate on the upload, not the success message read directly, not inferred from an upload succeeding.

Google Ads · Local services · free audit

What we check in the free audit

  • Count records carrying gclid, gbraid and wbraid
  • Profile actions unmeasured
  • Organic and paid calls sharing a number
  • tel: links with no event
  • Read the match rate on the upload, not the success message

Checked against

your scheduling system's completed jobs and invoices

Get my free conversion tracking audit

Free30 minutesNo obligation

Google Ads · Local services · when not to buy

When you don't need this — Google Ads · Local services

  • If Google Ads already reports conversions that reconcile against your scheduling system's completed jobs and invoices 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 · Local services · what we deliver

What gets built — Google Ads · Local services

  • Google Business Profile actions tracked

    Calls, direction requests, website clicks.

  • Separate tracked numbers for organic and paid

    Or separate pools.

  • Click-to-call events on every template

    Including the sticky mobile bar.

  • Completed jobs reconciled from your own records

    The number that matters.

  • 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 your scheduling system's completed jobs and invoices. Miss it and we keep working at no cost.

Get my free conversion tracking audit

From $400 · See packages

FAQ

Google Ads · Local services questions, answered

Long enough to exclude wrong numbers and spam, typically the length of a short booking conversation. Check your account's threshold and compare it with call logs before trusting the conversion count.

Free · 30 min

Get Google Ads reporting what local service businesses actually earn

Free30 minutesNo obligation