MMetadata /docs
Docs/Tools/add_extensions_to_native_campaign

add_extensions_to_native_campaign

Attach existing library extensions (sitelinks, callouts, etc.) to a native-structure Google Ads / Microsoft Ads campaign, so they actually serve when the campaign launches.

Writes extensions

Creates or changes something in the account. Put it behind whatever review your agent uses.

What it does

Attach existing library extensions (sitelinks, callouts, etc.) to a native-structure Google Ads / Microsoft Ads campaign, so they actually serve when the campaign launches.

                ALSO KNOWN AS: add extension to campaign, attach sitelink, put sitelink on campaign, link extension to campaign, enable extension for campaign

                KEYWORDS: add, attach, link, bind, extension, sitelink, callout, campaign, native, native structure, channel first, google ads, microsoft ads, bing

                WHY THIS EXISTS: creating an extension only puts it in the account library — it is NOT attached to any campaign and will not serve. This tool performs the binding.

                WHEN TO USE:
                - "Add our 'Book a Demo' sitelink to campaign X"
                - "Attach these callouts to the native search campaign"
                - After create_google_sitelink_extension, when the user wants it live on a specific campaign

                WHEN NOT TO USE:
                - The campaign uses the Precision / METADATA structure — this tool covers native-structure campaigns only and will tell you so. Precision binds extensions per-creative and has no tool yet; direct the user to the platform UI.
                - You do not have the extension's internal id → call list_extensions first
                - Removing an attachment → use remove_extensions_from_native_campaign

                INPUTS (all required):
                - campaign_id:    wizard campaign id
                - channel:        GOOGLE_ADS or MICROSOFT_ADS
                - extension_ids:  internal ids from list_extensions (the `id` field, NOT `externalId`)

                BEHAVIOUR: additive — existing attachments are preserved. Safe to re-run; already-attached ids are reported and left alone.

                ORDERING CAVEAT: add_and_edit_native_campaign_elements rebuilds the channel's native containers and CLEARS extension attachments. Attach extensions AFTER any native element edits, or re-attach afterwards.

                EXAMPLE:
                add_extensions_to_native_campaign(campaign_id=8421, channel="GOOGLE_ADS", extension_ids=[551, 552])

Arguments

ArgumentTypeNotes
campaign_id integer required The wizard campaign id.
channel string required Search channel. Ad extensions are a search-channel-only concept.
one of: GOOGLE_ADS, MICROSOFT_ADS
extension_ids array required Internal library extension ids from list_extensions. These are the `id` field, NOT `externalId` (the ad platform's own id).

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":"add_extensions_to_native_campaign","arguments":{"campaign_id":0,"channel":"GOOGLE_ADS","extension_ids":[]}}}'

Response

No recorded response. This tool writes to the account, 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 extensions tools:

All 160 tools · machine-readable index