Back to blog
Article

Google Ads Budget Pacing: How to Track Spend Every Day with Claude

November 26, 2025
17 min read
By InsightfulPipe
On this page
Google Ads Budget Pacing: How to Track Spend Every Day with Claude

InsightfulPipe publishes this guide, and the daily check runs on its hosted Google Ads connector. Google's own budget report and the other ways to track pacing come near the end.

Last updated: 2026-10-02

Short answer: Google Ads budget pacing compares month-to-date spend with what your plan expects by today. Pacing % is spend so far divided by expected spend, times 100. To track it every day with Claude, connect Google Ads in InsightfulPipe, add its Google Ads MCP server, https://google-ads.insightfulmcp.com/, as a custom connector, and schedule one read-only prompt each morning. Plans start from $29.99 a month.

Track Google Ads budget pacing in Claude: the quick version

Six steps take you from a connected account to a pacing table every morning. Each step has its own section below, with the exact prompt.

  1. In InsightfulPipe, open Connected accounts and connect Google Ads as Read-only.
  2. In Claude, open Customize > Connectors and add https://google-ads.insightfulmcp.com/ as a custom connector.
  3. In a new chat, switch the Google Ads connector on.
  4. Paste the pacing prompt from step 3 with your monthly plan.
  5. Check one campaign against Google's budget report.
  6. Schedule the prompt for every weekday morning.

Watch: Connect Google Ads to Claude, a report and a new campaign from one prompt, 2 minutes 34 seconds

Four ways to check pacing, at a glance

Four routes cover most teams, and they differ on what they pace against, what they cover and whether they can act.

Route

Paces against

Covers

Runs each day by itself

Can change budgets

Claude with InsightfulPipe

Your plan, per campaign, shared budget or account

Every connected account, manager clients included

Yes, as a scheduled task or CLI job

Yes, through update_campaign, a per-account switch

Google's budget report and pacing insights

Google's limit: 30.4 x the daily budget

One account; the budget report skips Performance Max

No, you open them

You edit budgets yourself

Spreadsheet or Data Studio

Your plan, typed in

Accounts you connect

Data Studio emails a report on a schedule

No

Google Ads scripts

Your plan, in your JavaScript

Accounts the script reads

Yes: once, daily, weekly or monthly

Yes, if your script does it

What is the budget pacing formula?

Budget pacing divides spend so far by the spend your plan expects by now. On the morning of day 13 of a 30-day month with a $15,000 plan, the plan expects $6,000 from the first 12 days. If the account spent $5,400, it is pacing at 90%.

Expected spend      = monthly plan x complete days / days in month
Pacing %            = spend so far / expected spend x 100
Projected month-end = spend so far / complete days x days in month
Daily budget needed = (monthly plan - spend so far) / days left
Cumulative spend for a $15,000 monthly plan: after 12 days $5,400 is spent against $6,000 expected, a 90% pace whose run rate ends the month at $13,500, under Google's $15,200 cap for a $500 daily budget.

The worked example runs like this:

  • Expected: $15,000 x 12 / 30 = $6,000.
  • Projected month-end: $5,400 / 12 x 30 = $13,500, which is $1,500 short.
  • Needed from today: ($15,000 - $5,400) / 18 days = $533 a day.

Count complete days only, in the account's time zone, because Google reports each day by that clock (Google). These bands are working rules, not Google's: 95% to 105% is on track, 85% to 95% or 105% to 115% needs watching, and anything else needs a fix this week.

A straight line is the simplest expected curve. Google now pushes Search spend toward peak days, so day-to-day swings are normal. For a strong weekly rhythm, weight each day by its share of last month's spend.

Google's spending rules that change the math

