Ad Spend Pacing Report in Google Sheets: Budget vs Spend
Summary
An ad spend pacing report compares each campaign's spend so far this month with the share of its monthly budget that should have been spent by today, and projects month-end spend. Agencies and in-house teams that collect daily spend in a Google Sheet can connect it and catch over- and under-pacing before the budget is gone or wasted.
On this page
Who this report is for
PPC managers and agency account teams who manage monthly budgets across Google, Meta and other platforms and already gather daily spend in a shared Google Sheet.
What the report includes
| Metric | Source field | Why it matters |
|---|---|---|
| Daily spend | Spend tab: Date, Platform, Campaign, Spend columns (your headers) | Summed month-to-date per campaign. |
| Monthly budget | Budgets tab: Month, Campaign, Budget columns (your headers) | The amount each campaign is allowed to spend this month. |
| Expected spend to date | Calculated: Budget × days elapsed ÷ days in month | What a perfectly paced campaign would have spent by now. |
| Pacing | Calculated: Spend to date ÷ Expected spend to date | Above 100% means overspending; below means budget will be left unused. |
| Projected month-end spend | Calculated: Spend to date ÷ days elapsed × days in month | Where the campaign will land if the daily rate holds. |
How to build it in Better Analyst from Google Sheets
- Share the Google Sheet with sheets@betteranalyst.com. Viewer access is enough; the connector never edits your sheet.
- In Better Analyst, open Connectors, choose Google Sheets, paste the sheet URL and click Connect. Better Analyst checks the sharing, reads the tabs and syncs the data.
- Keep daily spend in one tab (one row per date and campaign) and budgets in another, using identical campaign names.
- Ask for pacing by campaign as of yesterday, with projected month-end spend and a flag for anything outside 90–110%.
Questions to ask
- “As of yesterday, how is each campaign pacing against its October budget?”
- “Which campaigns will overspend by month end at the current daily rate?”
- “How much daily spend does each under-paced campaign need for the rest of the month to hit budget?”
- “Show pacing by platform for each client.”
Sample output
Sample data for illustration, not real account data.
| Campaign | Monthly budget | Spend to date | Expected to date | Pacing | Projected month-end |
|---|---|---|---|---|---|
| Search - Brand | $6,200 | $4,480 | $4,000 | 112.0% | $6,944 |
| Search - Generic | $15,500 | $8,700 | $10,000 | 87.0% | $13,485 |
| Meta - Prospecting | $9,300 | $6,120 | $6,000 | 102.0% | $9,486 |
Charts to use
- Pacing by campaign (Bullet chart or bar with 100% line): Each campaign's pacing with a 100% reference and a 90–110% band.
- Cumulative spend vs budget line (Line chart): Daily cumulative spend against the straight-line budget for the month.
Keep it up to date
Run the pacing check as a daily scheduled task delivered to Slack each morning, or add an alert that fires when any campaign's pacing goes above 110%.
Further reading
Frequently asked questions
How do I calculate ad spend pacing?
Can Better Analyst pull spend directly from Google Ads or Meta?
Should pacing be linear?
Related reports
GA4 UTM Campaign Report: Source, Medium and Campaign Results
Report on UTM-tagged campaigns in GA4 by session source, medium and campaign name: sessions, key events and revenue, plus how to catch broken tagging.
GA4 Monthly Client Report for Agencies (Template + Fields)
What to put in a monthly GA4 client report: traffic, engagement, key events and revenue versus last month and last year, plus how to automate it per client.
Budget vs Actual Report in Google Sheets: Category Variance
Build a budget vs actual report from Google Sheets tabs: monthly variance in dollars and percent by category, year-to-date totals, and what to flag.