Call Tracking and Dynamic Number Insertion: Setup That Does Not Silently Break

Install source-level call tracking on a garage door site so every call is credited to the ad, keyword, or page that produced it, and know the three things that quietly kill it.

Updated
Read time
12 min
Compared here
CallRail, WhatConverts

If you run ads, you have probably already asked the question this guide answers: when the phone rings, which ad, which keyword, or which page actually produced that call? A static number on your website cannot tell you. Call tracking with dynamic number insertion can, and this guide walks through provisioning numbers, installing the script correctly, sizing the number pool, and connecting the result to Google Ads and GA4 so it shows up as a conversion instead of a report nobody opens.

One thing up front: we sell a lead-handling system, Garage Door Lead Engine, and part of what it reports on is which source produced which outcome. That gives us a stake in this topic. What follows is a straight description of how CallRail and WhatConverts actually work, what they cost at real call volume, and where each one breaks, so you can set this up yourself whether or not you ever talk to us about it.

Which one you should probably pick

For most garage door shops running paid search or Local Services Ads, start with WhatConverts. Its entry Call Tracking plan is $30 a month, checked August 2026, and includes up to 148 tracked calls, an allowance a single-truck or two-truck shop with modest call volume can often stay inside. Pull your own recent call counts before you assume that, though. “Modest” is doing real work in that sentence, and your shop is the only one that knows what your actual number is. CallRail is the more recognized name in home services and it is not a bad product, but its plans include only 5 numbers, 250 minutes, and 25 texts before overage charges kick in, and a shop that actually answers 150 to 200 calls a month will land well above the advertised $50 to $195 sticker price once those allowances run out.

Pick CallRail instead if you already use a CRM or reporting tool that has a documented, ready-made CallRail integration, or if a marketing agency you work with standardizes on it and you would rather match their stack than run a separate account. Pick WhatConverts if you are setting this up yourself and want the lower entry price with the same core dynamic number insertion mechanics. Either way, plan on a real monthly bill higher than the smallest published number once your shop is actually taking calls, not just testing the setup.

What each one actually costs

Tool Published price (checked August 2026) What it is best at Where it gets hard
CallRail Lead Tracking $50/mo, Lead Tracking Complete $95/mo, Lead Conversion $150/mo, Lead Conversion Complete $195/mo. Every plan includes 5 numbers, 250 minutes, 25 texts Recognized name, wide adoption among home service marketing agencies Overages hit fast: $3 per extra local number, 5 to 6 cents a minute, 2.5 to 4 cents a minute for transcription. A busy shop’s real bill routinely runs well above the sticker
WhatConverts Single-account plans: Call Tracking $30/mo, Plus $60/mo, Pro $100/mo, Elite $160/mo, each including up to 148 tracked calls Lower entry price for the same core dynamic number insertion feature Customer journey and multi-click attribution, the features that show which pages a caller viewed before dialing, are gated to the top Elite tier at $160/mo

Both figures are per single-account, month-to-month pricing with no long-term contract required, as published on each vendor’s own pricing page. Neither company publishes a documented A2P 10DLC or SMS-compliance fee schedule on its pricing page for its own texting features. If you plan to use either platform’s SMS capability for anything beyond receiving a lead notification, confirm the compliance requirements and any related fees directly with the vendor before you rely on it. Our 10DLC registration guide for garage door companies covers that registration process on its own.

Before you start

Gather these before you open either dashboard:

  • A live website you can add a script to. Dynamic number insertion depends on a JavaScript snippet running in the page. If your site is on a locked-down platform where you cannot add custom code to the header, ask your web developer or hosting provider how they handle third-party tracking scripts before you sign up for either service.
  • Access to your Google Ads and GA4 accounts. You will connect these during setup so calls show up as conversions in the same place you already look at ad performance, instead of as a separate login you forget to check.
  • A decision on your existing business line. Both tools forward tracked calls to your real phone. Decide in advance whether that is your current cell number, an office landline, or a system like a shared inbox, because you will enter that forwarding number during setup.
  • A rough count of your distinct traffic sources. Google Ads, Local Services Ads, organic search, your Google Business Profile listing, and any print or vehicle-wrap numbers each need their own tracking approach. Write the list down before you start provisioning numbers, so you are not improvising it inside the dashboard.

