MMetadata /docs
Docs/Tools/remove_offers_from_campaign

remove_offers_from_campaign

Remove offers — Lead Gen forms OR Landing Pages — from one or more channels in an existing campaign.

Destructive campaigns

Deletes, archives, launches or moves budget. Do not give an agent this one without a human gate.

What it does

Remove offers — Lead Gen forms OR Landing Pages — from one or more channels in an existing campaign.

                Use this tool to detach a named offer from a channel (e.g. remove "Demo Request Form"
                from FACEBOOK, or "Pricing LP" from GOOGLE_ADS). The offer type (Lead Gen vs Landing
                Page) and its IDs are resolved internally — you only need the channel type and the
                offer name. This is the single offer-removal tool (it replaced the Lead-Gen-only
                remove_leadgen_offer_from_campaign).

                Works on both campaign structures. On a Channel-First / Native (N×N×N) campaign the
                offer is cleared from EVERY WizNativeAdContainer native ad that references it
                (leadGenFormId / landingPageId), channel-wide — the ad is kept, and any container
                then left with no asset at all is dropped. To remove an offer from only ONE
                container/row, use add_and_edit_native_campaign_elements.modify_containers instead.
                On Precision/METADATA it uses the legacy per-offer delete.

                KEYWORDS: remove, delete, offer, lead gen, landing page, form, channel, campaign

                WHEN TO USE:
                - User wants to remove a specific offer (Lead Gen form or Landing Page) from a channel
                - User wants to clean up offers from one or more channels
                - Multiple offers across multiple channels can be removed in a single call

                RESPONSE:
                - Returns the refreshed campaign state plus a removal_results list with one
                  entry per requested removal recording its success or error. ALWAYS check
                  removal_results — a partial failure (e.g. one of two names not found) still
                  returns normally, so report only what actually came back successful.

                REQUIRED PARAMETERS:
                - campaign_id: Campaign ID (numeric identifier)
                - channel_offers: Object mapping channel type → list of offer names to remove

                CHANNEL TYPES: FACEBOOK, INSTAGRAM, GOOGLE_ADS, LINKEDIN, MICROSOFT_ADS, REDDIT

                EXAMPLES:

                Remove a Lead Gen form from FACEBOOK and a Landing Page from GOOGLE_ADS:
                remove_offers_from_campaign({
                    "campaign_id": 42545,
                    "channel_offers": {
                        "FACEBOOK": ["Demo Request Form"],
                        "GOOGLE_ADS": ["Pricing LP"]
                    }
                })

                INTEGRATION WITH OTHER TOOLS:
                - Use get_campaign_by_wizard_id to inspect current offers per channel before removing
                - Use search_campaigns_by_names to find the campaign ID

Arguments

ArgumentTypeNotes
campaign_id integer required The unique identifier of the campaign
channel_offers object required Map of channel type to list of offer names (Lead Gen form or Landing Page) to remove. Example: {"FACEBOOK": ["Demo Form"], "GOOGLE_ADS": ["Pricing LP"]}

Request

curl
curl -s -X POST https://mcp-server.metadata.io/mcp \
  -H "Authorization: $METADATA_PAT" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-11-25" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"remove_offers_from_campaign","arguments":{"campaign_id":0,"channel_offers":{}}}}'

Response

No recorded response. This tool can delete, archive, launch or move budget, so it is never executed to build these docs. The request above is still the exact shape to send. Nothing on this page is invented.

Other campaigns tools:

All 160 tools · machine-readable index