Ad spend vs. revenue tracker

Which city is your ad money actually working in?

Our carpet cleaning client runs Google Ads and Local Services Ads in a lot of cities. Each ad account will happily report clicks and "conversions." None of them can tell you that one city turns $3,000 of ads into $20,000 of work and another barely breaks even.

This tracker pulls yesterday's spend from every account each day, lines it up with completed job revenue, and shows the answer by city.

Built for
A carpet cleaning franchise, several insurance agencies, a wedding venue
Status
Live, updated daily
Spend vs. revenue, last 30 daysExample data
City A5.8x ROAS
City B4.5x ROAS
City C2.1x ROAS
City D7.2x ROAS
Ad spend Job revenue

You: Why is City C so low?

Tracker: Spend is up 22% since the 1st, but average job size dropped from $214 to $151. More small rug jobs, fewer whole-house cleanings.

Daily

spend pulled from every ad account

By city

cost per lead and return on ad spend

3

ad platforms: Google Ads, LSA, Facebook

1 table

spend and revenue joined by city and day

Two sources that never talk to each other

The whole trick is a daily join. Spend comes from the ad platforms, revenue comes from completed jobs, and both get lined up by city and date. Once they're in one table, the questions owners actually ask ("should I pull back in this market?") take seconds instead of an afternoon in spreadsheets.

Where the numbers come from

What you spent

Google Ads

Every account under the manager login

Local Services Ads

Cost per lead, per city

Facebook Ads

Where the client runs them

What you earned

Completed jobs

Revenue by city and day, from the field software
daily

Joined

One table: spend and revenue by city, by day

Cost per lead, cost per booked job, return on ad spend.

See

Dashboard

Behind a password, works on a phone.

Ask

Plain-English questions

Claude turns the question into a database query and answers with the actual numbers.
Ad platforms know what you spent. Your field software knows what you earned. Neither one knows both.

What the owner opens in the morning

Spend and revenue for every city on one screen, the cities that aren't paying for themselves marked in red, and a box on the side for the question the table doesn't answer yet.

dashboard / spend-vs-revenue

Spend vs Revenue

Google Ads + LSA · all cities

7d30dMTDQTD
Demo data

Ad spend

$15,280

Job revenue

$72,340

Return on ad spend

4.7x

Cost per booked job

$59

Daily, last 30 days

Ad spend Job revenue
$0$1k$2k$3k$4kDay 1: spend $539, revenue $3,242Day 2: spend $571, revenue $3,523Day 3: spend $597, revenue $3,703Day 4: spend $612, revenue $3,740Day 5: spend $614, revenue $3,620Day 6: spend $488, revenue $1,867Day 7: spend $465, revenue $1,561Day 8: spend $547, revenue $2,636Day 9: spend $515, revenue $2,284Day 10: spend $487, revenue $2,001Day 11: spend $469, revenue $1,815Day 12: spend $464, revenue $1,737Day 13: spend $361, revenue $692Day 14: spend $382, revenue $692Day 15: spend $525, revenue $2,154Day 16: spend $557, revenue $2,470Day 17: spend $586, revenue $2,823Day 18: spend $607, revenue $3,163Day 19: spend $615, revenue $3,434Day 20: spend $496, revenue $2,057Day 21: spend $477, revenue $2,046Day 22: spend $561, revenue $3,482Day 23: spend $529, revenue $3,264Day 24: spend $498, revenue $2,998Day 25: spend $476, revenue $2,735Day 26: spend $465, revenue $2,511Day 27: spend $355, revenue $913Day 28: spend $371, revenue $848Day 29: spend $511, revenue $2,174Day 30: spend $543, revenue $2,155Oct 1Oct 8Oct 15Oct 22Oct 29

By city

CitySpendRevenueROAS
Riverton$4,120$23,8105.8x
Lakeview$3,380$15,2404.5x
Oak Hollow$2,910$6,120⚠2.1x
Cedar Falls$2,240$12,9605.8x
Brookside$1,650$11,8707.2x
Pine Ridge$980$2,340⚠2.4x

A demo copy of the real dashboard. Cities and numbers are made up.

It grew into other tools

The carpet cleaning client's CSR call audit report now lives in the same dashboard. We also built a market view next to it that plots spend against booked leads for each market, to check whether more spend actually bought more leads.

That's the usual pattern. The first dashboard answers one question. Then the owner starts asking it others.

What it runs on

  • Google Ads API
  • Local Services Ads
  • Supabase
  • Next.js on Vercel
  • Claude (Anthropic)

Questions we get about this one

Isn't this what Google Ads reporting is for?+

Google Ads knows what you spent and what it counts as a conversion. It doesn't know that the conversion turned into a $90 rug job instead of a $400 whole-house cleaning. That second part lives in your field software, and that's the part that tells you whether a city is worth the money.

Can the chat box make up numbers?+

It writes a database query and answers from what comes back. If the data isn't there, it says so instead of guessing.

Who is this for?+

Anyone spending real money on ads in more than one place. We've built versions for a multi-city carpet cleaning company, several insurance agencies and a wedding venue. The insurance versions are simpler: spend, clicks and conversions by date range, on one screen the agent can check from their phone.

Want one of these for your shop?

Most of what's on this page started as a 30-minute call about something that was bugging the owner. Tell us what's bugging you.