Setting up WhatConverts

  1. Create the account. Sign up at whatconverts.com and choose the Call Tracking plan to start, or a higher tier if you already know you want form and chat tracking included from day one. WhatConverts offers a 14-day free trial, which is enough time to confirm the setup works before you commit.
  2. Provision your tracking numbers. In the numbers section, set up one static local or toll-free number for each offline source: your Google Business Profile listing, print materials, and vehicle signage. Static numbers let you track which channel produced a call without needing a website visit to trigger the swap.
  3. Create a Dynamic Number Insertion pool for your website. This is a separate set of numbers reserved for visitors arriving through your site. The pool size should reflect how many visitors from different sources you expect to be on the site at the same time, not your total monthly traffic. Start with the vendor’s suggested default and check the dashboard after your first week for pool exhaustion warnings.
  4. Install the DNI tracking script. WhatConverts provides a JavaScript snippet to paste into your website’s header, the same way you would install Google Analytics. If your site runs on a platform with a dedicated field for custom head scripts, use that field rather than editing template files directly, so a future site update does not overwrite it.
  5. Confirm the swap actually works. Open your site in a private or incognito browser window, arrive as if from a Google Ads click by adding the relevant URL parameters your ads use, and check that the visible phone number changes to a tracking number rather than staying on your default number. Then place a real test call to that number and confirm it rings through to your business line and gets logged in the WhatConverts dashboard.
  6. Connect Google Ads and your CRM. These integrations live in the account settings and are available starting on the Plus tier. Connecting Google Ads lets a phone call show up as a conversion in the same reporting you already use for ad spend decisions.
  7. Set up Call Flows and reporting if you are on Pro or Elite. Call Flows let you route calls based on time of day or source. Reporting on these tiers adds the customer journey view, showing which pages a caller visited before dialing, which is the feature most shops actually want but is not included on the entry tier.

Setting up CallRail

  1. Create your CallRail account and company profile. Choose the Lead Tracking plan to start with dynamic number insertion and basic reporting, or Lead Tracking Complete if you also want form tracking included.
  2. Provision your numbers the same way as above. Static numbers for offline sources, a pooled set of numbers for your website’s dynamic number insertion. CallRail’s entry plans include 5 numbers total, so a shop tracking several offline sources plus a website pool should count carefully before assuming the base allowance covers everything.
  3. Set call forwarding to your real business line. Every tracked number needs a destination. This is the same step as WhatConverts: decide in advance whether calls land on a cell phone, office line, or shared system.
  4. Install the CallRail JavaScript snippet. Same mechanics as WhatConverts: paste the provided script into your website’s header, using your platform’s custom-script field where one exists rather than editing template code by hand.
  5. Test the swap the same way. Load the site as if from a paid click, confirm the number changes, and place a real call to verify it forwards and gets recorded.
  6. Connect Google Ads and GA4. This is where a tracked call becomes a visible conversion in your existing ad reporting rather than a number you have to check in a separate app.
  7. Turn on call recording, transcription, and automation rules if you are on a Conversion tier. Conversation Intelligence, which analyzes recorded calls for keywords and sentiment, is gated to CallRail’s higher-priced plans.

Where it gets hard: CallRail at real call volume

CallRail is the challenging pick in this comparison, not because the software is bad, but because its pricing structure is easy to underbudget. Every CallRail plan includes only 5 numbers, 250 minutes, and 25 texts. A shop that answers even a modest 150 to 200 calls a month, each running a few minutes, will burn through the included minutes well before the billing period ends. Overages then apply at $3 per additional local number, 5 to 6 cents a minute for local calls, and 2.5 to 4 cents a minute for transcription, and these add up quietly on a monthly invoice rather than showing up as a single obvious line item.

The dynamic number insertion mechanism itself carries the same fragility whether you use CallRail or WhatConverts, but it is worth calling out here because it is the single most common reason shops think call tracking “does not work” when the real problem is the script not firing. Three things silently break it:

  1. A cookie consent banner blocking the script. If your site uses a consent management tool and a visitor has not yet accepted tracking cookies, the DNI script may be blocked from running. The visitor sees your default fallback number, and the call it produces gets attributed to no source at all rather than flagged as an error.
  2. A caching layer serving a stale page. If your website uses aggressive page caching, a cached version of the page can be served to a new visitor before the DNI script has a chance to run and swap the number for their specific visit. The result looks identical to a working page, but the number displayed is stale.
  3. An ad blocker. Some ad blockers and privacy browser extensions block third-party tracking scripts by default, which includes DNI scripts from either vendor. There is no fix for this from your side beyond knowing it happens, since you cannot control what a visitor’s browser blocks.

