Auto-rules can no longer go blind: campaign statuses now sync fully and honestly
Closed a gap that made some active campaigns invisible to pause rules — the status sync stopped at the first 500 campaigns per account, and activation tools didn't update the local status.
We found and closed a serious gap in auto-rule protection.
What was wrong. Pause rules skip campaigns that the local database shows as
paused — to avoid pointless Meta calls. But the local status itself was updated
with gaps:
- The periodic status sync only read the first 500 campaigns of an account. In large accounts, older campaigns dropped out of the sync forever — their local status froze.
- Some activation tools (the re-test carousel, the "Enable adsets" button, trading-window auto-activation, activate rules) turned campaigns on in Meta but did not update the local status.
As a result, a campaign could be genuinely running and spending budget while
pause rules saw it as "paused" — completely outside protection, silently, with
no trace in the logs. At the moment of discovery, 66 campaigns were in this
state.
What's changed:
- The status sync now pulls the complete list of active campaigns and adsets from Meta (filtered and paginated — the 500 limit is gone) and sets the status honestly: a campaign counts as running only when it is on and has at least one active adset.
- Every activation tool updates the local status immediately — the campaign is visible to rules from the first second, without waiting for the next sync.
- A safety net inside the rules themselves: if a campaign looks paused in the database but has fresh spend in recent hours, the cache is not trusted and the rules evaluate it anyway.
All campaign statuses in the database were re-verified against Meta as a
one-time pass.