Cost per qualified call dashboard for CallRail and Google Ads

See what every client location really pays for a qualified phone lead by blending CallRail call tracking with Google Ads spend in one shareable dashboard.

App
CallRailGoogle AdsMarketingOperationsAI ReportsResearch & Monitoring
PromptCreate

Build me a dashboard that my agency team and our clients open to see what each client location actually pays per qualified phone lead. CallRail on its own cannot blend ad spend into its reporting, so this app joins call tracking data with Google Ads spend on one screen. It is read only: nothing writes back to CallRail or Google Ads.

At the top of the page put a company picker and a date range picker. Fill the company picker from CallRail's List All Companies for the connected account, sorted by name. Give the date range picker presets for last 7 days, last 30 days, last quarter, and a custom range, defaulting to last 30 days. CallRail only retains communication records for 25 months, so cap the earliest selectable date at 25 months ago and show a clear message instead of an error if someone tries to go further back. Remember each user's last selected company and date range so the dashboard opens where they left it.

Under the pickers show four summary tiles: total calls, qualified calls, missed calls, and cost per qualified call. Cost per qualified call is total Google Ads spend for the range divided by qualified calls. Every tile also shows the change against the immediately preceding period of the same length, so a last 30 days view compares against the 30 days before it. Show the direction of the change and treat a falling cost per qualified call as the good direction.

Business rule that drives everything: a call counts as qualified only when its lead status marks it as a qualified lead and it is not flagged as spam. Spam calls are excluded from qualified counts and from all cost per qualified lead math, but they still appear in the call level drill down so clients can see what was filtered out.

Below the tiles put the main performance table, broken down by source and campaign. Fetch calls with CallRail's List All Calls for the selected company and date range, requesting the source, campaign, lead status, spam flag, duration, and caller number fields, and group the results by source and campaign. Fetch spend with Google Ads' Campaign Performance Report over the same date range, and match spend to call groups on campaign name using a trimmed, case insensitive comparison. Each row shows source, campaign, total calls, qualified calls, spend, cost per call, and cost per qualified call, with the change against the previous period alongside each metric. Sort by spend descending by default and make every column sortable.

Handle both sides of the join explicitly. A Google Ads campaign with spend in the range but no matching CallRail calls still gets its own row showing the spend against zero calls, visually flagged as wasted spend, because that is the row agencies most need to see. A CallRail source with calls but no matching ad spend, such as organic, direct, or referral traffic, also gets a row with the spend column left blank rather than shown as zero.

Clicking any row drills into the individual calls behind it. The detail view lists one row per call with date and time, duration, caller number, and lead status, plus a spam indicator, and keeps the selected company and date range from the parent view. Make it sortable by date and duration and give the user a clear way back to the summary table.

Formatting details: Google Ads returns cost in micros, so divide by one million before displaying any currency. Format durations in minutes and seconds and phone numbers in a readable form. When a row has zero qualified calls, show cost per qualified call as not applicable rather than a divide by zero result. Keep the layout clean enough to put in front of a client, since both agency staff and client stakeholders open this dashboard.

What does this prompt do?

  • Pick a client company and a date range, then see total calls, qualified calls, missed calls, and cost per qualified call at a glance, each compared against the previous period.
  • Breaks performance down by traffic source and campaign, matching your call tracking data to the ad spend behind it so every row shows spend, cost per call, and cost per qualified call.
  • Gives ad campaigns that spent money but produced no calls their own row, so wasted budget shows up instead of quietly disappearing.
  • Click any row to see the individual calls behind the number, with date, length, caller number, and lead status.

What do I need to use this?

  • A CallRail account with call tracking running for the client locations you want to report on
  • A Google Ads account with campaign spend covering the same clients
  • Lead status marked on your calls in CallRail, since the cost per qualified lead math depends on knowing which calls were real leads
  • Campaign names that roughly line up between Google Ads and CallRail, since spend is matched to calls by campaign name

How can I customize it?

  • Change what counts as a qualified call if your team uses custom lead statuses or tags instead of the standard ones
  • Adjust the default date range and the comparison window, for example month over month instead of the previous 30 days
  • Add or reorder table columns, such as average call length or a booked appointment count

FAQs

Why can I not just do this inside CallRail?
CallRail reports on calls, not on what those calls cost. It has no view of your ad spend, so it can tell you how many qualified calls a campaign produced but not what you paid for each one. This dashboard puts spend next to calls so cost per qualified lead is right there on the page.
How does it decide which calls are qualified?
Only calls marked as a qualified lead and not flagged as spam count toward the qualified totals and the cost per qualified lead math. Spam calls stay visible in the call detail view so you can see what was filtered out, but they never inflate the numbers.
How far back can I look?
CallRail keeps call records for 25 months, so the date picker stops there. Anything inside that window works, including custom ranges and comparisons against the previous period.
What happens when a Google Ads campaign has no matching calls?
It still gets its own row showing the spend against zero calls. That is often the most useful row on the page, because it is budget going out with nothing coming back.
Can I share this with clients?
Yes. It is a read only view, so nothing in it changes your CallRail or Google Ads accounts. Choose the client's company at the top and walk them through their own numbers.

Related templates

Weekly wasted ad spend review board for Google Ads

See the Google Ads search terms burning money with no conversions, decide on each one as a team, and build your negative keyword list as you go.

Google Ads
Google Sheets
App
Spot weak Google Ads headlines and get replacements drafted

See every responsive search ad ranked by spend, spot the headlines Google rates Low, and have an agent draft replacements in your brand voice.

Google Ads
Google Docs
App
Build every client's monthly marketing report in one click

See every client's traffic, ad spend and search numbers on one screen, then let an agent write and design this month's report for you to approve.

Gamma
Google Analytics
Google Ads
+2
App
Morning call review queue for CallRail leads and spam

Open one screen each morning to score yesterday's tracked calls as qualified, not a lead, or spam, and send the real leads straight to HubSpot.

CallRail
HubSpot
App
CallRail tracking number manager for multi client agencies

See every CallRail tracking number across your client accounts in one table, find the ones nobody calls, and rename, reroute, or release them in place.

CallRail
App
Weekly lead source ROI report for Workiz and Google Ads

Every Monday, match last week's ad spend to the jobs you actually booked in Workiz, then get the winners, losers, and where to move budget in Slack.

Workiz
Google Ads
Google Sheets
+1
Agentic Task

Stop guessing what a qualified phone lead costs.

Put CallRail calls and Google Ads spend on one screen and give every client a straight answer about cost per qualified lead.