Google lets most campaigns spend up to twice their average daily budget on a busy day, and never bills more than 30.4 times that budget in a calendar month (Google). Those two limits decide how far daily spend can swing.

  • Daily: up to 2x. A $500 daily budget can spend $1,000 on a busy day and less on quiet ones, so one day says little.
  • Monthly: 30.4x. 30.4 is 365 / 12, so a $500 daily budget caps the month at $15,200. To turn a monthly plan into a daily budget, divide by 30.4: $15,000 / 30.4 = $493.
  • Billed, not served. On rare days served cost passes a limit. Google bills only up to it, and the Billed cost report in Report editor shows both.
  • Mid-month changes. A budget change resets the month's cap to spend so far plus the new daily budget times the calendar days left, today included (Google). Raise the example to $533 on day 13 and the cap becomes $5,400 + $533 x 18 = $14,994, about the plan.
  • Day-of-week schedules. From June 1, 2026, a campaign that runs only on some weekdays still paces toward 30.4 times its daily budget. If it runs 15 days or fewer, it tops out at 2 x the daily budget x active days (Google). The change leaves hour-of-day schedules alone.
  • Demand-led pacing. Google says Search campaigns now spend more on peak days and less on slow ones, inside the same limits (Google).

For a weekday-only campaign, draw the expected curve over its active days only.

Google Ads Help, About spending limits: most campaigns never pay more than 2 times the average daily budget on a day, or 30.4 times it in a month.

Shared budgets, total budgets and account budgets

Pace each budget where Google enforces it. A shared budget is one average daily budget pooled across several campaigns, so pace the pool, not the campaigns inside it (Google).

  • Shared budgets. Google moves unused money to whichever campaign in the pool can spend it, so one campaign can read 140% of an even split while the pool sits at 100%. Shared budgets work in Search, Shopping, Display and Video campaigns, not Performance Max.
  • Campaign total budgets. A fixed amount over 3 to 90 days in Search, Shopping and Performance Max, and up to a year in Demand Gen and YouTube. There is no 2x daily cap, and Google spreads what is left over the days left (Google). Pace these against the flight, not the month.
  • Account budgets. Accounts on monthly invoicing can set an account budget, a cap across every campaign. When costs reach it, every ad in the account stops until the next budget starts (Google), so a campaign on pace can still go dark.

The step 3 prompt reads all three: explicitly_shared marks a shared budget, the period CUSTOM_PERIOD a total budget, and account_budget holds account budgets.

Before you start

You need five things: access to the Google Ads account, an InsightfulPipe workspace, a role that can connect accounts, a Claude plan, and your monthly plan in numbers.

  • Google Ads access. A Google login that can open the account or its manager account. Google's Read-only level can run performance reports (Google).
  • An InsightfulPipe workspace. Plans start from $29.99 a month, and Starter covers 8 connected accounts. Start a trial or compare plans.
  • A role that can connect. Owners, Administrators and Operators connect accounts and set their actions.
  • Claude. Custom connectors work on every Claude plan, and Free allows one (Anthropic). Scheduled tasks live under Scheduled in Claude's sidebar.
  • Your plan. The monthly amount per campaign, shared budget or account. Claude should never guess it from daily budgets.

Step 1: Connect Google Ads in InsightfulPipe

Step 1 links your Google Ads accounts to InsightfulPipe. Choose Read-only for a pacing check: the access step describes it as "View and report. Publish, reply and budget actions stay locked."

  1. Open Connected accounts and click Connect account.
  2. In Add an integration, find Google Ads and click Connect.
  3. Choose Read-only. The action list underneath shows what it allows.
  4. Click Continue with Google Ads, sign in with Google and select your accounts.
The InsightfulPipe access step for Google Ads: Read-only keeps budget actions locked, and campaign_performance_report and gaql are among the 37 read actions.

Client accounts under a manager appear in the list, and each becomes its own connection with its own switches, so one check covers every client. To let Claude change budgets later, an admin reconnects the account with Read & write.

Connected accounts in InsightfulPipe: each Google Ads account on its own row, with its access badge and a 96/99 actions button that opens its switches.

Step 2: Add the Google Ads server to Claude

