Datasheet · Ads Control report

How to read Ads control

Twice a day, someone decides how hard to run the Google Ads. This report makes that call from live data — and shows its working. Scan this page once and the report should never need explaining again.

The idea

Sell every near-term slot, at the lowest spend that gets there

Every weekday has 15–40 sales-call slots; a slot unsold by day's end is revenue gone forever. Ads buy the demand that fills them — but money spent today mostly books tomorrow, and bookings made far in advance mostly die. So the whole game is short-range: keep enough fresh demand flowing to fill today and the next working day, including the slots that cancellations keep reopening.

Failure one: spending into a full calendar

Clicks arrive, nothing near-term to book, people book far out — and calls booked 4+ days ahead complete at just 39% vs 52% for next-day. Money wasted.

Failure two: quiet ads, empty day

Slots reopen from cancellations, no demand arrives to re-sell them, and the team sits with an empty diary. The day's revenue never comes back.

The target: 75% utilization

75% of slots still sold at each day's end. The business has averaged ~58% over 90 days — only 1 day in 5 has ever reached 75%. It's a stretch target, deliberately.

Two words

Fill is what you book. Utilization is what survives.

Cancellations are the main loss: days often fill past 100% of capacity while utilization ends at 55–65%. The report aims fill near 100% and lets churn erode it to the target.

Fill aim
≈36 booked
book toward full — cumulative bookings taken for the day
Churn
−8 cancel
a typical weekday loses ~9 bookings to cancellations
Utilization
28 kept = 75%
what's still standing at day's end — the target
Why the aim isn't "book everything": the aim is worked backwards from the 75% target — slots to keep plus expected cancellations. Booking beyond it is never discouraged; the ads just aren't asked to pay for it.
The rule

Ask → level → compare with the dial

At every check the system computes the ask — bookings the ads must sell across the days they can still influence — and maps it to a spend level. Then it compares that advice with where the dial actually sits (the enabled campaigns' set daily budgets) and speaks relatively: stay, step up, ease back, turn on, or leave off.

Ask (bookings to sell)AdviceSpend band
0 – 2quietunder £150/day
3 – 9normal£150 – 450/day
10 +push£450+/day
2d

Only today + the next working day count

Weekend-aware: on a Friday the two days are Monday and Tuesday. Far-out days are out of scope because far-out bookings die.

12/17

Today closes by shift

Morning-only days stop selling at 12:00 (no morning-shift call has ever been booked after 11:00); days with an evening shift stay sellable until 17:00. From the Team Blocks rota, per day.

Two calls a day

The morning call at ~9:00 sets the level; the ~13:00 cancellation adjustment reacts to the churn the morning revealed. Both land in the decision log (and Slack, once connected).

The thresholds are v1 seeds. The ask→level cut points and the 75% target are starting values; the decision log (advice vs what happened) is the evidence base for tuning them.
The page

Seven sections, in reading order

00

North star

Utilization this week vs the 75% tick (with month and 90-day context), plus cost per booking and cost per form — the "not at any price" guardrail.

01

Now

The light: ads ON or OFF, which campaigns, budget set, spent so far today, and the level the dial is running at.

02

The call

The recommendation in one line, tagged "no change" or "action needed".

03

The maths

A card per day: booked/slots, the bar with aim marker and 75% tick, to-target, cancels expected, and what the ads must sell.

04

The record

The decision log — each daily call, the ask, where the dial was, and how the day actually ended vs 75%.

05

Why this call

The trace: the exact steps the rule walked, top to bottom, with today's numbers. It can never disagree with the banner — same maths underneath.

06

What we know

The measured facts the system is built on, each dated. A row gets added every time we learn one.

The data

Where every number comes from — and how fresh it is

SignalSourceFreshness
Calendar — slots, booked, bookable now, cancellationsSlot tracker snapshots of the booking calendarhourly
Ads on/off, set budgets, spend so far todayAttribution tracker, live from the Google Ads APIhourly (intraday spend ~3h behind)
Reported daily spend (and cost per booking / form)Google Ads daily report via the attribution tracker2 days behind — trailing guardrail, never gates the verdict
Shifts — morning / afternoon per dayTeam Blocks rotaas scheduled
Expected cancellationsTrailing 8-week per-weekday averagesrecomputed continuously
If a live feed goes stale (calendar >3h old, or no ads status check in >3h) the verdict refuses to advise — "Can't tell, data out of date" — rather than guess.
Honest limits

Four things to hold while reading

It advises — a human moves the dial

Nothing here can start, stop, or re-budget a campaign. Every change to Google Ads is made manually by the team.

~

Expected cancellations are averages

"~8 will cancel" is the weekday's 8-week norm. Real days differ — which is exactly why the check re-runs hourly and adjusts.

±

New bookings can also cancel

The ask assumes freshly-sold bookings stick. Some won't; the hourly re-check absorbs it, and tuning will price it in properly.

2d

Cost figures lag two days

Cost per booking and per form are trailing guardrails. They shape the level over weeks — they can't react to this morning.