TL;DR: I got tired of checking spreadsheets to see if my Google Ads campaigns were overspending. So I built AdPacer — a free Chrome extension that injects real-time budget pacing indicators directly into the Google Ads dashboard. Green, yellow, red. No API keys, no login, no data leaves your browser. Skip to the demo.
The Problem Every PPC Manager Knows
If you manage Google Ads campaigns, you've experienced this: you set a $100/day budget, and Google happily spends $187 on a Tuesday. Then on Wednesday, it spends $43. By end of month, you're technically within the 30.4x monthly cap, but your daily spend was a rollercoaster you never signed up for.
Now multiply that by 15 campaigns across 4 client accounts, and you have the daily reality of every PPC manager, freelance Google Ads consultant, and digital marketing agency in 2026.
The standard workflow looks like this:
- Export campaign data from Google Ads
- Paste into a budget pacing spreadsheet
- Calculate: (actual spend / expected spend) × 100
- Realize you're 22% over on three campaigns
- Go back to Google Ads and adjust
- Repeat tomorrow
I did this for two years. Then I thought: why am I leaving Google Ads to check if Google Ads is overspending?
What I Built
AdPacer is a Chrome extension that adds budget pacing indicators directly into the Google Ads campaign table. No new tabs, no separate dashboard, no SaaS login.
When you open your Google Ads campaign list, AdPacer reads what's already on your screen and overlays three things:
1. Color-Coded Pacing Bars
Each campaign gets a visual indicator right next to its name:
- 🟢 Green — within 10% of expected pace. You're good.
- 🟡 Yellow — 10–20% over expected pace. Worth keeping an eye on.
- 🔴 Red — 20%+ over pace. Overspend risk — take action.
2. Projected End-of-Month Spend
A small badge shows what each campaign is on track to spend by month's end, based on the current daily run rate. So instead of "$847 spent" (which means nothing without context), you see "$847 spent → projected $2,940 / $3,000 budget."
3. Browser Notification Alerts (Pro)
Configurable alerts that fire when any campaign crosses your chosen threshold. You're in another tab writing a report? AdPacer pings you: "Campaign 'Brand - US' is 23% over pace."
How It Works Under the Hood
I want to be transparent about the architecture because I think it matters for trust — especially with a tool that runs inside your ad account.
No API. No Server. No Data Collection.
AdPacer is a content script that runs on ads.google.com. It does three things:
1. Reads the DOM → campaign names, daily budgets, month-to-date costs
2. Calculates pacing → (actual_spend / expected_spend_for_today)
3. Injects indicators → colored bars + projected spend badges
That's it. There is:
- No Google Ads API connection — it doesn't use OAuth or any API tokens
- No backend server — no data is sent anywhere outside your browser
- No account login — you don't create an AdPacer account
- No tracking or analytics on your campaign data
The extension runs entirely in your browser's content script sandbox. Your campaign data never leaves the page.
The Core Pacing Logic
Here's the simplified version of the pacing calculation:
function calculatePacing(campaign) {
const today = new Date();
const daysInMonth = new Date(
today.getFullYear(), today.getMonth() + 1, 0
).getDate();
const dayOfMonth = today.getDate();
// What percentage of the month has elapsed?
const expectedPct = dayOfMonth / daysInMonth;
// What's the monthly budget cap?
const monthlyBudget = campaign.dailyBudget * 30.4;
// How much should have been spent by now?
const expectedSpend = monthlyBudget * expectedPct;
// Pacing ratio: 1.0 = perfectly on pace
const pacingRatio = campaign.monthToDateCost / expectedSpend;
// Projected end-of-month spend
const dailyRunRate = campaign.monthToDateCost / dayOfMonth;
const projectedSpend = dailyRunRate * daysInMonth;
return {
ratio: pacingRatio,
status: pacingRatio <= 1.10 ? 'green'
: pacingRatio <= 1.20 ? 'yellow'
: 'red',
projectedSpend: projectedSpend,
monthlyBudget: monthlyBudget
};
}
Language Support
One challenge was making the DOM parser work across different Google Ads interface languages. Column headers, number formats, and currency symbols all change. Currently, AdPacer supports English and Spanish Google Ads interfaces, with more languages planned.
Why Not Just Use [Existing Tool]?
Fair question. Here's where the Google Ads budget pacing tool landscape sits right now:
| Tool | Type | Cost | Real-Time | In-Dashboard |
|---|---|---|---|---|
| Manual Spreadsheet | DIY | Free | No (daily lag) | No |
| Google Ads Scripts | DIY | Free | Hourly at best | No |
| TrueClicks | SaaS | $49+/mo | Near real-time | No |
| Optmyzr | SaaS | $209+/mo | Near real-time | No |
| WordStream | SaaS | $299+/mo | Near real-time | No |
| AdPacer | Extension | Free / $19/mo | Yes | Yes |
The SaaS platforms are great — they offer full PPC management suites with audit tools, bid optimization, reporting, and more. If you already pay for one, their pacing features may cover your needs.
But if budget pacing is the specific problem you're solving, those tools are like buying a Swiss Army knife when you need a screwdriver. AdPacer does one thing, does it well, and does it where you're already working.
Zero Chrome Extensions Do This
I checked. When I built AdPacer, there were literally zero Chrome extensions on the Web Store that add budget pacing indicators inside the Google Ads interface. There are extensions for keyword research, ad preview, competitor analysis — but nothing for the most basic question a PPC manager asks every day: "Am I on pace or overspending?"
The March 2026 Problem That Made This Urgent
On March 1, 2026, Google changed how budget pacing works for campaigns with ad schedules. Previously, a weekday-only campaign on a $100/day budget would spend roughly $2,200/month (22 active days × $100).
Now Google tries to spend the full 30.4x monthly cap ($3,040) regardless of schedule. That means the same weekday-only campaign now targets $3,040 ÷ 22 days = $138.18/day — a 38% increase with zero changes from the advertiser.
Weekend-only campaigns? Even worse — up to 249% more per active day.
This made real-time pacing visibility not just nice-to-have, but essential. You can't afford to discover overspend at end of month when Google is actively redistributing budget to your active days.
Read the full breakdown of the March 2026 changes →
What's Free vs. Pro
I wanted the core functionality to be genuinely useful on the free tier, not a crippled demo:
Free (forever)
- ✅ Pacing bars (green/yellow/red) for up to 3 campaigns
- ✅ Projected end-of-month spend badges
- ✅ English and Spanish support
- ✅ No account required, no data collection
Pro ($19/month)
- Everything in Free, plus:
- ✅ Unlimited campaigns
- ✅ Browser notification alerts with configurable thresholds
- ✅ Multi-account support (coming soon)
For comparison, the cheapest SaaS alternative with pacing features is $49/month. AdPacer Pro is $19/month and lives inside your existing workflow.
Technical Decisions I'd Make Differently
Since this is dev.to, here are some honest notes on the build:
DOM parsing is fragile. Google Ads updates their UI frequently. I'm using a combination of CSS selectors and data attribute patterns to locate campaign data in the table. When Google ships a UI change, the parser can break. I've built a fallback system that detects when expected elements are missing and gracefully degrades, but it's an ongoing maintenance cost.
Manifest V3 limitations. Chrome's extension platform has moved to Manifest V3, which limits background script capabilities. The notification alert system required creative workarounds using service workers with alarms API instead of persistent background pages.
Number parsing across locales. In the US, it's $1,234.56. In Spain, it's 1.234,56 €. In India, it's ₹1,23,456.78. Parsing currency values from the DOM across locales was surprisingly complex. I ended up building a locale-aware parser that detects the format from the Google Ads interface language setting.
What's Next
The roadmap based on user feedback:
- Multi-account (MCC) support — see pacing across all accounts in one view
- Historical pacing trends — track pacing patterns over time (stored locally)
- Custom pacing rules — different thresholds for different campaigns
- More languages — French, German, Portuguese next
- Firefox support — if there's enough demand
Try It
If you manage Google Ads campaigns and spend any time worrying about budget pacing, give it a try:
Install AdPacer — Free on Chrome Web Store →
No API keys. No login. No data leaves your browser. Takes 30 seconds to install, and you'll see pacing indicators the next time you open Google Ads.
If you have feedback, feature requests, or bugs — I'm building this actively and would love to hear from PPC managers and developers who work with Google Ads daily.
Also check out our landing page at adpacer.netlify.app for more details on features and pricing.
Top comments (0)