Step 2 adds the server to Claude as a custom connector. It takes one URL and one sign-in, and how to connect Google Ads to Claude walks through ChatGPT, Claude Code and Cursor too.

  1. In Claude, open Customize > Connectors, click +, then Add custom connector.
  2. Name it Google Ads, paste https://google-ads.insightfulmcp.com/, click Continue, then Add.
  3. Click Connect, and sign in to InsightfulPipe if asked.
  4. In a new chat, click +, open Connectors and switch Google Ads on.
The Google Ads MCP page inside InsightfulPipe, with the server URL to copy and the steps to add it to Claude.

In the connector's Tool permissions, set Ads Data Query (query_data) to Always allow and Ads Execute Action (execute_action) to Needs approval. Reads then run without a click, and any change waits for yours.

A new Claude chat with the + menu open on Connectors and the Google Ads connector switched on.

Step 3: Run the daily pacing check

Step 3 is one prompt. It reads month-to-date spend and every budget, does the math from the formula section, and changes nothing. Paste it, then list your plan where the brackets are.

Use Google Ads account [CUSTOMER_ID]. Run a budget pacing check for this month.
My monthly plan, one line each: [CAMPAIGN OR SHARED BUDGET] = [AMOUNT]

1. Get cost per campaign with campaign_performance_report, from the 1st
   of this month to yesterday, in the account's time zone.
2. Read each budget through gaql with the get_campaign_budgets fields:
   amount_micros, period, total_amount_micros, explicitly_shared.
3. Read any account budget through gaql on account_budget, and any
   day-of-week ad schedule through gaql on campaign_criterion.
4. Convert micros to currency. Pace each shared budget once, as a pool,
   each total budget against its own dates, and each scheduled campaign
   over its active days.
5. For each line, show plan, spend, expected spend, pacing %, projected
   month-end, the daily budget needed, and Google's cap (budget x 30.4).
6. Flag anything under 85% or over 115%, worst first.

Read only. Do not change anything.

Claude runs each read through query_data. Costs come back in micros, millionths of the account currency, and the prompt converts them first.

Example pacing table after 12 of 30 days: Shopping at 75% is flagged first, Generic Search at 90% needs watching and Brand Search at 100% is on track, each with its projected month end and the daily budget it needs.

Two shortcuts sit on the server already. The Budget Pacing Report, one of 14 Google Ads templates Claude opens from prompts_menu, adds causes and fixes. The free Spend Pacing Monitor skill adds month-end scenarios.

Step 4: Schedule the check every morning

Step 4 puts the prompt on a timer: in Claude as a scheduled task, or from any job runner with the InsightfulPipe CLI.

In Claude. Scheduled tasks run a saved prompt hourly, daily, on weekdays, weekly or monthly, with the connectors you set up. They run remotely, so they keep their cadence even when your computer is asleep (Anthropic).

  1. In a chat, ask: "Every weekday at 8 AM, run my Google Ads pacing check."
  2. Give Claude the step 3 prompt as the task, and answer its questions.
  3. Review the name, schedule and instructions, then click Schedule.

In Cowork, the same form opens from Scheduled, then New task and Set up manually.

Claude's Create scheduled task form filled in: the name Google Ads pacing check, the pacing prompt as instructions, and a Weekdays frequency at 09:00 AM, ready to save.

Nobody watches a scheduled run, so the limit that counts sits on the server. Claude Code's routines, for example, "can use every tool from an included connector, including writes, without asking for permission during a run" (Claude Code docs). A Read-only connection keeps every budget action locked, whatever the prompt says.

From a terminal. The insightfulpipe CLI runs the same read with an API key from Settings > API Keys, under the same switches (CLI guide). Save this as pacing.json, with the IDs from insightfulpipe accounts --platform google-ads:

