Key Takeaways

How Kaliber Group uses automated daily pacing alerts to catch budget overspending across 20+ ad accounts before it damages client relationships. Includes the exact pacing formula, RAG thresholds, and system architecture.

The $50 Problem Nobody Catches

A $50/day overspend on Tuesday is a rounding error. By Friday, it's $250. By month end, it's $1,500 your client didn't approve. Most agencies catch this in their weekly review — five days too late. We catch it at 10 AM the next morning.

This isn't a monitoring philosophy. It's a system we built because we got tired of the conversation every agency has eventually: "How did we overspend by 20% this month?" The answer is always the same — a campaign started over-delivering on day 3, nobody noticed until the weekly check on day 8, and by then half the monthly budget was gone.

We decided that conversation should never happen again. So we built what we call the Morning Pacing Protocol — an automated system that runs at 10 AM Singapore time, every day, across every client, and tells our team exactly where the money went yesterday and where it's heading this month.

Morning Pacing Protocol — An automated daily system that calculates pacing ratios for every active client at 10 AM SGT, classifies each by RAG status, and posts a formatted alert to the team's communication channel. Designed to catch budget anomalies within 24 hours of occurrence, not 5-7 days later at the weekly review.

The Pacing Ratio Formula

The math behind pacing is almost embarrassingly simple. That's also why it's powerful — there's nothing to miscalculate, nothing to interpret, nothing to argue about.

Pacing Ratio = MTD Actual Spend / MTD Expected Spend

Where expected spend = (monthly budget / days in month) x days elapsed.

A client with a $10,000 monthly budget on day 15 of a 30-day month should have spent $5,000. If they've spent $6,500, their pacing ratio is 130%. Simple math. But nobody does it daily across 20 clients manually, because "simple" multiplied by 20 clients, each with 3-8 active campaigns, becomes 100+ calculations before your first coffee.

The system does all of them in under 30 seconds.

The 10 AM Morning Run

Every morning at 10 AM SGT, the system executes a sequence we call the Daily Pacing Sweep:

Step 1: Pull. BigQuery queries pull month-to-date spend for every active client across Google Ads and Meta. One query per platform, not one per client — aggregated for speed.

Step 2: Calculate. For each client, compute the pacing ratio against their approved monthly budget. Also calculate yesterday's single-day spend as a percentage of daily target — this catches sudden spikes before they compound.

Step 3: Classify. Every client gets a RAG status based on calibrated thresholds. Not arbitrary color codes — these are engineered to the intervention window.

Step 4: Post. A formatted alert drops into ClickUp Chat — four columns, every client, one glance. The account manager sees their entire portfolio in a table they can scan in 10 seconds.

RAG Thresholds: Why These Numbers

RAG Thresholds — Red/Amber/Green classification bands calibrated by testing across 20+ accounts over six months. Not arbitrary: each band is set at the point where intervention at that level still prevents material budget damage for the remainder of the month.

We didn't pick these thresholds from a textbook. We calibrated them over three months of daily data across our Singapore and Indonesia portfolio.

Green: 90-110%. Normal variance. Platform delivery fluctuates daily. A campaign pacing at 105% on day 10 will probably normalize by day 20. No action needed.

Amber: 80-90% or 110-120%. Worth watching. At 115% pacing by mid-month, you're on track to overspend by 15% — that's $1,500 on a $10K budget. Not a crisis yet, but it will be if you wait five more days. The AM checks which campaigns are driving it.

Red: Below 80% or above 120%. Intervene today. At 125% pacing, something structural changed — a bid strategy shifted, a budget cap was hit and redistributed, a campaign launched with the wrong daily budget. Every day of delay costs real money.

The critical insight: these thresholds are calibrated to the point where intervention still prevents material damage. Red at day 5 means you have 25 days to correct. Red at day 25 means the damage is done. The system catches it at day 5.

Sample Morning Pacing Alert — March 15, 2026

Client MTD Pacing Yesterday Status
Pump Haircare 97% 102% GREEN
ORG 104% 98% GREEN
Castle Group 113% 125% AMBER
Wallex 88% 76% AMBER
Atlas Copco 134% 148% RED
Chello 95% 91% GREEN

Campaign-Level Drill-Down

A client-level Red is the alarm. The campaign-level drill-down is the diagnosis.

When a client flags Red, the system doesn't just say "Atlas Copco is pacing at 134%." It identifies which campaigns are responsible: "Campaign 'Brand Search EN' consumed 45% of monthly budget in 15 days. Campaign 'Competitor Terms' is pacing at 180% due to a bid strategy change on March 8."

That gives the account manager an instant, specific action item. Not "go check Atlas Copco" — which leads to 20 minutes of tab-switching across Google Ads and spreadsheets — but "go adjust the daily budget on Competitor Terms, which is the source of the overspend."

This is the difference between an alert system and a diagnostic system. Alerts tell you something is wrong. Diagnostics tell you what to do about it.

Why Daily Beats Weekly — The Compound Effect

The argument for weekly reviews sounds reasonable: "We check budgets every Monday. That's frequent enough." It isn't. Here's why.

