CallRail conversion tracking that counts booked jobs, not every ring
Your CallRail log is busy and Google Ads shows a stack of "Phone Call" conversions, yet neither tells you which campaigns put work on the schedule. Usually the pool is too small, an old source number overrides it, or every Google call posts as a win. We rebuild it so only qualified calls, with a real value, reach Google Ads and Meta, matched by click ID.
Free30 minutesNo obligation
CallRail · what breaks
What goes wrong with CallRail
- 01
Google Ads counts every call as a win
CallRail posts any website-pool call from a Google click unless a trigger filters it. Wrong numbers and vendor pitches teach Smart Bidding to buy more of the same.
- 02
Calls credited to the wrong ad
A pool too small for your peak hour gives two visitors one number, and CallRail merges them under whoever calls first. An old Google PPC source number can override the pool entirely.
- 03
No idea which calls became jobs
The booked job lives in ServiceTitan, Jobber or your shop software. Without a value sent back, Google treats a price shopper and a full replacement as equal.
- 04
Meta and GA4 tell two different stories
CallRail sends Meta every call, text and form by default, matched on phone number, so callers who found you another way can get credited to an ad they once saw. GA4 files the same calls under Unassigned.
CallRail · the fix
What changes after the fix — CallRail
Bidding learns from qualified callers
Google Ads and Meta get only calls your team scored qualified, so campaigns chase people who book.
Every call tied to the right click
Pool sized to peak traffic, competing source numbers retired, GCLID confirmed on the call record.
Job value on the conversion
Sent inside CallRail's value delay window, so return on ad spend reflects booked work, not call volume.
CallRail · architecture
What CallRail actually lets you hook into
Everything below comes from CallRail's own help center. Where its docs are unclear, we list it as something we confirm on your account.
- 1
Swap script and website pools
A snippet, direct or through Google Tag Manager, gives each visitor a pool number. CallRail suggests peak hourly visitors divided by four, minimum four. Numbers inside iframes don't swap.
- 2
Google Ads integration
Posts website-pool calls and forms by GCLID, gbraid or wbraid. Needs auto-tagging, isn't retroactive, and stops posting if you rename its conversion actions. Supports enhanced conversions for leads, not for web.
- 3
Integration triggers and call values
Filters on call duration or tag decide what posts to Google Ads and Meta. Call values go out once, after a delay you set between 4 hours and 30 days.
- 4
Meta integration (Pixel method)
Sends calls, texts and forms, matched on phone, email or fbclid. Every interaction goes unless an integration trigger filters it out.
- 5
GA4 and Microsoft Ads
GA4 gets phone_call and similar events via the Measurement Protocol, needing custom dimensions. Microsoft Ads gets Phone Call and Text Message goals by MSCLKID.
- 6
Webhooks and API v3
Pre-call, post-call, call modified (tags, scores, notes) and form submission webhooks. No webhook fires when a form is edited later, so form qualification needs another path.
CallRail · diagnose
Where CallRail tracking breaks, in the order we check
Start with the swap. If the wrong number shows on the page, nothing downstream can be right.
- 01
Does the pool number actually show?
Hard-coded numbers, iframes and caching plugins such as WP Rocket removing the snippet.
- 02
Is a source number overriding the pool?
A Google PPC source number takes precedence over the website pool, and its calls never post by GCLID.
- 03
Is the pool big enough for your peak hour?
Too few numbers and separate visitors get merged into one caller's timeline.
- 04
Is the GCLID on the record, and are triggers sane?
Auto-tagging off, a site forcing GCLIDs to lowercase, a renamed conversion action, or a trigger minimum longer than your typical call.
- 05
Are call assets counted twice?
Call Details Forwarding uses Google's own call reporting, so we confirm calls aren't also imported.
- 06
What do Meta and GA4 receive?
Whether every caller still reaches Meta unfiltered, and how many CallRail events GA4 files under Unassigned.
CallRail · prove
The QA evidence on your CallRail account
Live calls to your real tracking numbers, not CallRail's auto-test, which can report false negatives.
Source of truth
Your CallRail call log, with source, click ID, tags, qualification score and value per call, checked against booked jobs in your scheduling software
- A test call from an ad-tagged URL shows the correct pool number and the GCLID on its CallRail record.
- That call appears once in Google Ads under the intended action, dated by the ad click.
- A call under the minimum duration or tagged spam is confirmed absent from Google Ads and Meta.
- A qualified call shows once in Meta Events Manager as a CallRail Calls event, and a spam call doesn't show at all.
- Job values arrive after the value delay and match the job record.
- Qualified calls reconciled one by one over a closed month, then again at 30 days.
CallRail · free audit
What we check in the free audit
- Does the pool number actually show?
- Is a source number overriding the pool?
- Is the pool big enough for your peak hour?
- Is the GCLID on the record, and are triggers sane?
- Are call assets counted twice?
- What do Meta and GA4 receive?
Checked against
Your CallRail call log, with source, click ID, tags, qualification score and value per call, checked against booked jobs in your scheduling software
Free30 minutesNo obligation
CallRail · when not to buy
When you don't need this on CallRail
CallRail's native setup is plenty for a lot of shops, and we'll say so on the call.
- If you only run Google Ads and CallRail's conversions already line up with booked jobs, leave it alone.
- If most of your calls come from your Google Business Profile, ad matching won't help much: those callers never clicked an ad, so Google Ads has nothing to match.
- If the only fault is a pool that's too small, adding numbers inside CallRail fixes it, and you can do that yourself.
- If you don't run Meta or Microsoft ads and nobody decides from GA4, skip wiring them.
CallRail · what we deliver
The event map on CallRail
Web session with click ID
GCLID, fbclid or MSCLKID and landing page, held against the pool number CallRail assigned that visitor.
First-time call, text or form
Leading signal, kept apart from repeat callers using CallRail's first-time and repeat split.
Qualified call
The primary conversion: scored qualified or tagged by your team, above the agreed minimum duration.
Job booked
Sent with an estimated value once the appointment is confirmed in your scheduling or field service software.
Paid job value
CallRail sends each call value only once, so when the final invoice differs we restate it with a Google Ads RESTATE adjustment.
Excluded: spam, existing customers, profile calls
Kept in CallRail for reporting, never sent to ad platforms.
Written guarantee
95%+ tracking accuracy
Measured against Your CallRail call log, with source, click ID, tags, qualification score and value per call, checked against booked jobs in your scheduling software. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
CallRail questions, answered
Yes, for website-pool calls from a Google ad click with auto-tagging on. Every such call counts by default, so filter it or bidding learns from junk.
Google dates conversions by ad click, not call, and only website-pool calls with a GCLID post. Source-number calls and anything before activation won't appear.
CallRail's Google Ads integration only posts website-pool calls from a Google Ads click. A source number on your profile never qualifies, so those calls stay in your call log for reporting.
It can send a call value once, after a delay you choose between 4 hours and 30 days. We set that delay and the value source so the number reflects the job, not a guess.
CallRail's Meta setup runs through your Pixel. If leads also go to Meta server-side, one path must own each event or calls count twice.
CallRail sends GA4 events through the Measurement Protocol, and Google doesn't let it fill the default channel fields. Custom dimensions for source and campaign let you filter calls by channel, but Traffic acquisition will still show Unassigned.
More on CallRail
- CallRail attributionAttributing phone calls back to the campaign that produced them
- CallRail → Google AdsConnecting CallRail to Google Ads
- CallRail → GA4Connecting CallRail to GA4
RELATED GUIDES
Booking tools beside CallRail, and what their bookings feed
Free · 30 min
Find out which CallRail calls your ads really bought
Free30 minutesNo obligation
