Cost per qualified call dashboard for CallRail and Google Ads

By General Input

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.

Integrations

  • CallRail
  • Google Ads

Type

App

Categories

  • Marketing
  • Operations

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.

Related prompts

Explore more prompts
Marketing scoreboard for JobNimbus lead sources and ad spendWeekly wasted ad spend review board for Google AdsSpot weak Google Ads headlines and get replacements draftedBuild every client's monthly marketing report in one clickMorning call review queue for CallRail leads and spamCallRail tracking number manager for multi client agenciesWeekly lead source ROI report for Workiz and Google AdsDaily Google Ads budget pacing alerts in SlackDaily Google Ads performance digest in SlackSync qualified HubSpot leads to a Google Ads audience daily