None of these produce a visible error. The page loads fine, a number is shown, and the call goes through. The only symptom is a report that quietly undercounts tracked calls or misattributes them to a fallback number, month after month, unless someone periodically checks that test calls from each source are landing correctly.

What usually goes wrong

  • The number pool is undersized. If two visitors from different sources land on the site at the same moment and the pool has run out of available numbers, both get shown the same tracking number. The report then credits one source’s call to the wrong channel, and the error is invisible unless you are actively watching pool utilization in the dashboard.
  • Nobody tests after a site redesign. A new theme, a new page builder, or a migration to a different hosting platform can strip the header script without anyone noticing, since the site still loads and looks correct. The fix is a standing habit: after any site change, load the page in a private browser window and confirm the tracking number still swaps.
  • Overages get discovered on the invoice, not before. Especially with CallRail’s tighter included allowances, a shop can go months assuming the advertised price is the real price until a busier month produces a bill two or three times higher than expected.
  • Calls get tracked but outcomes never get logged. Both platforms can record whether a call happened, but crediting that call as a booked job, a no-show, or a lost estimate requires someone to manually mark the outcome after the fact. Skip this step and the dashboard tells you which source produced calls, not which source produced revenue.
  • The tool gets treated as a phone system. CallRail and WhatConverts are attribution layers that forward calls to your existing phone; they are not a replacement business phone system with its own extensions, voicemail, and team routing. A shop that expects one to behave like the other ends up frustrated with a tool that was never built for that job. Our guide to business phone systems versus call tracking lays out which job each one actually does.

How to tell it is working

In week one, place test calls from each source you set up: a Google Ads click, an organic search visit, and your Google Business Profile listing. Confirm each one shows the correct tracking number and that the call appears in the dashboard attributed to the right source, not the fallback number. Check the number pool utilization report and make sure it is not showing warnings about running out of available numbers during your busiest hours.

By month one, look at your Google Ads or GA4 reporting and confirm tracked calls are appearing there as conversions, not just inside the call tracking dashboard by itself. That connection is the entire point of linking the two systems: a call that never shows up in your ad platform’s conversion data is a call your ad spend decisions cannot see. If you find calls logged in CallRail or WhatConverts that never made it into Google Ads, recheck the integration settings rather than assuming the numbers are simply low that month. Our GA4 and GTM offline conversion import setup guide covers the reporting side of that connection in more depth.

The last check, and the one most shops skip, is whether anyone is going back into the dashboard to mark which calls became booked jobs. A month of clean source-level call data is useful. A month of source-level data tied to which of those calls actually turned into paying work is the number that should change what you spend on ads next.

Common questions

What is dynamic number insertion?
Dynamic number insertion, usually shortened to DNI, is a script that swaps the phone number shown on your website depending on where the visitor came from. A visitor who clicked a Google Ads listing sees one number, a visitor who found you organically sees another, and each number routes back to your real business line while the software logs which source that particular number belongs to.
Do I need call tracking if I already have Google Ads conversion tracking set up?
Website conversion tracking on its own only sees a click on a phone number or a form submission. It cannot tell you whether that click became a real phone call, how long the call lasted, or whether the caller booked a job. Call tracking fills that gap. The two are meant to work together, not replace each other.
How many phone numbers do I actually need for dynamic number insertion?
It depends on how much simultaneous website traffic you get from different sources. A single-truck shop with modest traffic can often run on the numbers included in an entry plan. A shop running Google Ads, Local Services Ads, and organic traffic at the same time needs to check its dashboard for pool exhaustion warnings and add numbers before two different visitors get shown the same one.
Will a cookie consent banner break dynamic number insertion?
It can. If a visitor has not yet accepted cookies, or has declined tracking cookies, some consent management setups block the tracking script from firing at all. The visitor then sees your default fallback number instead of a source-specific one, and that call gets logged as untracked or misattributed rather than flagged as an error.

Sources

Prices, limits, and requirements were checked on August 28, 2026. Vendors change these without notice, so confirm anything that affects a buying decision before you sign.