Meta disapproves an ad and your campaign quietly stops delivering — you lose reach while you sleep. ads-monitor watches every ad account around the clock, catches disapproved and issue-flagged ads the moment they appear, and stands up a clean active replacement automatically.
The problem
Ad review never sleeps, but you do. When Meta flags a creative as DISAPPROVED or WITH_ISSUES, delivery stops immediately — often in the middle of the night, in the middle of a launch. By morning you’ve lost hours of reach and spend momentum, and someone has to notice, rebuild the ad, and rename it by hand.
How it works
Every cycle runs the same safe, deterministic loop directly against the official Meta Marketing API.
Reads ads and campaigns for each account and flags any ad whose effective status is DISAPPROVED or WITH_ISSUES.
Duplicates the flagged ad into the same ad set as a fresh active copy via the native /copies edge — reusing the original creative.
Gives every replacement a short, sequential name — ad1, ad2, ad3 — kept stable across generations.
Only after the replacement is confirmed active does it remove the old disapproved ad. Failures retry automatically next cycle.
Features
Talks straight to Meta Graph API v23.0 with your own system-user token — no third-party middleman, no per-account rental limits.
Each ad account runs as its own isolated instance with a separate state database. Add accounts without touching the others.
Every action is tracked in a local state machine. Errors, interrupted work, and delete retries resume on their own.
Short sequential names per account mean chains of replacements never grow unwieldy or trip Meta’s name-length limits.
Manually enabled ads are recognized as your intent and left alone. Archived ads are never resurrected.
Every detection, replacement, and deletion is logged, so you can always see exactly what happened and when.
Safety model
Get started
ads-monitor is a lightweight, self-hosted service. Assign it a system-user token scoped to your ad accounts and Pages, and it keeps your creatives alive — quietly, safely, on its own.