json
{
  "action": "gaql",
  "workspace_id": [WORKSPACE_ID],
  "brand_id": [BRAND_ID],
  "account_id": "[CUSTOMER_ID]",
  "query": "SELECT campaign.name, campaign_budget.id, campaign_budget.amount_micros, campaign_budget.explicitly_shared, metrics.cost_micros FROM campaign WHERE segments.date DURING THIS_MONTH AND campaign.status != 'REMOVED'"
}

Then schedule it, here with cron at 8 AM on weekdays, passing the key as INSIGHTFULPIPE_TOKEN. THIS_MONTH includes today's first hours, so run it early.

npm install -g insightfulpipe
insightfulpipe auth
# crontab line, 8 AM on weekdays:
0 8 * * 1-5  insightfulpipe query google-ads -f pacing.json > pacing-today.json
The Agentic CLI page in InsightfulPipe: install with npm, create an API key, then run insightfulpipe auth and insightfulpipe doctor.

How do you know the numbers are right?

Check one campaign against Google before you trust the table. Open the campaign's budget report in Google Ads and compare its cost to date with Claude's figure (Google).

  • Same dates. Google's cost to date runs through today, and the prompt stops at yesterday.
  • Same clock. Reports follow the account's time zone, while billing pages show Pacific Time.
  • Same units. 15,000,000,000 micros is 15,000 in the account currency.
  • Performance Max. It has no budget report, so compare its cost in the Campaigns table.

What to do when a campaign is off pace

Find the cause before you touch the budget. A campaign under plan with a poor cost per conversion needs fixing, not more money, and one over plan with strong returns may deserve a bigger plan.

  • Under plan: too little search volume, bids too low to win auctions, narrow targeting, disapproved ads, or less demand than the plan assumed.
  • Over plan: broad match drifting into weak search terms, a seasonal spike, a competitor leaving the auction, or Smart Bidding finding more conversions.

To change a budget from Claude, the account needs Read & write with update_campaign on. Its budget_amount sets a new daily budget, and on a shared budget it changes every campaign in the pool. Ask for a proposal first:

Use Google Ads account [CUSTOMER_ID].
For [CAMPAIGN], propose the daily budget that lands this month on [AMOUNT].
Show the current and new budget, whether the budget is shared,
and Google's new monthly cap after the change.
Do not change anything until I reply yes.

What the assistant may change, and who decides

The assistant can use only the actions an admin has switched on for each account, and a new connection starts on the careful side. That makes InsightfulPipe the safest way to let an AI agent change a Google Ads account, because each limit below is a switch.

  • 99 actions: 37 read, 59 write and 3 destructive. A pacing check needs only reads.
  • Read-only locks every write, budget changes included, until an admin reconnects the account with Read & write.
  • update_campaign is a switch. It changes budgets, bids and status. It starts on for Read & write connections, and an admin can switch it off for any account that should only report.
  • Budgets go to Google as you state them, in the account's currency, and apply at once. Needs approval on execute_action in Claude puts your click before each one.
  • The assistant is told to ask you first before it sets a campaign live, removes one or switches its bid strategy.
  • Destructive actions stay off until an admin switches them on: removing keywords, negative keywords and Customer Match members.
  • Roles hold. Members on the User role run only the enabled reads on accounts granted to them.
InsightfulPipe actions for one Google Ads account: 96 of 99 on, with read only 37 of 37, write 59 of 59 and destructive 0 of 3 until an admin switches them on.

Start a trial to set these switches on your own accounts.

Troubleshooting

Most pacing errors come from dates, units or budgets read in the wrong place, not from the connection.

  • The numbers look a million times too big. Costs arrive in micros. Ask Claude to divide by 1,000,000 before it calculates.
  • Every campaign in a shared budget looks off. Group the campaigns by campaign_budget.id and pace the pool once.
  • A manager account returns no spend. Manager accounts carry no metrics. Run the check on each client account, which InsightfulPipe connects one by one.
  • "This action is disabled for this connected account. An owner or admin must enable it for the account." The action is off for that account. An owner, admin or operator can switch it on.
  • "This account is connected read-only, so this action cannot be enabled for it. An owner or admin must reconnect it with Read & Write permissions." Expected on a pacing connection. Reconnect with Read & write only if Claude should change budgets.
  • The report is empty. Widen the dates and check the customer ID. Then confirm the campaigns ran this month.

