How do I get an alert the moment Meta rejects one of my ads or it stops delivering?

TofuAnswer by the Tofu team · checked

A red twin-bell alarm clock on a dark background with orange petals fanned out above it like ringing

For instant alerts, use Meta's effective_status ad account webhook, announced July 21, 2026. It tells your server when an ad is rejected or stops delivering. A small service then forwards each event to Slack or email. You need a Meta developer app and an ad account admin token. Without code, you still get Meta's rejection emails, which you can't switch off, and Error notices in Ads Manager when an ad isn't delivering. Automated rules can't watch for rejections, and Meta's webhook docs promise no delivery time or retries.

Ask Tofu next

Pick a question and Tofu Ads Agent answers it in chat.

As of November 2026.

What does Meta tell me on its own when an ad is rejected or stops?

More than most people notice, but only by email and inside Meta's tools.

What happensWhat Meta sendsWhere you see it
Meta rejects an adAn email with a link to Business Support Home, where you find the reasonYour inbox and Business Support Home
Something blocks an adAn Error notice. Meta's example: "your ad is not delivering because its image contains too much text"Business notifications in Ads Manager and Business Suite
Delivery or results change suddenlyA Warning. Meta's example: "your campaign faced a sudden change in delivery or performance"Business notifications
Your ad account hits its spending limitYour ads pause and you get a notification, "but ads will still be listed as active"Notifications, not the Delivery column

Business notifications have an Ads category for "status updates, results and tips for your ads," and you can click a notice to fix the issue. The last row matters too: a status check alone won't catch a spending limit pause, so keep that notification on. Meta also re-reviews running ads, and "you won't be notified unless it's found to violate our Advertising Standards." Why Meta rejects ads that ran fine covers that case.

How do I make sure those notices reach me?

Check two places.

  1. Ads Manager. Click the menu icon, select All tools, then under Advertise select Ad account settings and click Notification settings. You can click Edit email address or Edit mobile number, then expand each category and turn on the notification types you want. Selections save automatically.
  2. Meta Business Suite. Go to Settings, select Notifications, and under Business updates switch each type on or off for Business Suite or email.

You can't mute the important ones. Meta says it "will still send you important notifications outside of these settings," and names ad approvals and rejections, payment issues and invoices. Neither page says whether these settings apply to you alone or to everyone on the account, so ask each person who owns launches to check theirs.

What changed in July 2026?

On July 21, 2026, Meta's developer blog showcased its ad account webhooks and announced new ones as "available immediately." The new one for this job is effective_status: "Receive an alert when an ad is not being delivered due to delivery blocks, policy rejections, or sync delays." Webhooks push a notice to your server, so you no longer have to poll the Marketing API, and Meta says this avoids a hit to your rate limit.

The webhooks that matter here:

Webhook fieldWhat triggers it, per Meta's docsWhat the notice includes
effective_statusA campaign, ad set or ad changes delivery status, "such as a rejection, a delivery block, or a return to active delivery"The object's ID and level only, not the new status
with_issues_ad_objectsAn object "entered an issue state during operation or publishing"An error_code, error_summary and error_message

Meta also offers in_process_ad_objects (an object finished publishing or processing), creative_fatigue and ad_recommendations. A separate subscriptions webhook fires when an object is created or updated, or when a metric such as spend crosses a threshold you set. The blog says it covers "over 88 notifications related to ad object changes and insights updates."

How do I send Meta's webhook alerts to Slack?

Meta doesn't post to Slack. It sends an HTTPS POST to a callback URL you run, and your code passes it on. Meta's setup guide, in short:

  1. Build the endpoint. It must answer Meta's verification request by echoing hub.challenge, or "the subscription is not created." Check each POST's X-Hub-Signature-256 header against an HMAC-SHA256 of the body, keyed with your app secret.
  2. Subscribe your app. Call POST /<APP_ID>/subscriptions with an app access token, your callback URL, a verify token and the fields, such as effective_status and with_issues_ad_objects.
  3. Connect each ad account. Call POST /act_<AD_ACCOUNT_ID>/subscribed_apps with an admin token for that account (an admin user or a system user). Repeat for every account.
  4. Look up the status. The effective_status notice "tells you that the effective status changed but not the new value." So call the ad with effective_status, configured_status and review_feedback, as Meta's guide shows (the Ad reference lists that last field as ad_review_feedback). Meta says configured_status tells a pause you made apart from a problem, and review_feedback gives the rejection reason.
  5. Post to Slack. Slack's incoming webhooks are "a way to post messages from apps into Slack." They need a Slack app.

An ad's effective_status can be ACTIVE, PAUSED, DELETED, PENDING_REVIEW, DISAPPROVED, PREAPPROVED, PENDING_BILLING_INFO, CAMPAIGN_PAUSED, ARCHIVED, ADSET_PAUSED, IN_PROCESS or WITH_ISSUES. Alert on DISAPPROVED, WITH_ISSUES and PENDING_BILLING_INFO, and ignore pauses where configured_status shows someone on your team did it.

Permissions. Connecting an account needs the ads_management permission, and receiving events needs ads_read or ads_management. For your own ad accounts, standard access to those permissions is enough. An agency managing clients' accounts needs advanced access, approved through App Review. Meta labels its default Limited access tier "for development only."

What Meta doesn't promise. Meta says webhooks notify you "immediately," but its docs give no delivery time, retry rules or delivery guarantee. They also don't say whether a spending limit pause changes effective_status, though the effective_status guide lists raising the account spend cap as one example response. So "the moment" means as soon as Meta sends it.

Can Meta's automated rules alert me instead?

Only for numbers, not for rejections. Rules have a Send notification only action, which "sends a notification to yourself or other people on your ad account." Rule notices show up in the business notifications menu in Ads Manager. A subscriber you add must be an admin on the ad account with full control of the business portfolio.

But Meta's list of rule conditions has no delivery status or ad review condition. The closest you can get is a rule on Impressions for a time range you choose, set to notify you when an ad that should be running gets almost none. Meta allows up to 250 rules per ad account, and rules can't run on ads about social issues, elections or politics.

Is there a tool that does this without code?

Some monitoring tools post Meta problems to Slack for you. Our roundup of AI tools that alert you in Slack compares them. To watch for settings Meta changes on its own, see tools that alert you to Advantage+ changes.

What do I do when the alert comes in?

Sources (19)

Related answers