Daily Google Ads budget pacing alerts in Slack

By General Input

Get a Slack ping when any active Google Ads campaign is pacing more than 20 percent above or below its monthly budget. Silent on healthy days.

Integrations

  • Google Ads
  • Slack Bot

Type

Agentic Task

Categories

  • Marketing
  • Operations

Build me a daily Google Ads budget pacing watchdog that posts to Slack. It should run once per day on a cron (default 9am in my local time zone) and only send a Slack message when at least one active campaign is off pace. Healthy days should be silent.

Step 1. Pull the data from Google Ads. Use the Search Stream (Streamed GAQL Query) operation on the google-ads integration with a single GAQL query against the campaign resource that returns, for every ENABLED campaign: campaign.id, campaign.name, campaign.status, campaign_budget.amount_micros, campaign_budget.period, and month to date metrics.cost_micros. Use segments.date DURING THIS_MONTH (or an equivalent BETWEEN filter from the first of the current month through today) so cost_micros aggregates month to date. Filter WHERE campaign.status = 'ENABLED'. Divide every _micros field by 1,000,000 to get the display value in the account currency.

Step 2. Compute expected spend for each campaign. Let day_of_month = today's day number and days_in_month = the total days in the current month. Expected spend = (day_of_month / days_in_month) * monthly_budget. Actual spend = month to date cost. Variance percent = (actual - expected) / expected * 100. Also compute projected month end spend = actual * (days_in_month / day_of_month). Skip any campaign that has no monthly budget attached.

Step 3. Bucket the results. Flag any campaign whose variance is greater than the threshold (default 20 percent). Split flagged campaigns into two groups: 'At risk of overspend' (variance > +20 percent) and 'Underpacing' (variance < -20 percent). If neither group has any campaigns, exit without sending anything.

Step 4. Post one Slack alert using the slackbot integration's Send a Message operation. Target channel should be configurable, default to #paid-media-alerts. Format with Slack mrkdwn. Include a header like '⚠️ Google Ads pacing alert for <Month> <Year>' and, for each bucket, a bulleted list of campaigns with: campaign name, monthly budget, month to date spend, expected spend, variance as a signed percent, and projected month end spend. Bold the campaign name. Keep the message scannable, one line per campaign where possible.

Configurable inputs I should be able to edit on the workflow: the pacing threshold (default 20 percent), the Slack channel (default #paid-media-alerts), and the daily run time. Everything else can be inferred from my connected Google Ads and Slack accounts.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seatsPause marketing emails to escalated customers, then restore them