Back to Blog
Source Intelligence8 min read2026-04-02

How to Use Call Tracking for PI Marketing Attribution: From Phone Calls to Cost Per Case

Without call tracking, every inbound call looks the same — no source, no channel, no attribution. Here's how to configure CallRail for a PI firm so every call connects to a signed case and a cost per case.

How to Use Call Tracking for PI Marketing Attribution: From Phone Calls to Cost Per Case

A PI firm spending $280K/month across Google Ads, TV, and three lead aggregators recently audited their attribution data. The finding: more than half their signed cases had no source attached. Not because the leads arrived without a channel — but because every channel rang the same phone number.

Without call tracking, every inbound call looks identical. You know someone called. You don't know whether they came from Google Ads, a lead aggregator, organic search, or a billboard. No source means no cost per case by channel. No cost per case means budget decisions based on guesswork.

Call tracking solves the source attribution problem at the call level. This guide covers how it works, how to configure it correctly for a PI firm, and how to connect call data all the way to cost per case.

Why Phone Call Attribution Is the Biggest Gap in PI Marketing Data

PI firms run spend across Google Ads, Local Services Ads, lead aggregators, TV, Facebook, and SEO. Most of those channels deliver leads through inbound calls — to the same number. Your call log tells you volume. It does not tell you source.

That gap is structural. When you can't tie a call to a channel, you can't tie spend to signed cases at the source level. Cost per case by channel becomes impossible to calculate — so comparisons between vendors become guesswork.

Most firms patch this with intake questioning: “How did you hear about us?” The answer gets logged inconsistently — and when it is logged, callers often say “Google” regardless of whether they clicked a paid ad, found an organic listing, or saw a Local Services result. That data is too noisy to drive budget decisions.

Call tracking replaces manual questioning with automated, channel-level attribution that doesn't depend on the caller's memory or intake consistency.

The Call Attribution Gap at a $250K/Month Firm

Calls With Source Data

~40%

When relying on intake questioning

Calls With Source Data

~95%

With proper call tracking configured

Budget Allocated Incorrectly

$35K+/mo

Estimated from attribution blind spots

How Call Tracking Works

Call tracking platforms like CallRail assign a unique phone number to each marketing channel or campaign. When a caller dials that number, the platform logs the source before routing the call to your intake line. Your intake team answers normally — no different number, no different call flow. In the background, every call is tagged with the channel, campaign, or keyword that generated it.

Two methods handle different channel types:

  • Static number tracking:One unique number per channel. TV uses Number A. Google Ads uses Number B. Each aggregator gets its own number. Simple setup, reliable high-level attribution.
  • Dynamic number insertion (DNI):A JavaScript snippet swaps the phone number displayed on your website based on how the visitor arrived. A Google Ads click shows a different number than organic search — enabling campaign-level and keyword-level attribution without multiple static numbers.

Most PI firms need both: static numbers for offline channels (TV, radio, direct mail) and DNI for digital channels where campaign-level data matters.

Setting Up CallRail for PI Attribution

CallRail is the most common call tracking platform in PI marketing because it integrates directly with Google Ads, LeadDocket, and the case management systems most PI firms already use. Here's how to configure it for clean attribution.

Step 1: Create a Tracking Number for Each Channel

Build a number pool that maps to every active marketing channel. At minimum, you need separate tracking numbers for:

  • Google Ads (one per campaign type if spend justifies it; at minimum, branded vs. non-branded)
  • Google Local Services Ads
  • Each lead aggregator
  • Organic search / website (for DNI)
  • TV and radio (one per station or creative)
  • Facebook and social ads
  • Direct mail and print

Name each number in CallRail exactly as you label lead sources in your CRM. If LeadDocket says “Google Ads — Brand,” CallRail should use the identical string. Mismatched labels are the most common cause of attribution drift when you try to reconcile data months later.

Step 2: Install Dynamic Number Insertion on Your Website

CallRail's DNI snippet goes in the <head> of every page on your site. It reads UTM parameters or referrer data from the visitor's session and swaps your static phone number for the appropriate tracking number.

This requires consistent UTM tagging on your paid campaigns. Every Google Ad URL needs utm_source, utm_medium, and utm_campaign values. With those in place, CallRail automatically tags each call with campaign data — no manual matching required.

Step 3: Connect CallRail to Your Case Management System

Call data needs to reach the system where you track signed cases — LeadDocket, your CRM, or both. CallRail supports direct integrations with LeadDocket, Salesforce, HubSpot, and Filevine via API or webhook.

When a call comes in, CallRail creates a lead record in LeadDocket with the source pre-populated. That tag follows the lead through intake, case signing, and settlement — so cost per case by channel calculates automatically, without manual data assembly.

One detail that breaks this: source name mismatches. If CallRail pushes “Google Ads” but your CRM field expects “Google Paid,” records won't reconcile when you run attribution reports months later. Standardize the strings before you go live.

