Free template · Google Sheets + Apps Script · Project 05

I automated the most anxious 15 minutes of my workday.

A budget pacing alarm for paid media. It checks every campaign each morning and only speaks up when one drifts, with the day it runs out and the daily budget that lands it on target.

PACING METERDATA THROUGH —
Pacing meter
—
—
—
01 / Monitor

Every campaign, one board.

This is the same math as the sheet, running in your browser. It starts with five fictional clients. Import your own exports or connect your sheet and it becomes your board. Nothing leaves your browser.

Data through — Sample data
Connect platforms
—Click a row for the burn chart and the alert text
02 / Alerts

Quiet when it's fine. Loud when it isn't.

At 9 AM the sheet checks every campaign. Inside the threshold, nothing is sent. Outside it, you get one short message per campaign that says what to change.

Rings when a connected source brings in a new problem.
03 / Connect

Plug every platform into one alarm.

Your Google Sheet is the hub. Google Ads and Meta can fill it on their own every morning; everything else comes in as a daily export. Connect the sheet here and this page becomes a live view of all of it.

The hub

Your Google Sheet

Setup + Spend in, Pacing + alerts out. The 9 AM trigger emails or Slacks the owner.

Spend→Pacing→Alarm
04 / How it works

Six formulas. No black box.

Everything is a plain Sheets formula you can read and change. The worked numbers below use the campaign selected on the board: —.

  1. Copy the sheetOne click. Or open the .xlsx in Google Drive.
  2. Fill SetupOne row per campaign: budget, flight dates, owner.
  3. Feed SpendPaste exports, or let the Google Ads and Meta connectors do it.
  4. Add the scriptExtensions ▸ Apps Script ▸ paste Code.gs.
  5. Turn on alertsPacing Alarm ▸ Turn on daily alerts. Done.
05 / Get it

Free. Copy it, break it, make it yours.

If it saves you a morning, tell me on LinkedIn what you'd add next. The weekly summary email and weekday weighting are on my list.

sample clients are made up, the math isn't

Campaigns (the Setup tab)

One row per campaign. The campaign name must match the name in your spend data exactly.

ClientPlatformCampaignBudget $StartEndAlert ±%ActiveDelete

Import a platform export

Export a campaign report broken down by day, with campaign name and amount spent, as CSV or Excel. Meta, Google Ads, TikTok, LinkedIn, Pinterest, Snapchat, Reddit and Microsoft Ads layouts are recognised; anything else you map by hand. The file is read in your browser and never uploaded.

Are you sure?

Connect