January 26, 2026·12 min read

Call Tracking Setup Guide for Contractors: From Zero to Full Attribution

By Charwin Vanryck deGroot

For contractors, phone calls are revenue. A homeowner searching "emergency plumber near me" at 2 AM isn't filling out a form. They're calling.

The problem? Most contractors have no idea which marketing channels actually generate those calls. They're spending $5,000/month on Google Ads and another $2,000 on SEO, but when the phone rings, they can't tell if it came from a paid ad, organic search, their Google Business Profile, or the truck wrap their crew drives around.

This guide fixes that. We're going to set up call tracking from scratch—the technical implementation that lets you know exactly which marketing dollars produce phone calls and which are wasted.

Why Call Tracking Is Non-Negotiable

Let me show you what flying blind looks like.

A roofing company spends $4,000/month on Google Ads. They get 80 calls per month. Good news, right? But here's what they don't know:

  • 30 of those calls came from organic search (free traffic)
  • 15 came from their Google Business Profile (also free)
  • 20 came from Google Ads (the paid traffic they're tracking)
  • 10 came from a Facebook campaign they forgot was running
  • 5 came from the yard signs they put up at job sites

Without call tracking, they attribute all 80 calls to Google Ads and think their $50 cost-per-call is acceptable. The real cost-per-call from Google Ads? $200. They're losing money on paid search while their free channels do the heavy lifting.

This isn't hypothetical. I see this constantly when auditing contractor marketing. The channels they think are working often aren't. The channels they ignore often are.

Call tracking isn't just about measuring—it's about making smart decisions with your marketing budget. Every dollar you spend should be traceable to a result.

How Call Tracking Actually Works

Before we set anything up, you need to understand the mechanics.

Dynamic Number Insertion (DNI)

This is the core technology. Here's how it works:

  1. A visitor lands on your website from Google Ads
  2. JavaScript on your site detects the traffic source (via UTM parameters, referrer, or cookies)
  3. The script dynamically swaps your main phone number with a tracking number
  4. When the visitor calls, the tracking platform knows it came from Google Ads
  5. The tracking platform forwards the call to your actual business number

The visitor never knows they're calling a tracking number. The call still rings to your office. But now you have data.

The key insight: DNI only works on your website. If someone sees your number on a Google Business Profile or a yard sign, they're calling a static number. We'll need different tracking numbers for those sources.

Tracking Number Pools

For keyword-level tracking (knowing exactly which search term triggered the call), you need number pools.

Here's the problem DNI solves partially: you can track that a call came from Google Ads, but if you're running 50 different keywords, which keyword drove that specific call?

Number pools solve this. Instead of one tracking number, you have a pool of 10-20 numbers. When a visitor lands on your site, they get assigned a specific number from the pool. That assignment is tracked along with all their session data—including the keyword they searched.

The visitor stays assigned to that number for a set period (usually 30 minutes to 4 hours). If they call within that window, you know exactly which keyword brought them.

Pool size matters. If you get 100 website visitors per hour and your pool has 10 numbers, each number is assigned to 10 different visitors. Some precision is lost. For most contractors, a pool of 15-20 numbers provides sufficient accuracy without excessive cost.

Source Attribution

Call tracking platforms categorize calls by source. Standard categories include:

Direct Traffic: Typed your URL directly or used a bookmark

Each source gets its own tracking number or is identified through DNI. This is your attribution foundation.

Choosing a Call Tracking Platform

Three platforms dominate the contractor space. Here's an honest breakdown.

CallRail

Best for: Most contractors. Clean interface, strong integrations, reasonable pricing.

Pricing: Starts at $45/month for 10 local numbers and 500 minutes. Most contractors need the $95/month plan for number pools and keyword-level tracking.

Strengths: - Excellent Google Ads and GA4 integrations - Call recording and transcription included - Form tracking included (track form submissions alongside calls) - Lead Center app for managing calls on mobile

Weaknesses: - Transcription accuracy is decent but not perfect - Advanced features require higher tiers

Setup complexity: Low. Most contractors can set this up themselves.

CallTrackingMetrics

Best for: Agencies managing multiple client accounts. Power users who need granular control.

Pricing: Starts at $39/month for basic tracking. Full-featured plans run $99-199/month.

Strengths: - More granular routing options - Better multi-location support - Advanced IVR (phone tree) capabilities - Deeper customization options

Weaknesses: - Interface is less intuitive than CallRail - Learning curve is steeper - Some features feel dated

Setup complexity: Medium. Technical users will be fine. Others might struggle.

WhatConverts

Best for: Agencies that need lead management alongside tracking. Companies that want all conversions (calls, forms, chats) in one platform.

Pricing: Starts at $30/month for basic tracking. Most contractors need the $60-100/month tiers.

Strengths: - Unified lead management (calls, forms, chats, transactions) - Strong quotable lead tracking - Good agency features - Cleaner reporting than CallTrackingMetrics

Weaknesses: - Call-specific features aren't as deep as CallRail - Fewer direct integrations

Setup complexity: Low to medium.

My Recommendation

For a single-location contractor setting this up themselves: CallRail. It's the right balance of power and simplicity.

For agencies or multi-location businesses: CallTrackingMetrics or WhatConverts depending on whether you prioritize call routing or unified lead management.

Basic Setup: Getting Your First Tracking Numbers

I'll walk through CallRail, but the concepts apply to any platform.

Step 1: Create Your Account and Company

Sign up at callrail.com. Create a "company" for your business. One company = one business with shared settings and numbers.

Step 2: Purchase Your First Tracking Numbers

You need separate numbers for each major source you want to track independently:

Website tracking number: This will be swapped in via DNI

In CallRail, go to Numbers > New Tracking Number.

For local presence, choose local numbers with your area code. Some platforms offer toll-free numbers, but local numbers convert better for local service businesses.

Cost: Each local number typically costs $3-5/month. Minutes are billed separately, usually 3-5 cents per minute.

Step 3: Install the JavaScript Snippet

For DNI to work, you need the tracking script on your website.

In CallRail, go to Tracking > Swap Targets. You'll get a JavaScript snippet that looks something like this:

```javascript ```

Add this snippet to your website's `` section, ideally through Google Tag Manager or your CMS's script injection feature.

Important: The `autoreplace` value should be your main business phone number—the one currently displayed on your site. The script will swap this number with the tracking number.

Step 4: Configure Swap Targets

The swap target tells CallRail which number to replace. In most cases, this is your main business number.

If you display your phone number in multiple formats on your site (e.g., "512-555-1234" and "(512) 555-1234"), you'll need to add both formats as swap targets.

Step 5: Test the Installation

Open an incognito window and visit your site from a trackable source. For example:

  1. Go to Google and search for your business
  2. Click through to your website from the organic results
  3. Check if your phone number changed to the tracking number

You can also use CallRail's "Test Website" feature in the tracking settings.

Source-Level Tracking: Covering All Your Channels

Website tracking only captures visitors who reach your site. But calls come from many places.

Google Business Profile Tracking

Your GBP listing shows a phone number. When someone calls that number directly from Google Maps or the knowledge panel, they never touch your website. DNI doesn't help here.

Solution: Create a dedicated tracking number for your GBP listing.

  1. In CallRail, create a new tracking number
  2. Set the source as "Google Business Profile" or create a custom source
  3. In your GBP dashboard, replace your main number with this tracking number

Important consideration: Changing your GBP phone number temporarily affects your NAP (Name, Address, Phone) consistency, which matters for local SEO. However, the tracking benefit typically outweighs this concern if you update your number consistently across other directories.

Google Ads Call Extensions and Call-Only Ads

Google Ads offers its own call tracking through forwarding numbers. But here's the problem: Google's tracking only tells you a call happened. It doesn't integrate with your call recording, transcription, or CRM.

Better approach: Use your call tracking platform's number in your Google Ads call extensions.

  1. Create a tracking number in CallRail with source "Google Ads"
  2. In Google Ads, go to Ads & Extensions > Extensions > Call Extension
  3. Use your CallRail tracking number instead of your main number
  4. Enable call reporting in Google Ads to track call length

This gives you Google Ads data AND full call tracking capabilities.

Offline Tracking: Truck Wraps, Yard Signs, Direct Mail

Every offline marketing asset should have its own tracking number.

Truck wrap number: Calls from people who saw your truck in traffic or parked at a job site.

Yard sign number: Calls from neighbors who see your sign at a current job.

Direct mail number: Calls from recipients of your mailers.

Create separate tracking numbers for each. The numbers should be memorable—and ideally local to build trust.

Print these numbers large and prominently. A tracking number buried in fine print defeats the purpose.

Keyword-Level Tracking: The Advanced Setup

Source-level tracking tells you Google Ads generated 30 calls this month. Keyword-level tracking tells you "emergency ac repair austin" generated 15 of them while "hvac company near me" generated 3.

This requires number pools and proper parameter passing.

Setting Up a Number Pool

In CallRail, go to Numbers > Number Pool. Choose:

  • Pool size: Start with 15-20 numbers
  • Source: Website (or specific like Google Ads if you want granular control)
  • Reuse interval: How long before a number can be reassigned. 30 minutes is typical.

More numbers = more precision = more cost. Find the balance that works for your traffic level.

Passing gclid for Google Ads Attribution

The gclid (Google Click ID) is Google's unique identifier for each ad click. Capturing this connects call tracking data directly to Google Ads campaigns, ad groups, and keywords.

CallRail automatically captures gclid if you have:

  1. Auto-tagging enabled in Google Ads (on by default)
  2. The CallRail JavaScript properly installed

To verify: In Google Ads, go to Settings > Account Settings > Auto-tagging. Ensure it's enabled.

Once connected, your CallRail reports will show exactly which keywords, ads, and campaigns generated each call.

Microsoft Ads Integration

Same concept, different parameter. Microsoft Ads uses the msclkid. CallRail captures this automatically as well. Enable auto-tagging in Microsoft Ads under Tools > UET tags.

Integration Setup: Connecting Your Stack

Call tracking data in isolation is useful. Call tracking data connected to your analytics and CRM is powerful.

GA4 Integration

This is critical. Google Analytics 4 should show calls as conversions alongside form submissions and other events.

In CallRail:

  1. Go to Settings > Integrations > Google Analytics 4
  2. Connect your GA4 property
  3. Configure which events to send (phone call starts, calls over X duration, etc.)

CallRail will send events to GA4 like: - `phone_call_start`: Any inbound call - `phone_call_30s`: Calls lasting 30+ seconds (often used as qualified calls) - `phone_call_complete`: Any completed call

Set up conversions in GA4:

  1. In GA4, go to Configure > Events
  2. Find the call events from CallRail
  3. Mark them as conversions

Now your GA4 reports show true conversion data—forms AND calls from all sources.

Google Ads Conversion Import

For proper Google Ads optimization, you need to import call conversions back into Google Ads.

Option 1: Direct integration

CallRail can send conversions directly to Google Ads via the API. In Settings > Integrations > Google Ads, connect your account and configure which calls count as conversions.

Option 2: Import from GA4

If you're already sending call events to GA4, you can import them into Google Ads from there. In Google Ads, go to Tools > Conversions > New conversion action > Import > Google Analytics 4.

This approach keeps GA4 as your source of truth for all conversions.

Why this matters: Google's smart bidding algorithms (Target CPA, Maximize Conversions) optimize toward your conversion actions. If calls aren't included, Google optimizes for form fills only—which might represent a fraction of your actual leads.

CRM Integration

Your call data should live in your CRM alongside your other leads.

Most call tracking platforms integrate with: - HubSpot - Salesforce - Zoho CRM - Housecall Pro - ServiceTitan - Jobber

The integration typically creates a contact record for each caller with: - Phone number - Call timestamp - Call duration - Call recording link - Traffic source - Keyword (if applicable)

This lets you track leads from first call through closed job, attributing revenue back to specific marketing sources.

Call Recording and Transcription

Call tracking platforms offer recording and transcription. Use them.

Legal Considerations

Recording laws vary by state. The US has two standards:

One-party consent: Only one person on the call needs to know it's recorded. You can record without informing the caller. States include Texas, New York, Georgia, and many others.

Two-party consent: Everyone on the call must consent to recording. States include California, Florida, Illinois, Maryland, and others.

For contractors: If you operate in or receive calls from two-party consent states, you need a disclosure. Most platforms let you play an automated message: "This call may be recorded for quality purposes."

Check your state's laws. When in doubt, disclose. The disclosure itself doesn't hurt conversions measurably.

Using Transcriptions for Quality

Transcriptions turn call recordings into searchable, analyzable text.

Quality assurance: Search transcriptions for phrases like "not interested," "too expensive," "already hired someone." These indicate lost opportunities. Why are people calling and not converting?

Keyword mining: What language do callers use? If they say "AC not blowing cold" instead of "AC repair," your ad copy and website content should reflect that language.

Training: Review transcriptions with your team. How are calls being handled? Are questions answered properly? Is pricing discussed appropriately?

Lead scoring: Some platforms offer AI-powered scoring that analyzes transcription sentiment and content to automatically score lead quality.

Reporting and Optimization

Data without action is useless. Here's what to actually do with call tracking data.

Which Sources Drive Calls

Your first report should be simple: calls by source, weekly and monthly.

| Source | Calls | Cost | Cost/Call | |--------|-------|------|-----------| | Google Ads | 45 | $2,500 | $55.56 | | Organic Search | 32 | $0 | $0.00 | | Google Business Profile | 28 | $0 | $0.00 | | Facebook Ads | 12 | $600 | $50.00 | | Truck Wrap | 8 | $150 | $18.75 | | Yard Signs | 6 | $50 | $8.33 |

This immediately shows where your calls come from and what they cost. Most contractors are shocked by how much free traffic (organic, GBP) they're getting—and how much they're paying for paid traffic that isn't their primary call driver.

Call Quality Scoring

Not all calls are equal. A 20-second wrong number isn't worth the same as a 5-minute conversation that becomes a $10,000 job.

Set up call quality tiers:

Qualified calls: 90+ seconds, caller is a potential customer in your service area

Now calculate cost per QUALIFIED call, not just cost per call. This metric matters for budget decisions.

Cost Per Qualified Call by Source

The real metric: what do you pay for calls that could become customers?

If Google Ads generates 45 calls but only 25 are qualified, and you spent $2,500, your cost per qualified call is $100—not $55.56.

If your truck wrap generates 8 calls, 7 qualified, at $150/month, your cost per qualified call is $21.43.

Suddenly the truck wrap looks a lot better than Google Ads for cost efficiency. Maybe you need more trucks. Maybe you need better Google Ads targeting.

This is how you measure marketing ROI properly.

Common Mistakes to Avoid

After setting up call tracking for dozens of contractors, here are the mistakes I see repeatedly.

Not tracking Google Business Profile separately. GBP calls often outnumber website calls for local businesses. If you're not tracking them separately, you're missing a major chunk of your data.

Using Google's forwarding numbers in call extensions. Google's numbers give you basic data but don't integrate with recording, transcription, or your CRM. Use your call tracking platform's numbers instead.

Setting pools too small. A 5-number pool for a site getting 200 daily visitors means heavy overlap and inaccurate keyword attribution. Size your pool to your traffic.

Ignoring offline sources. Truck wraps, yard signs, and door hangers generate calls. Without dedicated tracking numbers, you'll never know how many.

Not connecting to GA4. Call data in CallRail and form data in GA4 means no unified view of your conversions. Integrate them.

Forgetting the recording disclosure. If you serve customers in California, Florida, or other two-party consent states, you need a disclosure. Set it up during initial configuration, not after you've accumulated thousands of uncompliantly recorded calls.

Tracking calls without tracking quality. 100 calls sounds great until you learn 60 were spam, wrong numbers, or outside your service area. Build quality scoring into your process from day one.

Not integrating with your CRM. If call data doesn't flow into your CRM, you can't track calls through to closed revenue. You'll know which channels generate calls but not which generate customers.

Next Steps

Call tracking isn't a one-time setup. It's infrastructure that compounds in value as you accumulate data.

Start with the basics: source-level tracking for your website, Google Business Profile, and offline sources. Get the integrations right from the beginning. Then add keyword-level tracking once you're comfortable with the data.

The goal isn't tracking for tracking's sake. It's making better decisions. When you can see that yard signs generate leads at one-fifth the cost of Google Ads, you invest accordingly. When you can see that certain keywords generate calls that never close, you stop bidding on them.

This is the analytics foundation every contractor needs. Phone calls are your revenue. Know where they come from.

If you need help setting this up properly—or want someone to audit your current tracking setup—let's talk.