Call Attribution Chain: From Ad to Cost Per Case
Marketing ChannelGoogle Ads, LSA, TV, aggregator, or organic search fires the call
Tracking NumberCallRail captures source, campaign, and keyword before routing to intake
IntakeCall connects to intake; source tag auto-creates a CRM record
Signed CaseAttribution tag follows the lead from prospect to retainer
Cost Per CaseTotal channel spend ÷ signed cases attributed = CPC by source

The Four Call Tracking Mistakes That Corrupt Your Attribution Data

Call tracking is only as accurate as its configuration. These four mistakes are the most common — and the most expensive to discover late.

1. Sharing Tracking Numbers Across Campaign Types

Running branded and non-branded Google Ads through one tracking number blends two fundamentally different lead types. Branded calls — people searching your firm's name — convert at 3–5x the rate of non-branded calls and produce a significantly lower cost per case. When they share a number, your “Google Ads” cost-per-case figure is an average of both. It's useless for optimization.

2. Inconsistent Source Tagging for Non-Tracked Calls

Referrals, repeat clients, and direct dials don't go through your tracking numbers. Intake still needs to log a source for those calls. If that tagging is inconsistent, your attribution report grows an “unknown” bucket that makes channel comparisons unreliable. Call tracking handles the volume — intake discipline handles the gaps.

3. Misaligning the Attribution Window

A call on March 1st may not become a signed case until March 18th. If you match March spend to March signed cases, you're calculating on misaligned data. Use a rolling 60-to-90-day window that accounts for the lag from first call to signed retainer — otherwise, your cost-per-case figures will always be off.

4. Using Raw Call Count Instead of Qualified Calls

Call tracking counts everything — hang-ups, wrong numbers, spam, calls outside your practice area. Dividing channel spend by raw call volume understates your actual cost per lead. Configure CallRail to flag calls by duration (60 seconds minimum is the standard threshold for a genuine PI inquiry) and run your attribution math against qualified call count only.

What Proper Call Tracking Changes About Your Vendor Portfolio

When call attribution is correctly configured and connected to your case management system, you can calculate cost per case by channel on a rolling basis — not estimated from partial data, not pulled from vendor-provided reports. That changes how you manage your marketing portfolio in concrete ways.

Here's what the comparison looks like for a firm spending $250K per month before and after connecting call tracking to case outcomes:

Without Proper Call Tracking

  • Cost per lead by channel (from vendor reports)
  • Intake team manually asks source question (~40% accurate)
  • Budget decisions based on lead volume and CPL
  • No way to compare channels by cost per signed case
  • Vendor negotiations lack independent data

With Call Tracking + CMS Integration

  • Cost per case by channel, updated continuously
  • 95%+ of calls attributed automatically at source level
  • Budget decisions based on signed case economics by channel
  • Branded vs. non-branded Google performance separated
  • Vendor review backed by independent cost-per-case data

Connecting Call Tracking Data to Cost Per Case: The Math

Once the data is connected, the formula is straightforward. For each channel:

  • Total channel spend (rolling 90 days)
  • ÷ Signed cases attributed to that channel in the same window
  • = Cost per case for that channel

Cost per case — not cost per call, not cost per lead — is the number that should drive budget decisions. A channel generating calls at $150 each with a 3% conversion rate costs $5,000 per signed case. A channel at $300 per call with a 12% conversion rate costs $2,500 per signed case. Without call attribution tied to outcomes, you'd allocate to the first channel and cut the second.

What Connected Call Attribution Reveals (Example: $250K/mo Firm)

Without call attribution, Aggregator B's $4,800 cost per case looks identical to Aggregator A's $1,900 — both show up as “leads.” At 20+ cases per month, that $2,900-per-case gap is real money. Connected attribution surfaces it. Spreadsheet tracking buries it.

How RevenueScale Connects CallRail to Cost Per Case Automatically

Wiring up CallRail to your case management system is a one-time technical task. Maintaining it — reconciling attribution as campaigns change, auditing for source drift, updating labels when aggregator contracts shift — is the ongoing problem most marketing directors don't have bandwidth for.

RevenueScale's multi-channel attribution dashboard connects CallRail to your LeadDocket or CRM records automatically. When a call arrives, the source tag flows from call to intake to signed case. Cost per case by channel updates continuously — not at month-end when the spend is already gone.

The firms that see 15–20% marketing ROI improvement within 90 days are typically the ones getting clear channel-level cost-per-case data for the first time — and moving budget accordingly. Call tracking is the prerequisite. Connected attribution is what makes it actionable.

If your firm is making channel budget decisions without reliable cost-per-case data by source, start by asking whether your call attribution is actually working. Book a demoand we'll show you what connected attribution reveals about your current channel mix.

Related guides:

See it in action

Discover how RevenueScale tracks cost per case from click to settlement.

Book a Demo

Want to see Revenue Intelligence in action?

See how RevenueScale connects your marketing spend to case outcomes — so you can cut waste, scale winners, and prove ROI to partners.