A campaign starts over-delivering on Wednesday. It's spending 140% of daily target. Your weekly review is on Monday — five days away. In those five days, the overspend compounds:

Wednesday: +$20 over. Thursday: +$40 cumulative. Friday: +$60. Saturday: +$80. Sunday: +$100. You catch it Monday at +$100. On a $5,000 monthly budget, that's 2% of the total budget gone before you even knew.

Now imagine three clients doing this simultaneously. Or a campaign that starts over-delivering by 200% on day 2 of the month. By day 8, you've burned a quarter of the monthly budget.

Daily pacing catches the Wednesday anomaly on Thursday morning. Total exposure: $20. That's the difference — not better math, just faster math.

Budget Exposure: Daily Catch vs. Weekly Catch

Campaign over-delivering at 140% daily target starting Wednesday
Daily alert
$20
Weekly review
$100 wasted before detection
Monthly review
$500+ — too late to recover
Exposure = time between anomaly start and detection. Shorter = cheaper.

Routing to Where the Team Already Works

We made a deliberate decision about where these alerts go. Not email — nobody reads automated emails. Not a dashboard — dashboards require someone to remember to check them. Not Slack — we don't use Slack for task management.

The alerts post directly to ClickUp Chat, the same tool where our team manages tasks, communicates about clients, and tracks deliverables. The pacing alert is a message in the channel they already have open. There's no context switch, no additional login, no "I'll check it later."

This is an underrated design choice. The best monitoring system in the world fails if it requires a behavior change. Our team was already in ClickUp. So we put the alerts in ClickUp.

What We Learned Running This for Six Months

The system has been live since late 2025, running across our APAC client portfolio. A few things we didn't expect:

Under-pacing is as dangerous as over-pacing. A client pacing at 75% by mid-month will under-deliver by 25%. That's $2,500 of unspent budget on a $10K account — and a client asking "why aren't we spending what we agreed?" Under-pacing often means a campaign got paused accidentally, a payment method expired, or a disapproved ad killed delivery. The morning alert catches all of these.

The "yesterday" column prevents false alarms. A client pacing at 112% MTD but 95% yesterday is self-correcting. A client pacing at 112% MTD and 135% yesterday is accelerating. The combination of cumulative and daily signals reduces unnecessary escalations by roughly 40%.

Weekends matter. Spend patterns differ on weekends. Some industries spike (e-commerce), some dip (B2B). The system runs seven days a week including Singapore public holidays. The Saturday morning alert has caught problems that would have compounded through a two-day weekend before Monday's review.

Daily pacing alerts aren't sophisticated. They're just honest — the simplest possible math, applied automatically, every single day, before the team has a chance to forget.

Frequently Asked Questions

How do you calculate marketing budget pacing?

Pacing ratio equals month-to-date actual spend divided by month-to-date expected spend. Expected spend is calculated as (monthly budget / days in month) x days elapsed. A ratio of 100% means you're exactly on track; above 100% means overspending; below means under-delivering.

How often should you check if ad campaigns are on budget?

Daily. Weekly reviews miss anomalies that compound for five or more days before detection. A campaign over-delivering by 40% on Wednesday won't be caught until the following Monday in a weekly workflow — by then the budget damage is five times worse than if it were caught the next morning.

What is a pacing ratio in digital marketing?

A pacing ratio compares how much you've actually spent against how much you should have spent by this point in the billing cycle. A pacing ratio of 120% means you've spent 20% more than planned. It's the single most reliable early indicator of budget problems in paid media campaigns.

How do marketing agencies prevent ad budget overspending?

The most effective method is automated daily pacing alerts with RAG thresholds. Pull spend data from ad platforms daily, calculate pacing ratios per client, and flag anything outside the 90-110% green zone. Route alerts to where the team already works — not a separate dashboard. The key is catching problems when they're $20 issues, not $500 issues.

What tools automate daily budget monitoring for Google Ads and Meta?

Most agencies build this on a data warehouse like BigQuery that aggregates spend from Google Ads and Meta APIs. A scheduled script runs daily, calculates pacing ratios against approved budgets, and pushes alerts to a communication tool (Slack, Teams, or in our case, ClickUp Chat). Platform-native alerts exist but don't aggregate across clients or platforms.

What pacing percentage should trigger an alert for marketing campaigns?

Based on our testing across 20+ accounts over six months: Green is 90-110% (normal variance), Amber is 80-90% or 110-120% (monitor closely), Red is below 80% or above 120% (intervene today). These thresholds are calibrated so that intervention at the Red level still prevents material budget damage for the remainder of the month.

How do you set up automated budget alerts for a marketing agency?

You need three components: a data layer that pulls daily spend (BigQuery or similar), a calculation layer that computes pacing ratios against client-approved budgets, and a notification layer that pushes formatted alerts to your team's primary communication tool. The system should run automatically on a schedule — we use 10 AM daily — and include both MTD cumulative pacing and single-day spend to distinguish between compounding problems and self-correcting variance.

RL

Robert Lai

Founder & CEO, Kaliber Group

Built Kali, one of the first Claude-native marketing operations systems in APAC. Managing 20+ clients across Singapore and Indonesia with AI-augmented delivery pods.