Google Ads call tracking integration

Google Ads can only bid toward calls it knows about. This integration closes that loop: when a call qualifies under your rules, we upload it as a conversion, so Smart Bidding optimises toward the keywords that make the phone ring.

Tutorials / Google Ads

What you get

Only qualified calls upload — the ones passing your minimum duration, repeat-caller and business-hours rules — so you are not bidding toward wrong numbers and hang-ups. Each upload carries the call time and a conversion value, against a conversion action named for the campaign that produced it.

Step 1 — Connect the account

  1. Go to Dashboard → Integrations and press Connect on the Google Ads row.
  2. Sign in with a Google account that has access to the Ads account, and approve the consent screen. We ask for the AdWords scope only — enough to create conversion actions and upload conversions, and nothing to do with running your campaigns.
  3. You land back on the Integrations page with the row marked Connected.

Step 2 — Tell us which account

  1. Enter your Customer ID — the ten-digit number at the top right of the Google Ads UI, formatted 123-456-7890.
  2. If you reach that account through a manager account (MCC), enter the manager account ID as well. Google rejects uploads that arrive without it when access is delegated, so this is not optional in an agency setup.
  3. Leave the conversion target field empty. We create an action per campaign for you — see below. Fill it in only if you have an existing action you want everything to land on instead.
  4. Press Save.

Saving does two things beyond storing the IDs: it creates a conversion action for every Google-channel campaign that lacks one, and it queues any qualified call from the last 7 days that never got an upload — so connecting late does not cost you the week you already ran.

Step 3 — Clear the two account warnings

After saving, the Google Ads row may show one or both of these. Both are settings inside your Google Ads account, and both are worth clearing before you rely on the numbers.

Customer Data Terms not accepted

Open Goals → Conversions → Settings in Google Ads and accept them (one-time, takes a minute). Until you do, calls with no website click cannot be reported at all — the hashed-number path depends on it. Website-click calls are unaffected. Re-save the integration afterwards to refresh the check.

Call reporting is ON

Google will substitute its own forwarding number for any tracking number you put in a call asset, which means your number never displays and our attribution never sees the call. Press Turn off call reporting on the banner — we change the setting in your account for you. Irrelevant if you do not use call assets.

Step 4 — Point a campaign at it

  1. Create a campaign with channel Google Ads (or YouTube). The channel is what scopes uploads to Google — a call on a Meta campaign never gets credited here.
  2. Open the campaign’s Install page and put both snippets on the landing page your ads point at: the tracker script, and the data-ct-number marker on whichever element shows your phone number.
  3. Point your Google ads at that page. The tracker captures the gclid on arrival and leases a tracking number to that visitor, which is what makes keyword-level attribution possible.

Skipping the data-ct-number marker is the quiet failure mode: the tracker loads, nothing errors, your number never swaps, and no call is ever attributed.

Conversion actions, created for you

Every Google-channel campaign gets its own conversion action in your Google Ads account, named after the campaign’s tracking number — Calls Tracking 3455 — or after the campaign itself when it has no dedicated number. They are created as Upload from clicks actions in the Qualified lead category, enabled, with a default value of 1.

You will find them under Goals → Conversions. Two things worth knowing there:

How a call gets attributed

Call comes fromAttribution pathWhat that means
Website calls (DNI)Deterministic click conversionThe visitor arrived from a Google ad, so our tracker captured their gclid. We upload the call against that click, and Google credits the exact campaign, ad group and keyword that earned it.
Call assets and call-only adsEnhanced Conversions for LeadsThere is no website visit and therefore no gclid, so we upload the caller number SHA-256 hashed. Google matches it against signed-in users who interacted with your ads. Match rates are partial by design — this path reports fewer conversions than it receives calls.

A call with neither a click nor a caller number is parked rather than retried — there is nothing for Google to match it against.

Step 5 — Check it works

  1. Press Test on the Google Ads row. It is read-only — it confirms the token, Customer ID, manager ID and API version line up, then that the saved conversion action exists on that account and is enabled. It never uploads anything.
  2. Make a real call to the tracking number on your landing page and stay on long enough to pass your minimum duration.
  3. Watch the Calls page. The call appears as it happens, with the reason it did or did not qualify, and the Conversions column shows the upload once it fires.

Uploads run about a minute behind qualification and retry up to five times on failure. Google’s own reporting lags further — allow a few hours before judging whether a conversion arrived, and note that an upload we recorded as sent is proof Google accepted it, not proof it will be attributed.

Troubleshooting

Failures show in the Conversions column on the Calls page. The ones you are likely to meet:

credential_incomplete
No Customer ID saved, or the campaign has no conversion action and no org-level override is set. Re-save the integration to trigger the auto-creation.
no_gclid_or_caller
The call carried neither a Google ad click nor a caller number, so Google has nothing to attribute it to. Parked permanently rather than retried — usually a direct call to a tracking number, not a fault.
partial_failure: … can't be found
Google does not recognise the click. Also parked permanently: the answer will not change on a retry. Most often a gclid from a different Google Ads account than the one connected here.
developer_token_missing
Server-side configuration, not something you can fix in the dashboard. Email support and we will sort it.
HTTP 404 with an HTML body
The Google Ads API version we call has been retired. Also ours to fix — tell us and it is a config change, not a deploy.

No upload at all? Only qualified calls fire one. Check the call’s status on the Calls page first — a call below your minimum duration, or a repeat caller inside your unique-caller window, is skipped by design.