Every PI firm with five or more lead vendors has the same problem: every vendor reports differently. Vendor A sends a weekly CSV. Vendor B has a portal you log into. Vendor C sends a PDF summary on the first of the month. Your Google Ads account has its own dashboard. CallRail has another one. And your case management system tracks leads in a format that doesn't match any of them.
The result is that your “lead source tracking” is actually ten different tracking systems stitched together manually — and the cost per case number you report is always an approximation, never a fact.
Here's how to build a consistent lead source tracking system that works regardless of how each vendor reports.
Step 1: Define Your Source Taxonomy First
Before you touch any vendor reporting format, define your internal source taxonomy. This is the canonical list of lead sources your firm uses — the exact names and categories that every lead will be tagged to in your system.
Your taxonomy should have two levels: source category and source name.
- Category: Paid Search — Source: Google Ads – Brand, Google Ads – Non-Brand, Bing Ads
- Category: Paid Social — Source: Facebook / Instagram, TikTok
- Category: Lead Aggregators— Source: Vendor A, Vendor B, Vendor C (use the vendor's actual name)
- Category: Pay-Per-Call — Source: CallRail – Google, CallRail – Direct, specific call vendors
- Category: Television — Source: TV Vendor Name – Market
- Category: Referral — Source: Attorney Referral, Client Referral
- Category: Organic / Web — Source: Organic Search, Direct
Every lead that enters your firm should map to exactly one source in this taxonomy. Build the taxonomy before worrying about vendor formats — because your taxonomy is the standard that vendor data gets translated into, not the other way around.
Step 2: Standardize How Sources Enter Your CMS
Your case management system is the master record for leads. The source field in your CMS needs to be a structured, standardized field — not a free-text note, not a dropdown that says “Internet,” and not a field that some intake coordinators fill out and others skip.
In LeadDocket, this typically means configuring your lead source dropdown to match your taxonomy exactly and training your intake team to select the correct source for every lead. For leads that come in via web form or API, the source field should be passed automatically from the form or integration — not entered manually.
In Salesforce, HubSpot, or Lawmatics, the same principle applies: a structured picklist field, mapped to your taxonomy, required for every lead record. Not optional. Not freeform.
If you have years of legacy data with inconsistent source tagging, flag it as a known data quality issue and establish a clean cutoff date. Historical data can be cleaned over time — but don't let imperfect history prevent you from building a clean system going forward.
Step 3: Build a Source Reconciliation Process for Vendor Reports
Different vendors will report leads differently. Your job is to translate their reporting into your taxonomy — not the other way around.
Here's how to handle the most common formats:
Vendor Portals and PDFs
Export or manually record the monthly lead count and spend by vendor. Map the vendor name to your source taxonomy. If a vendor sends leads from multiple sub-sources (e.g., a directory that covers both auto accident and premises liability), consider whether to split them in your taxonomy or keep them aggregated under the vendor name.
CSV Exports
CSVs are the easiest to work with. The key step is mapping the vendor's lead identifier (usually a name + phone number or a unique lead ID) back to the lead record in your CMS, and confirming the source field was set correctly when the lead entered. If leads came in via an API feed from the vendor, that mapping should already be automatic. If not, the CSV reconciliation step catches mismatches.
Google Ads and Meta (Facebook) Ads
Ad platform reporting maps to your taxonomy at the campaign level. “Google Ads – Brand” corresponds to your brand search campaigns. “Google Ads – Non-Brand” covers generic personal injury terms. The source names in your CMS should match this structure so ad spend can be allocated accurately to the right source.
If you use UTM parameters on your web forms — which you should — those parameters can automatically populate the lead source field in your CMS or CRM when a web lead submits. That removes manual entry for web-sourced leads entirely.
CallRail
CallRail assigns tracking numbers by source. If configured correctly, a call from a tracking number associated with your Google Ads campaign will pass the source through to your CMS automatically via CallRail's integration. The configuration requires mapping each tracking number to the correct source in your taxonomy — but once it's done, call-sourced leads flow in with accurate attribution.
Step 4: Build a Monthly Reconciliation Ritual
Even with good systems, discrepancies happen. A vendor reports 45 leads but your CMS shows 43 from that source. A Google Ads lead came in via a form but the source field shows “Direct.” These gaps accumulate into reporting errors if you don't catch them monthly.
Build a simple monthly reconciliation process:
- Pull your CMS lead count by source for the prior month
- Compare to each vendor's reported lead count for the same period
- Flag discrepancies greater than 5% for investigation
- Record vendor spend by source for the same period
- Calculate cost per lead and cost per case by source using reconciled numbers
This process is what marketing directors at well-run PI firms do every month. It takes about two to three hours manually. With RevenueScale's revenue intelligence integrations pulling vendor data and CMS data together automatically, the same reconciliation takes closer to 15 minutes — because the system flags the discrepancies and you review them rather than building the comparison from scratch.
Pull CMS Lead Count
Lead count by source for the prior month
Compare to Vendor Reports
Match against each vendor's reported lead count
Flag Discrepancies
Investigate gaps greater than 5%
Record Spend
Vendor spend by source for the same period
Calculate Metrics
Cost per lead and cost per case using reconciled numbers
Step 5: Lock Down Your Source Fields Going Forward
The biggest enemy of clean lead source data is entropy. New intake coordinators enter source names differently. A new vendor gets added without a taxonomy entry. Someone starts typing “Goog” in a freeform field instead of selecting “Google Ads – Non-Brand.”
Lock this down with:
- Required structured source fields — no blanks, no freeform entry
- A defined process for adding new sources to the taxonomy
- Quarterly audits of your source field data to catch drift
- Training documentation for intake staff on source selection rules
80% of PI firms still track marketing ROI manually in spreadsheets — and a lot of that manual work exists because source data is inconsistent enough that it can't be trusted for automated reporting. Fixing the upstream taxonomy and field discipline is what makes automation possible downstream.
The Payoff
When your source taxonomy is clean, your CMS fields are structured, and your vendor reconciliation is consistent, cost per case by source becomes a number you can produce in minutes — not hours. That's when the conversation with your managing partner changes from “I think Vendor A is performing well” to “Vendor A's cost per case is $1,200 against our $1,800 target — here's why I want to increase their budget.”
Ready to see what clean lead source tracking looks like connected to a revenue intelligence platform? See how RevenueScale standardizes vendor data across formats — and produces cost per case by source automatically.
Related guide: See our complete guide to lead source tracking for law firms — the 4-level attribution chain, 8 data points, and 5-step tracking system every PI firm needs.
Related guide:For the foundational guide that frames every post in this cluster, seeRevenue Intelligence for Personal Injury Law Firms: The Definitive Guide — the category thesis, the Four Intelligence Layers, and the path to Level 3 maturity.