When Google Ads website call conversions show zero while the business is getting calls, the cause is almost always one of six things: another script swaps the phone number before Google's snippet can find it, two call tracking systems are stacked on the same number, the number in the conversion action does not match the digits on the page, the website call snippet or Google tag is missing from the pages ad traffic lands on, calls are routed through CallRail source-level numbers that carry no click ID, or the calls are real but shorter than the call length threshold. You confirm which one by clicking your own ad and checking whether a Google forwarding number appears, by reading the tag status in Google Ads, and by reading the page with the browser's developer tools. The fix is to let one system own the phone number.
A website call conversion is a Google Ads conversion action with the source set to calls to a phone number on your website. It needs the Google tag on every page plus an event snippet that names the business number to look for. When a visitor arrives from an ad click, the snippet calls the _googWcmGet function and the tag replaces your business number with a Google forwarding number for that visitor. Google connects the call to your real line, measures its duration, and counts a conversion if it lasts at least the minimum length you set. This is separate from calls from ads, which come from call assets and call-only ads, and from imported calls, which you upload from your own call tracking or CRM.
The six causes we find most often.
We run these checks on our own sites and on accounts we take over. On one account we took over, the column read zero for months while the phones were busy, and the Google setup looked correct in the interface.
- A number swap runs first: a custom script, a theme feature, or a plugin replaces the phone number when the page loads, so by the time Google's snippet looks for your business number it is no longer on the page and no forwarding number is shown
- Two swap systems stacked: Google forwarding numbers, a call tracking platform's dynamic number insertion, and a custom script all try to own the same element, and whichever runs second either finds nothing to replace or overwrites the first
- Number format mismatch: the business number entered in the snippet or the Google Tag Manager tag does not match the digits printed on the page, so the tag never recognizes it
- Snippet missing where ads land: the Google tag is on the site but the website call snippet is not on the landing pages, or it was added to a page template the ads do not use
- CallRail source-level numbers: calls go to a single number per traffic source, which tells you the call came from Google Ads but never captures the click ID, so nothing can be sent back as a click-attributed conversion
- Calls shorter than the threshold: the calls are tracked and connected, but they end before the minimum call length in the conversion action, so they never become conversions
How to verify website call tracking.
Do not start in the code. Start with what an ad clicker actually sees. Three checks, in this order.
Click your own ad. Search for a term your ad shows on, click the ad, and look at the phone number on the landing page. A Google forwarding number means the swap works. Your normal number, or a different tracking number, means something on the page is stopping it. Google's own instructions say to delete the gwcc cookie from your browser before clicking an ad again on repeated tests, because the cookie holds the earlier result.
Check the conversion action status. In Google Ads, go to Goals, then Conversions, then Summary, and open the website call action. Google states that an Inactive tag status usually means the tag or snippet is not correctly implemented. Also confirm in the account settings that call reporting is turned on, because forwarding numbers depend on it.
Read the page in developer tools. Search the Elements panel for your business number, then list every script that touches it: the Google tag, Google Tag Manager, any call tracking script, and any custom code, and note when each runs. A script that rewrites the number at DOMContentLoaded beats a tag that loads later through a tag manager. Tag Assistant shows whether the Google tag and the call snippet fired.
Diagnose top to bottom.
This is the order we run. Each step tests one layer, so stop at the first one that fails. It sits inside the wider conversion tracking audit checklist we run before spending on any account.
| Symptom | Likely cause | Fix |
|---|---|---|
| Ad click shows your normal number | Snippet missing or number not found on the page | Add the snippet to landing pages and match the digits exactly |
| Ad click shows a different tracking number | Another swap script ran first | Remove one swap system so only one owns the number |
| Number shows with a stray plus sign | International format in the Tag Manager tag | Use the national format without the plus sign |
| Tag status Inactive | Google tag or call snippet not implemented correctly | Check with Tag Assistant and fix the tag on every page |
| Forwarding number shows, calls happen, conversions zero | Calls shorter than the call length setting | Review call durations and set the threshold that matches a real lead |
| Text swapped but taps dial the old number | tel: link not updated | Update the link in a _googWcmGet callback |
| CallRail shows Google Ads calls, Google Ads shows none | Source-level number, no click ID captured | Switch to a CallRail visitor tracking pool with auto-tagging on |
| Calls appear only from call assets | Website action missing, only calls from ads set up | Create a calls to a phone number on your website action |
Stacked number swaps and CallRail.
Every dynamic number system does the same thing: find a number on the page and replace it. Put two on one page and the first one wins the element, while the second finds nothing it recognizes or overwrites the first and breaks its attribution. Google also notes that when a site uses dynamic number insertion or third-party call tracking, its automated system cannot verify the phone number by scanning the page source.
CallRail adds a second trap. It offers source-level tracking, where one number represents a whole traffic source, and visitor-level tracking, where a pool of numbers is assigned to individual website sessions. CallRail states that its Google Ads integration cannot work with source-level tracking alone, because a source number cannot tell one caller from another. Only visitor tracking captures the gclid for each visitor, and only calls to the website pool with a source of Google Ads report as conversions. Auto-tagging must be on in Google Ads for the click ID to exist at all. We cover the full setup in our CallRail Google Ads integration guide.
If a session pool is not an option, the other route is to record the caller's phone number in your CRM and upload qualified calls to Google Ads as offline conversions with the hashed phone number, which Google's API accepts in E.164 format hashed with SHA-256, even without a click ID. That is the enhanced conversions for leads path, described in our pieces on enhanced conversions in Google Ads and offline conversions from your CRM. Note that CallRail's own integration posts conversions with click IDs and does not use enhanced conversions, so this upload comes from your CRM, not from CallRail.
What is normal and what is a red flag.
Some gaps between your phone records and Google Ads are expected. Google says the default length of a call counted as a conversion is 60 seconds, and you can change it, so a log full of short calls can sit next to a much lower conversion count. Only visitors who clicked an ad see a forwarding number, so organic and direct callers never appear here. Forwarding numbers exist only in the countries Google lists as supported, which include the United States, Canada, the United Kingdom and Australia.
- Normal: website call conversions lower than total calls, because most callers did not click an ad
- Normal: connected calls in call details that are not conversions, because they ended under the call length threshold
- Red flag: zero website call conversions for weeks while ad clicks and phone volume are steady
- Red flag: your own test ad click never shows a Google forwarding number
- Red flag: CallRail attributes calls to Google Ads but none arrive as conversions in Google Ads
Why are my Google Ads website call conversions showing zero?
Usually because the Google forwarding number never appears on the page. Another script swapped the phone number first, a second call tracking tool owns the number, the number in the snippet does not match the page, or the snippet is missing from the landing pages. If the forwarding number does appear, check whether calls are shorter than the call length setting.
What is the difference between calls from ads and calls from a website?
Calls from ads come from call assets and call-only ads, where the person taps or dials the number shown in the ad itself. Calls from a website happen after an ad click, when the visitor sees a Google forwarding number on your site and dials it. Imported calls are a third type, uploaded from your own call tracking or CRM.
Can I use Google forwarding numbers and CallRail on the same website?
Not on the same phone number. Both replace the number on the page, so whichever runs second breaks. Pick one owner. If you use CallRail, use its visitor tracking pool and its Google Ads integration to send calls as conversions, and do not also run the Google website call swap on that number.
Why does CallRail not send my calls to Google Ads?
The most common reason is that calls go to source-level tracking numbers. CallRail says its Google Ads integration needs visitor tracking, because only a website pool captures each visitor's gclid. Auto-tagging must also be on in Google Ads, and the call must come from a visitor who clicked a Google ad.
How long does a call have to last to count as a conversion in Google Ads?
Google's default is 60 seconds, and you can change it in the conversion action settings. Set it to the length that separates real leads from hang-ups for your business, then keep it stable.