Update Meta Placements (Facebook / Instagram)
update_meta_placementsSet the channel-level Meta placement default of an existing DRAFT wizard campaign's Facebook or Instagram channel: automatic placements (Meta decides where ads serve) or a manual list of surfaces (Feed, Stories, Reels, ...).
Placements are where the ads serve inside Meta's networks. This is the same
"Placements" control the platform UI shows in the Facebook/Instagram section of
the campaign draft page. The campaign MUST already have the channel enabled
(via create_campaign / add_and_edit_campaign_elements).
WARNING: DRAFT-ONLY: the platform rejects the edit once the campaign is Launching/Launched.
KEYWORDS: meta, facebook, instagram, threads, placements, placement, feed, stories,
reels, explore, search results, profile feed, automatic placements, manual placements,
advantage+ placements, where ads serve, surfaces, channel settings, campaign settings
WHEN TO USE:
- Serve ads only on specific surfaces (e.g. Instagram Reels and Stories)
- Switch a channel back to automatic placements (Meta optimizes delivery)
- The user asks where their Facebook/Instagram ads will appear
PARAMETERS:
- campaign_id: the wizard campaign ID (required)
- channel: FACEBOOK | INSTAGRAM (required — the campaign channel to edit)
- mode: AUTO | MANUAL (required). AUTO = automatic placements, clears any
manual set. MANUAL = serve only on the placements listed.
- placements: array of placement codes, required when mode=MANUAL, ignored
for AUTO. Facebook surfaces: FB_FEED, FB_STORIES, FB_REELS,
FB_SEARCH_RESULTS. Instagram surfaces: IG_FEED, IG_PROFILE_FEED,
IG_EXPLORE, IG_EXPLORE_HOME, IG_STORIES, IG_REELS, IG_SEARCH_RESULTS.
Threads: TH_THREADS_STREAM.
PLACEMENT RULES (enforced; violations return a descriptive error):
- Companion rules: FB_STORIES and FB_SEARCH_RESULTS require FB_FEED;
IG_PROFILE_FEED, IG_SEARCH_RESULTS and IG_EXPLORE require IG_FEED;
IG_EXPLORE_HOME requires IG_EXPLORE; TH_THREADS_STREAM requires IG_FEED.
- An INSTAGRAM channel accepts IG_* placements only.
- A FACEBOOK channel always accepts FB_* placements. IG_* / TH_* placements
on a FACEBOOK channel additionally need the account's unified-placement
rollout (feature flag CORE_META_IG_PLACEMENT_ON_FB) — the platform rejects
them on accounts without it.
- IG_PROFILE_FEED is not available on Lead Gen (CPL) campaigns.
- AUTO is rejected while the channel has ad groups (per-ad-group setups keep
manual placements).
This tool sets the campaign-wide default for the channel. Per-ad-group
placement overrides exist in the platform UI but are not editable through
chat yet — send users to the campaign page for per-ad-group customization.
EXAMPLES:
Instagram channel, Reels + Stories + Feed only:
update_meta_placements({"campaign_id": 12345, "channel": "INSTAGRAM",
"mode": "MANUAL", "placements": ["IG_FEED", "IG_STORIES", "IG_REELS"]})
Facebook channel back to automatic placements:
update_meta_placements({"campaign_id": 12345, "channel": "FACEBOOK", "mode": "AUTO"})
RESPONSE: {success, campaign_id, channel_id, channel, campaign_status,
applied:{mode, placements}, previous?, errors?}
`previous` echoes the channel's placement state before the edit.
INTEGRATION WITH OTHER TOOLS:
- Use search_campaigns_by_names / get_campaign_by_wizard_id to find the campaign
- The channel is enabled by create_campaign or add_and_edit_campaign_elements
- Reddit placements (feed/conversations) are a different system: use
update_reddit_channel_settings for thoseInput Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | AUTO = automatic placements (Meta decides, clears the manual set). MANUAL = serve only on the placements listed in `placements`. | |
| channel | Yes | Which campaign channel to edit. Meta placements only exist on Facebook and Instagram channels. | |
| placements | No | Placement codes to serve on. Required when mode=MANUAL (at least one); ignored for AUTO. Companion rules apply — see the tool description. | |
| campaign_id | Yes | The unique identifier of the wizard campaign |