Meta shows an ad on many placements: Facebook Feed, the right column, Stories and Reels, Instagram Feed, Stories and Reels, Messenger and Audience Network. When the ad does not fit one (a vertical video in the right column, say), Meta skips that placement and keeps running the ad on the others. Ads Manager shows this as a warning on the ad.
How PromoPilot checks
PromoPilot asks Meta for its preview of each live ad on every placement its ad set lets it run on: soon after the ad goes live (within 30 minutes), then once a day. Meta refuses the preview on a placement it skips and says why, and PromoPilot keeps that reason. It covers promoted posts, Create Ad ads and the ads of the campaigns you manage, wherever you launched them.
Where you see it
- The promoted post page shows a Skipped placements box with each placement and Meta's reason.
- Each ad on a campaign's page lists the placements Meta skips.
- Check placements (or Check again) asks Meta now.
- The brand owner gets a notification and an email the first time an ad skips a placement, once per placement. An ad that had been running for more than two days before PromoPilot first checked it shows its skipped placements without a notice.
What to do
The ad keeps running elsewhere. To reach a skipped placement, give the ad media that fits what Meta names (often the media's shape or length). Meta reviews an ad again when its media changes.
Threads: Meta's previews have no Threads placement, so PromoPilot cannot check it and lists it as not checked. Ads Manager shows Threads warnings.
The check_ad_placements tool and POST /api/v1/ads/placements/check/ ask Meta now and return every placement with its state and Meta's reason, plus a link to Meta's preview page for each placement that loads. GET /api/v1/ads/placements/ lists each ad's last check, and list_ads and explain_ad_status carry the skipped placements.