The CallRail Google Ads integration sends phone calls back to Google Ads as conversions by matching each call to the Google click ID (GCLID) that CallRail's dynamic number insertion script captured when the visitor landed on your site. Done well, it lets Google's bidding optimize toward calls that become estimates, cases or appointments. Done the default way, it counts every ring, including spam and vendors, and your bidding learns from noise. This piece covers how the integration works, how to build a separate qualified-call conversion driven by CallRail tags, where Local Services Ads calls actually live, how to size a number pool, the daily qualification routine, and the failures we fix most often.
Dynamic number insertion (DNI) is the CallRail JavaScript snippet that swaps the phone number shown on your website per visitor, so every call can be tied back to the session, the source and the specific click that produced it. Everything else in this setup depends on that swap happening.
How the CallRail Google Ads integration works.
There are three moving parts. First, the DNI script loads on every page, reads the landing URL and referrer, and stores the GCLID (or the gbraid and wbraid identifiers Google uses when a GCLID is unavailable) in a first-party cookie. Second, when a visitor calls the swapped number, CallRail records the call and attaches the stored click data plus the source, campaign, landing page and, with keyword-level tracking, the search term. Third, the native integration under Settings, then Integrations, then Google Ads, pushes those calls into Google Ads as an imported conversion action, using the GCLID to match them to the click.
That match is what makes the numbers appear inside Google Ads at the campaign, ad group and keyword level. Without a GCLID there is nothing to match against, so the call may show in CallRail as a Google Ads call by source but it will never appear in the Google Ads conversion column. This is why the DNI failures in the mistakes section below matter more than any bidding setting. CallRail creates the conversion action for you when you connect the accounts, and by default it sends all calls.
Why all calls is the wrong conversion.
Google's automated bidding (Maximize Conversions, Target CPA, Target ROAS) treats every conversion as an equally valuable outcome unless you tell it otherwise. If you feed it every call, you feed it the alarm company pitching a bundle, the recruiter, the wrong number, the customer calling about last month's invoice, and the robocall that rang for eight seconds. Bidding then pushes budget toward the keywords, hours and audiences that produce those calls.
We have set this up for roofing, HVAC and legal accounts, and the pattern is consistent: the same campaigns look strong on an all-calls report and mediocre on a qualified-calls report. Optimizing to the wrong conversion is the difference between paying for leads and paying for phone activity.
The fix is a second conversion action. Keep the all-calls action as a secondary conversion (observed, not used for bidding) so you can still see volume, and make a qualified-call action the primary one that bidding uses. CallRail can send a call to Google Ads based on a tag, a lead status (Good Lead in CallRail's terminology), or a qualification written by a connected CRM. A tag applied by a person after listening to the recording is the most reliable signal.
“A conversion is a promise you make to the bidding algorithm. Promise it estimates, not rings.”
Set up the qualified-call conversion step by step.
Local Services Ads calls are a separate world.
Local Services Ads (LSA) is the Google Guaranteed or Google Screened unit above regular search ads for home services, legal, real estate and a few other categories. LSA calls do not carry a GCLID. They are routed through Google's own forwarding number, not your website, so the DNI script never sees the visitor and the integration never sends them anywhere. They live in the LSA dashboard, where you dispute unqualified leads and rate the ones you keep.
You can still track LSA calls in CallRail by pointing the LSA profile at a CallRail tracking number, which gives you recordings, tagging and a place to log outcomes. Just understand that those calls show as an LSA source in CallRail and nothing else. We cover LSA and pay-per-call economics in more depth in our pay-per-call guide.
Sizing the number pool for keyword-level tracking.
Source-level tracking uses one number per source (one for Google Ads, one for Google Business Profile, one for print). Keyword-level tracking, which lets Google Ads see calls per keyword, requires a pool of numbers assigned to visitors one at a time and held for the session plus a short cooling period. The pool has to cover the visitors who are on the site at the same time from the sources you track.
The practical rule: count concurrent sessions, not daily visits. A site with a few hundred paid visits a day spread across business hours may only have a handful of paid visitors on the site at once, and a modest pool handles that. A campaign that spikes traffic (storm season for a roofer, a TV spot for a law firm) needs a bigger pool during those windows or the later visitors get an unswapped number and their calls fall back to the source level. CallRail reports pool exhaustion in the tracking settings; check it after any traffic change. A pool that is too small silently drops attribution on your busiest days, which are exactly the days you want to learn from.
The daily qualification routine.
Tag-driven conversions only work if someone applies the tags. The routine that works is short and boring: one person, ten to fifteen minutes each morning, reviewing every call from the previous day that lasted longer than the backstop and applying one of four tags: Qualified (a prospect with a real job in your service area), Existing Customer, Spam or Vendor, and Missed. Missed calls get a callback, and the callback outcome sets the tag.
CallRail transcripts and call summaries make this faster, and the automatic spam detection catches a share of robocalls before a human sees them. But the automatic qualification score is a hint, not a decision. Let it sort the queue, not set the conversion. When a CRM such as HubSpot or JobNimbus is connected and reps mark leads there, you can drive the tag from the CRM stage instead.
Missed calls are the biggest hidden leak. A qualified prospect who rings out will call the next company on the results page. Answer rates matter more than most bidding settings; the response-time system is in our speed-to-lead piece.
What usually goes wrong.
- A static number hard-coded in the site header or a click-to-call button that DNI never swaps, so calls carry no GCLID and the integration reports almost nothing.
- A cookie consent banner or tag manager trigger that blocks the DNI script until the visitor clicks accept, which most mobile visitors never do, so the swap and the GCLID capture never happen.
- The tracking number placed on the Google Business Profile as the primary number, creating a NAP mismatch with the website and citations. Use a dedicated GBP pool number in the additional phone field and keep the main line as the primary.
- Optimizing to all calls, so spam, vendor and existing-customer calls train Smart Bidding toward the keywords and hours that produce phone activity rather than jobs.
- A landing page tool (a form builder, a quote calculator, a separate booking domain) that does not carry the DNI script, so the highest-intent traffic is the least tracked.
- Nobody assigned to tagging, so the qualified conversion action reports zero after week two and the account manager quietly switches bidding back to all calls.
Every one of these shows up as the same symptom: Google Ads reports far fewer call conversions than CallRail shows for the Google Ads source. Walk the list in order; the header number and the consent banner account for most cases.
How to check the integration is working.
| What you check | Healthy | Broken | First thing to fix |
|---|---|---|---|
| Number swap on an ad click | Displayed number differs from the main line | Main line shows on every visit | Hard-coded header number or blocked DNI script |
| GCLID on paid calls in CallRail | Most Google Ads calls show a click ID | Calls show a source but no click ID | Consent banner, landing page missing the script |
| Conversions in Google Ads vs CallRail paid calls | Roughly matching counts with a short lag | Google Ads shows a small fraction | Integration authorization or wrong customer ID |
| Qualified vs all calls | Qualified is a clear subset with tags applied daily | Qualified equals zero or equals all | Tagging routine or trigger condition |
| Pool exhaustion warnings | None on busy days | Warnings during peaks | Pool sized to concurrent sessions |
| LSA calls | Visible in LSA dashboard and as an LSA source in CallRail | Expected in Google Ads conversions | Nothing, this is by design |
The highest-yield audit you can do this week is the first row: load your own site from an ad click on a phone and look at the number. The full tracking audit, including forms and GA4, is in the conversion tracking audit checklist, and how call tracking fits the wider lead system is on our roofing companies page.
Does CallRail send every call to Google Ads as a conversion?
By default, yes. The native integration creates a conversion action and sends all tracked calls that carry a Google click ID. You can change the condition to send only calls with a specific tag or lead status, which creates a second conversion action. Make that one primary for bidding and keep the all-calls action as a secondary, observation-only conversion.
Why do Local Services Ads calls not show up in Google Ads conversions?
Local Services Ads route calls through Google's own forwarding number rather than your website, so there is no page visit, no dynamic number insertion and no click ID for the integration to match. LSA calls are reported, rated and disputed inside the Local Services Ads dashboard. You can still record and tag them in CallRail by assigning a tracking number to the LSA profile.
How many numbers do I need in a CallRail pool for keyword tracking?
Size the pool to concurrent sessions from the sources you track, not to daily visits. Count the most visitors likely to be on the site at the same moment during a busy hour, then add headroom for spikes such as storm season or a promotion. CallRail flags pool exhaustion in the tracking settings; if you see it, add numbers before your next busy period.
Should I set a minimum call duration for Google Ads conversions?
Use duration only as a backstop on the all-calls action to filter out robocalls that ring for a few seconds. Do not use it as the qualifier for the primary conversion. Long calls are often vendors or existing customers and short calls can be booked estimates, so a human-applied tag or a CRM lead status is the signal bidding should learn from.