Management → BM health (/app/bm-health). Only the Owner and Head see and use this page — every other role, Tech included, is kept out: BM health is about access and money (the payment method), not technical work.
What's on the screen
Each BM's card shows a “BM verification” badge (Verified, Not verified, Pending, Meta needs more info, Awaiting submission, Rejected, Revoked, Expired, Failed, Not eligible, or “not read” before the first check), five counters — “Ad accounts in BM”, “Active”, “Disabled / closed”, “Payment issue”, “Not in AdFleet” — and a table of ad accounts: status, disable reason, payment method and where it's seen from (owned by the BM, shared by a partner, seen by the token). Below it, a collapsible “Changes” list with history.
How often it checks
A BM's ad accounts are re-read every 15 minutes while at least one of them is active (not disabled/closed), otherwise every 60 minutes; BM verification every 6 hours. One paged request for the whole BM, never one per account — so even 300 accounts cost a couple dozen requests an hour. It isn't a promise of exact timing: the BM card shows “Last check: …”. When Meta's request limit is close, the check waits — launches and auto-rules come first.
The “Check now” button
Runs an extra check of this one BM right away. At most once every 2 minutes per BM, and at most 10 presses per team per 10 minutes — past that the button asks you to wait.
What triggers an alert (in-app and Telegram)
To the owner and head, once per change:
- the BM's verification status changed;
- an ad account NOT in Ad accounts got disabled, closed, an unpaid balance or a grace period — or came back active (accounts already connected in AdFleet are already alerted by the regular status check — never twice);
- any account's payment method disappeared from Meta's answer.
The very first check is the baseline — no alert on it.
What the statuses mean
Active, Disabled, Unpaid balance, Under review, Pending settlement, Grace period, Closing, Closed, Status not read yet — the same words as in Ad accounts. The disable reason is the same list of Meta's codes (ad policy violation, intellectual property review, payment risk, and so on) as there too; a code AdFleet doesn't recognize shows as “Status {code}” / “Reason: code {code}”.
What AdFleet doesn't do
Read only: it never attaches cards, tops up balances or appeals a ban — the owner does that in Meta, and the alert just buys the time to react. And, like every BM-management function: it never creates ad accounts, Business Managers or system users, never invites people, and never gives Page roles to anyone outside the BM.