Daily Meta Ads spend anomaly alerts in Slack

Every weekday at 8am, get a Slack alert flagging runaway spend, broken tracking, and CPA drift in your Meta Ads account, with plain English next steps.

Agentic Task
Meta AdsSlack BotMarketingNotifications & AlertsDaily Digests
PromptCreate

Every weekday at 8am in my local time zone, run a spend and pacing anomaly check on my Meta Ads account and post the result to a single Slack channel.

Data pull: use Meta Ads to list the campaigns in the account, then pull yesterday's performance metrics at the account level, campaign level, and ad set level (spend, impressions, CPM, CTR, CPA, ROAS, and conversions). Also pull the last 7 days of daily metrics per campaign so the agent can compute a trailing 7 day average for spend and CPA.

Anomaly detection: for each active campaign, decide whether any of these three conditions are true, and flag it if so.

1. Runaway spend: yesterday's spend was more than 150% of that campaign's trailing 7 day average daily spend.

2. Broken tracking: yesterday's spend was above a minimum floor (default $50) but attributed conversions were zero.

3. CPA drift: yesterday's CPA was more than 50% higher than the trailing 7 day average CPA.

Skip any campaign that is still in the LEARNING phase or has fewer than 3 days of delivery history, because the baselines are unreliable there. The agent should reason about what qualifies rather than treat these rules as brittle absolutes: if a campaign has been paused most of the week or its baseline is clearly noisy, note that and move on.

Output: post a single message to a Slack channel (I will pick the channel at setup) using the Slack bot. Structure the message like this.

Header line: a red, yellow, or green status. Red if there is at least one runaway spend or broken tracking flag. Yellow if there are only CPA drift flags. Green if nothing is off.

Account summary: one line with yesterday's total spend, total conversions, blended CPA, and ROAS for the account.

Per flagged item: campaign name, anomaly type, the specific numbers that triggered it (yesterday's value vs the 7 day baseline), and a one line recommendation. Use these recommendations: 'Pause or investigate' for runaway spend, 'Check pixel and conversion setup' for broken tracking, 'Lower budget or refresh creative' for CPA drift. The agent can rewrite these to fit the situation.

If everything looks healthy, post a short green message confirming the account looks fine and list yesterday's totals so I know the check ran.

Setup inputs I should be asked for: the Meta Ads account (or accounts) to monitor, the Slack channel to post to, the send time and days, the runaway spend multiplier (default 150%), the zero conversion spend floor (default $50), and the CPA drift threshold (default 50%).

Additional information

What does this prompt do?
  • Checks yesterday's Meta Ads performance at the account, campaign, and ad set level every weekday morning.
  • Flags three specific problems: runaway spend, campaigns burning budget with zero conversions, and CPA that has drifted well above the trailing 7 day average.
  • Posts a single Slack message with a red, yellow, or green status header so you can see the state of the account in one glance.
  • Adds a one line recommendation next to each flagged campaign (pause, lower budget, or check pixel) so you know what to do next.
What do I need to use this?
  • A Meta Ads account with active campaigns and access to yesterday's performance data.
  • A Slack workspace and a channel where the alert should land.
  • About five minutes to connect both accounts and pick your thresholds.
How can I customize it?
  • Change the send time or the days it runs (for example, seven days a week instead of weekdays).
  • Adjust the thresholds that count as an anomaly, like moving runaway spend from 150% to 200% of the daily average.
  • Point the alert at a different Slack channel or a private DM, or route to more than one channel.

Frequently asked questions

How is this different from Meta's built in alerts?
Meta's built in alerts fire on single rules and do not compare a campaign to its own recent baseline. This workflow looks at each campaign's trailing 7 day average, filters out campaigns still in learning, and writes a plain English recommendation for each issue it finds.
Will it wake me up with noise on quiet days?
No. If nothing is off, you get a short green status message confirming the account looks healthy. Only real anomalies get a callout.
Can I run this on more than one ad account?
Yes. When you set it up, tell the workflow which ad accounts to check. It will roll them into the same Slack post or split them across channels, whichever you prefer.
Does it skip brand new campaigns?
Yes. Campaigns in the learning phase or with fewer than three days of data are excluded from the baseline math, because their numbers swing too much to be reliable.
Can I change the anomaly thresholds later?
Absolutely. The runaway spend multiplier, the zero conversion spend floor, and the CPA drift percentage are all exposed as settings you can tune after the workflow is generated.

Stop finding out about wasted ad spend at the end of the week.

Connect Meta Ads and Slack once, and get a health check on your campaigns in your inbox before the coffee's cold.