How-to
Tracking Phone Calls as Conversions: CallRail + HubSpot + GTM
If phone calls are a real channel for your business, the most valuable conversions never touch a form. Connecting CallRail, HubSpot and Google Tag Manager lets you treat a qualified call like any other conversion, attributed to the campaign that drove it, scored in your CRM, and fed back to Google Ads. Here's how the pieces fit.
The four pieces and what each does
- CallRail: dynamic number insertion swaps your phone number per visitor so it can attribute the call to a source, keyword and the Google click id.
- GTM: captures the
gclidand session source on the website and makes sure CallRail's swap and your analytics see the same visitor. - HubSpot: the system of record where the call becomes a contact/deal you can qualify and value.
- Google Ads: receives the qualified call back as an offline conversion.
What GTM actually does here
CallRail does the number-swapping, but GTM makes the attribution reliable:
- Capture
gclidfrom the landing URL with a URL variable and store it in a first-party cookie. - Make sure CallRail's script loads (you can deploy it via GTM) so dynamic numbers swap on every page.
- Push a
dataLayerevent when CallRail reports a call so GA4 and ad tags can react to "phone_call" like any other conversion.
Keep identity consistent
Qualify in HubSpot, then send the good ones back
Not every call is a conversion, most aren't. The point of routing calls through HubSpot is to qualify them: a 20-second wrong number shouldn't train Smart Bidding the same way a booked consultation does.
The flow
- CallRail creates/updates a HubSpot contact with the call and its source data.
- Your team (or a workflow) marks which calls are genuine leads and assigns a value.
- Qualified calls import back to Google Ads as offline conversions, matched on the stored click id.
Practice this on a real container
The hard part is capturing and carrying the click id reliably. Practice the GTM half (URL variables, cookies and a dataLayer event), then read how the click id flows from web to CRM to ad platform.
Read: capturing the click ID →Pitfalls to avoid
- No click id stored → calls can't be attributed to a campaign.
- Counting every call → Smart Bidding optimizes toward junk; qualify first.
- Double-counting → if both CallRail and a manual import send the same call, dedupe on a call/contact id.
- Consent → number swapping and tracking still need to respect the visitor's consent choices.
Now go practice it
Reading sticks when you do it. These hands-on lessons load your own GTM container and let you debug in Tag Assistant.
Frequently asked questions
How do CallRail, HubSpot and GTM work together for call tracking?
CallRail swaps your phone number per visitor and attributes the call to a source and the gclid. GTM captures the click id on the site and keeps visitor identity consistent across CallRail and your analytics. HubSpot records the call as a contact/deal you qualify and value. Qualified calls are then imported back to Google Ads as offline conversions.
What does GTM do in a call tracking setup?
GTM captures the gclid from the landing URL into a first-party cookie, can deploy CallRail's script so numbers swap on every page, and pushes a dataLayer event when a call happens so GA4 and ad tags can treat it as a conversion.
Should every phone call count as a conversion?
No. Most calls aren't qualified leads. Route calls through HubSpot to mark which are genuine and assign a value, then import only the qualified ones back to Google Ads so Smart Bidding optimizes toward real revenue rather than wrong numbers.
Why aren't my call conversions attributed to campaigns?
Almost always because the click id wasn't captured and stored with the visitor. Capture the gclid on the first page view, keep it in a first-party cookie, and make sure it reaches CallRail and your CRM so calls can be matched back to the campaign.
Related posts
How-to
How to Set Up Google Tag Manager on Shopify (Storefront + Checkout)
Shopify GTM is two jobs, not one: the storefront installs normally, but the sandboxed checkout needs a custom pixel. The full storefront + checkout setup, GA4 mapping and testing.
Read →How-to
How to Track Form Submissions in Google Tag Manager (Without Losing Conversions)
Form submissions are leads, and the easiest tracking to get wrong. Three reliable methods, plus the redirect gotcha that silently loses conversions and how to beat it.
Read →How-to
How to Set Up GA4 Ecommerce Tracking with Google Tag Manager
GA4 ecommerce is one pattern repeated across a few events. Walk the full funnel in GTM (from the base tag to a deduplicated purchase with revenue) with copy-paste dataLayer examples.
Read →About the author

Analytics & Tag Management Consultant
Nathan Gage got his start in marketing through Google Tag Manager. Seeing how tracking customer behavior could turn raw clicks into insight you can actually act on is what pulled him into the field. Since then he has worked both full time and as a consultant with 15 marketing agencies, supporting brands that spend anywhere from a thousand dollars a month to over a million. Along the way he built a multi-touch attribution app, and he created The Happy Tagger so anyone can practice GTM, GA4 and server-side tracking on a real container instead of a production site.