Other ways to track Google Ads pacing

Google's own tools cost nothing, and several paid tools and templates track pacing too, each against something different.

  • Google's budget report shows each campaign's monthly spending limit, forecast and cost to date. Budget pacing insights, on the account's Insights page, label campaigns "Limited by budget", "Budget remaining" or "On track" (Google). Both pace against Google's limit, not your plan.
  • Google Ads scripts run your own JavaScript once, daily, weekly or monthly (Google).
  • Sheets and Data Studio. Supermetrics and Windsor.ai publish Google Sheets pacing templates. Looker Studio is now Data Studio, and it can email a report on a schedule (Google).
  • Pacing tools. Optmyzr, TrueClicks, Adalysis and NinjaCat, where shape.io now redirects, sell budget monitoring with pacing alerts.
  • AI tools. Markifact and Ryze AI publish their own AI pacing workflows. The best Google Ads MCP servers compares 12 servers from each vendor's own documentation.

InsightfulPipe puts the pieces together: your plan, every connected account and a daily schedule, with the option to act inside switches your admin sets.

HAVE QUESTIONS?

Frequently asked questions

Google Ads budget pacing compares month-to-date spend with the spend your plan expects by today. InsightfulPipe lets Claude read both from your accounts and return pacing %, projected month-end spend and the budget needed to land on plan.

Related articles

Best SEO MCP Servers in 2026 (14 Compared)
Blog

Best SEO MCP Servers in 2026 (14 Compared)

The best SEO MCP server in 2026 is InsightfulPipe. It puts Search Console, Bing Webmaster Tools, DataForSEO, a web crawler and PageSpeed Insights on one hosted connection, with every action switched per account.

Read article
Best LinkedIn MCP Servers in 2026 (13 Compared)
Blog

Best LinkedIn MCP Servers in 2026 (13 Compared)

The best LinkedIn MCP server in 2026 is InsightfulPipe. It is the only server compared here that runs your Company Page, your profile and your LinkedIn Ads on LinkedIn's official API, with every action switched on or off per account, from $29.99 a month.

Read article
How to Connect LinkedIn Ads to Claude
Blog

How to Connect LinkedIn Ads to Claude

InsightfulPipe connects LinkedIn Ads to Claude with one LinkedIn sign-in and one URL: add https://linkedin-ads.insightfulmcp.com/ as a custom connector in Claude and click Authorize access. From $29.99 a month.

Read article
Best LinkedIn Ads MCP Servers in 2026 (14 Compared)
Blog

Best LinkedIn Ads MCP Servers in 2026 (14 Compared)

The best LinkedIn Ads MCP server in 2026 is InsightfulPipe. It builds LinkedIn campaigns, lets your admin switch each of its 28 actions on or off for every ad account, and covers 49 more platforms on the same plan, from $29.99 a month.

Read article
How to Connect Meta Ads to Claude
Blog

How to Connect Meta Ads to Claude

To connect Meta Ads to Claude, connect Facebook Ads in InsightfulPipe, add https://facebook-ads.insightfulmcp.com/ as a custom connector in Claude, and click Authorize access.

Read article
Best GA4 MCP Servers in 2026 (13 Compared)
Blog

Best GA4 MCP Servers in 2026 (13 Compared)

The best GA4 MCP server in 2026 is InsightfulPipe. It is the only hosted server with dedicated write actions in all nine areas of the GA4 Admin API, lets you switch each of its 62 actions on or off per property, and keeps its 12 destructive actions off until an admin switches them on.

Read article

Ready to connect your data?

Join hundreds of agencies and brands using InsightfulPipe to connect marketing data to AI.

Start a trial today.