Omnisend MCP Server v2

Connect your Omnisend account to AI tools such as Claude, ChatGPT, or Cursor using the Model Context Protocol (MCP).

What is MCP?

MCP is an open protocol that lets AI models securely connect to external data sources and tools. Connect Omnisend's MCP server to an AI tool such as Claude or ChatGPT to get help with your Omnisend data — from performance analysis to creating campaigns and segments.

Example prompts:

  • "Give me the performance of my email campaigns for last month. Show revenue, orders, conversion rate, click rate, open rate, and unsubscribes."
  • "Schedule an email newsletter for my email subscribers segment to go out tomorrow morning."
  • "Make a segment of contacts with zero orders, named 'Never purchased'."

Which version should I use?

⚠️

We recommend Omnisend MCP v1. We plan to merge the best of v2 into the main server at https://mcp.omnisend.com/mcp, so v1 connections pick up the improvements without any reconfiguring.


Before you connect

You need:

  • The Owner, Admin, Manager, or Partner role in Omnisend.
  • An MCP-compatible AI tool such as Claude, ChatGPT, or Cursor.

Connect a single Omnisend account (recommended)

Claude

The listed Omnisend connector is the simplest way to use Omnisend in Claude. Connect once and it works across all three Claude products: Claude, Claude Cowork, and Claude Code.

  1. Open the Omnisend MCP connector in the Claude connector directory, or in Claude go to Customize > Connectors > Add > Browse connectors and search for Omnisend MCP.
  2. Click Connect.
  3. Review the Claude access request and click Approve.
  4. Log in to Omnisend, set the access level you want to grant, and click Authorize access.
  5. Start a chat and ask a question about your Omnisend data to verify the connection.

ChatGPT

First, enable Developer mode:

  1. In ChatGPT, go to Settings > Security and login.
  2. Enable Developer mode.

Then add the server:

  1. Go to Plugins and click +.
  2. Fill in the modal:
    • Name: Omnisend
    • MCP Server URL: https://mcp.omnisend.com/v2/mcp
  3. Select I understand and want to continue, then click Create.
  4. Review the ChatGPT access request and click Approve.
  5. Log in to Omnisend, set the access level you want to grant, and click Authorize access.
  6. Start a chat and ask a question about your Omnisend data to verify the connection.

Connect multiple Omnisend brands

MCP does not officially support multiple accounts on one connection. If you manage several brands — as an agency, or a merchant running multiple stores — the workaround is to add a separate connector for each brand.

⚠️

Name connectors after the brand. "Omnisend – Example Co" is much easier to pick correctly under time pressure than four connectors all called "Omnisend".

⚠️

Use one Omnisend connector per chat. Do not enable two Omnisend connectors in the same conversation. The AI has no reliable way to tell which brand a question refers to, and can read from — or worse, write to — the wrong brand. Enable only the connector for the brand you're working on, and start a new chat when you switch brands.

⚠️

Grant read-only access to each brand connector. If the AI ever acts on the wrong connector, read-only access means the worst case is a wrong answer rather than a wrong change to a client's account. Use the read-only preset on the consent screen for each brand you connect.

Claude — custom connector per brand

Repeat these steps for each Omnisend brand you want to add:

  1. In Claude, go to Customize > Connectors.
  2. Click Add > Add custom connector.
  3. Fill in the connector modal:
    • Name: Omnisend – <brand name>, for example Omnisend – Example Co. Always include the brand name so you can tell connectors apart.
    • MCP Server URL: https://mcp.omnisend.com/v2/mcp — add a brand query parameter to keep URLs distinct, for example https://mcp.omnisend.com/v2/mcp?brand=example-co.
  4. Click Add.
  5. Next to the new connector, click Connect.
  6. Review the Claude access request and click Approve.
  7. Log in to the Omnisend account for that brand, set the access level you want to grant, and click Authorize access.

In every new chat, click + > Connectors and make sure only the connector for the brand you're working on is enabled.

ChatGPT — custom MCP server per brand

First, enable Developer mode:

  1. In ChatGPT, go to Settings > Security and login.
  2. Enable Developer mode.

Then repeat these steps for each Omnisend brand you want to add:

  1. Go to Plugins and click +.
  2. Fill in the modal:
    • Name: Omnisend – <brand name>, for example Omnisend – Example Co.
    • MCP Server URL: https://mcp.omnisend.com/v2/mcp — add a brand query parameter to keep URLs distinct, for example https://mcp.omnisend.com/v2/mcp?brand=example-co.
  3. Select I understand and want to continue, then click Create.
  4. Review the ChatGPT access request and click Approve.
  5. Log in to the Omnisend account for that brand, set the access level you want to grant, and click Authorize access.

In every new chat, click + and select the connector you want to use, or type its name — for example @Omnisend – Example Co.

Other tools — one server entry per brand

The same approach applies: add one server entry per brand, give each a distinct name and URL, authorize each against its own Omnisend account, and keep only one enabled at a time. See Other AI tools for connection details.


Other AI tools

Omnisend MCP works with any MCP client that supports remote servers, such as Cursor, OpenAI Codex, and VS Code.

The setup follows the same pattern everywhere: add Omnisend as a remote MCP server, then complete the OAuth flow when prompted — log in to your Omnisend account, set the access level you want to grant, and click Authorize access. Where you add the server differs by tool, so follow your tool's own MCP documentation for the exact steps.

Use these details wherever your tool asks for them:

SettingValue
Server URLhttps://mcp.omnisend.com/v2/mcp
Authentication methodOAuth (with dynamic client registration)
TransportStreamable HTTP

Your tool must support OAuth dynamic client registration.


How the Omnisend MCP server works

Omnisend's API is large, covering campaigns, contacts, segments, forms, templates, products, analytics, and more. Exposing every operation as a separate MCP tool would overwhelm the AI tool's context window and degrade performance.

Instead, Omnisend uses a compact tool design: a small number of generic tools that give the AI access to the entire API. Your MCP client sees seven tools:

ToolPurpose
omnisend_searchLists all available Omnisend API operations with short descriptions, each labelled with the action tool that runs it. The AI calls this first to discover what it can do.
omnisend_tool_schemaReturns the JSON Schema (input parameters, required fields, enums) and curated usage notes for an operation, so the AI knows exactly what to pass.
omnisend_referenceReturns embedded Omnisend documentation on topics such as segments, events, analytics, campaigns, contacts, email content, email templates, and automation content.
omnisend_queryRuns read operations. Never changes anything in your account.
omnisend_createRuns operations that create new records.
omnisend_updateRuns operations that modify existing records.
omnisend_deleteRuns operations that delete records.

The typical workflow: the AI calls omnisend_search to discover operations, uses omnisend_tool_schema and omnisend_reference to understand a specific one, then calls the matching action tool to run it. This keeps the context window footprint small and fixed, no matter how many endpoints Omnisend adds.

How this differs from v1

v1 exposes four tools and routes every API call — read or write — through a single execute tool. v2 splits that one tool into four, one per action, so the operation's effect is visible in the tool name the AI calls.

The action is based on what an operation does, not on its HTTP method. Read-only endpoints that use POST — analytics reports, template rendering, event metadata queries — are omnisend_query, because they return data without changing anything. This means the 47 omnisend_query operations are exactly the read-only set.


Available API operations

Through the tools above, the MCP server exposes the following Omnisend API operations. The Tool column shows which action tool runs each one.

CategoryOperationDescriptionToolMethodPath
Analyticspost_analytics_reportsGenerate campaign analytics report grouped by send dateomnisend_queryPOST/api/analytics/reports
Analyticspost_analytics_statisticsGenerate campaign analytics report grouped by event dateomnisend_queryPOST/api/analytics/statistics
Automationsget_automationsList automation workflowsomnisend_queryGET/api/automations
Automationsget_automations_idGet automation workflowomnisend_queryGET/api/automations/{id}
Automationspost_automationsCreate automation workflowomnisend_createPOST/api/automations
Automationspatch_automations_idPatch automation workflowomnisend_updatePATCH/api/automations/{id}
Automationsdelete_automations_idDelete automation workflowomnisend_deleteDELETE/api/automations/{id}
Automationspost_automations_id_copyCopy automation workflowomnisend_createPOST/api/automations/{id}/copy
Automationspost_automations_id_enableEnable automation workflowomnisend_createPOST/api/automations/{id}/enable
Automationspost_automations_id_disableDisable automation workflowomnisend_createPOST/api/automations/{id}/disable
Automationsput_automations_id_blocksReplace automation workflow blocksomnisend_updatePUT/api/automations/{id}/blocks
Automationspost_automations_id_blocks_block_id_test_emailSend test emailomnisend_createPOST/api/automations/{id}/blocks/{blockID}/test-email
Automationsget_automations_id_utmGet aggregated UTM tags for all blocksomnisend_queryGET/api/automations/{id}/utm
Automationsget_automations_id_blocks_block_id_utmGet UTM tags for an automation blockomnisend_queryGET/api/automations/{id}/blocks/{blockID}/utm
Automationsput_automations_id_blocks_block_id_utmUpdate UTM tags for an automation blockomnisend_updatePUT/api/automations/{id}/blocks/{blockID}/utm
Batchesget_batchesGet batchesomnisend_queryGET/api/batches
Batchesget_batch_idGet batch informationomnisend_queryGET/api/batches/{batchID}
Batchesget_batches_batch_id_itemsGet batch itemsomnisend_queryGET/api/batches/{batchID}/items
Batchespost_batchesCreate batchomnisend_createPOST/api/batches
Brandsget_brands_currentGet information about brandomnisend_queryGET/api/brands/current
Brandsget_brand_assets_currentGet brand assetsomnisend_queryGET/api/brand-assets/current
Brandspost_brands_currentConnect brandomnisend_updatePOST/api/brands/current
Campaignsget_campaignsList campaignsomnisend_queryGET/api/campaigns
Campaignsget_campaigns_idGet campaignomnisend_queryGET/api/campaigns/{id}
Campaignsget_campaigns_id_utmGet campaign UTM settingsomnisend_queryGET/api/campaigns/{id}/utm
Campaignspost_campaignsCreate campaignomnisend_createPOST/api/campaigns
Campaignspatch_campaigns_idUpdate campaignomnisend_updatePATCH/api/campaigns/{id}
Campaignsdelete_campaigns_idDelete campaignomnisend_deleteDELETE/api/campaigns/{id}
Campaignspost_campaigns_id_sendSend campaignomnisend_updatePOST/api/campaigns/{id}/send
Campaignspost_campaigns_id_cancelCancel campaignomnisend_updatePOST/api/campaigns/{id}/cancel
Campaignspost_campaigns_id_copyCopy campaignomnisend_createPOST/api/campaigns/{id}/copy
Campaignspost_campaigns_id_test_emailSend campaign test emailomnisend_createPOST/api/campaigns/{id}/test-email
Campaignsput_campaigns_id_utmUpdate campaign UTM settingsomnisend_updatePUT/api/campaigns/{id}/utm
Campaignspost_campaigns_id_ab_test_resumeResume A/B testomnisend_createPOST/api/campaigns/{id}/ab-test/resume
Campaignspost_campaigns_id_ab_test_stopStop A/B testomnisend_createPOST/api/campaigns/{id}/ab-test/stop
Campaignspost_campaigns_id_ab_test_winnerSelect A/B test winneromnisend_createPOST/api/campaigns/{id}/ab-test/winner
Contactsget_contactsList contactsomnisend_queryGET/api/contacts
Contactsget_contacts_idGet contactomnisend_queryGET/api/contacts/{id}
Contactspost_contactsCreate or update existing contactomnisend_createPOST/api/contacts
Contactspatch_contactsUpdate contact by emailomnisend_updatePATCH/api/contacts
Contactspatch_contacts_idUpdate contact by IDomnisend_updatePATCH/api/contacts/{id}
Contactspost_contacts_tagsBatch add tagsomnisend_updatePOST/api/contacts/tags
Contactsdelete_contacts_tagsBatch remove tagsomnisend_deleteDELETE/api/contacts/tags
Email Contentget_email_content_idGet email contentomnisend_queryGET/api/email-content/{id}
Email Contentpost_email_content_id_renderRender email contentomnisend_queryPOST/api/email-content/{id}/render
Email Contentput_email_content_idUpdate email contentomnisend_updatePUT/api/email-content/{id}
Email Templatesget_email_templatesGet email templatesomnisend_queryGET/api/email-templates
Email Templatesget_email_templates_idGet email templateomnisend_queryGET/api/email-templates/{id}
Email Templatespost_email_templates_id_renderRender email templateomnisend_queryPOST/api/email-templates/{id}/render
Email Templatespost_email_templatesCreate email templateomnisend_createPOST/api/email-templates
Email Templatespost_email_templates_importImport email template from HTMLomnisend_createPOST/api/email-templates/import
Email Templatesput_email_templates_idUpdate email templateomnisend_updatePUT/api/email-templates/{id}
Email Templatesdelete_email_templates_idDelete email templateomnisend_deleteDELETE/api/email-templates/{id}
Email Universal Layoutsget_email_universal_layoutsGet universal layoutsomnisend_queryGET/api/email-universal-layouts
Email Universal Layoutsget_email_universal_layouts_idGet universal layoutomnisend_queryGET/api/email-universal-layouts/{id}
Email Universal Layoutspost_email_universal_layoutsCreate universal layoutomnisend_createPOST/api/email-universal-layouts
Email Universal Layoutsput_email_universal_layouts_idUpdate universal layoutomnisend_updatePUT/api/email-universal-layouts/{id}
Email Universal Layoutsdelete_email_universal_layouts_idDelete universal layoutomnisend_deleteDELETE/api/email-universal-layouts/{id}
Event Metadatapost_event_metadata_queryQuery events metadataomnisend_queryPOST/api/event-metadata/query
Event Metadatapost_event_metadataCreate custom event metadataomnisend_createPOST/api/event-metadata
Event Metadataput_event_metadataUpdate custom event metadataomnisend_updatePUT/api/event-metadata
Formsget_formsList formsomnisend_queryGET/api/forms
Formsget_form_idGet formomnisend_queryGET/api/forms/{formID}
Formsget_forms_form_id_contactsGet form submitted contactsomnisend_queryGET/api/forms/{formID}/contacts
Formsget_forms_form_id_reportGet form reportomnisend_queryGET/api/forms/{formID}/report
Formsget_forms_form_id_report_periodicGet form periodic reportomnisend_queryGET/api/forms/{formID}/report/periodic
Formsget_forms_form_id_ab_setup_reportsList A/B setup reports for a formomnisend_queryGET/api/forms/{formID}/ab-setup/reports
Formspost_forms_form_id_renderRender a formomnisend_queryPOST/api/forms/{formID}/render
Formspost_formsCreate formomnisend_createPOST/api/forms
Formspatch_form_idUpdate formomnisend_updatePATCH/api/forms/{formID}
Formsdelete_form_idDelete formomnisend_deleteDELETE/api/forms/{formID}
Formspost_forms_form_id_enableEnable formomnisend_updatePOST/api/forms/{formID}/enable
Formspost_forms_form_id_disableDisable formomnisend_updatePOST/api/forms/{formID}/disable
Form A/B Setupsget_form_ab_setupsList form A/B setupsomnisend_queryGET/api/form-ab-setups
Form A/B Setupsget_ab_setup_idGet a form A/B setupomnisend_queryGET/api/form-ab-setups/{abSetupID}
Form A/B Setupspost_form_ab_setupsCreate a form A/B setupomnisend_createPOST/api/form-ab-setups
Form A/B Setupspost_form_ab_setups_ab_setup_id_startStart a form A/B setupomnisend_updatePOST/api/form-ab-setups/{abSetupID}/start
Form A/B Setupspost_form_ab_setups_ab_setup_id_winnerSelect a form A/B setup winneromnisend_updatePOST/api/form-ab-setups/{abSetupID}/winner
Form A/B Setupsdelete_ab_setup_idDelete a form A/B setupomnisend_deleteDELETE/api/form-ab-setups/{abSetupID}
Form Templatesget_form_templatesList form templatesomnisend_queryGET/api/form-templates
Form Templatesget_template_idGet templateomnisend_queryGET/api/form-templates/{templateID}
Form Templatespost_form_templates_template_id_renderRender a form templateomnisend_queryPOST/api/form-templates/{templateID}/render
Imagesget_imagesList imagesomnisend_queryGET/api/images
Imagesget_images_idGet imageomnisend_queryGET/api/images/{id}
Imagespost_imagesUpload image by URLomnisend_createPOST/api/images
Imagespost_images_uploadUpload image fileomnisend_createPOST/api/images/upload
Imagesdelete_images_idDelete imageomnisend_deleteDELETE/api/images/{id}
Product Categoriesget_product_categoriesList product categoriesomnisend_queryGET/api/product-categories
Product Categoriesget_category_idGet product categoryomnisend_queryGET/api/product-categories/{categoryID}
Product Categoriespost_product_categoriesCreate product categoryomnisend_createPOST/api/product-categories
Product Categoriespatch_category_idUpdate product categoryomnisend_updatePATCH/api/product-categories/{categoryID}
Product Categoriesdelete_category_idDelete product categoryomnisend_deleteDELETE/api/product-categories/{categoryID}
Productsget_productsList productsomnisend_queryGET/api/products
Productsget_product_idGet productomnisend_queryGET/api/products/{productID}
Productspost_productsCreate productomnisend_createPOST/api/products
Productsput_product_idReplace productomnisend_updatePUT/api/products/{productID}
Productsdelete_product_idDelete productomnisend_deleteDELETE/api/products/{productID}
Segmentsget_segmentsList segmentsomnisend_queryGET/api/segments
Segmentsget_segment_idGet segmentomnisend_queryGET/api/segments/{segmentID}
Segmentsget_segments_segment_id_statisticsGet segment statisticsomnisend_queryGET/api/segments/{segmentID}/statistics
Segmentspost_segmentsCreate segmentomnisend_createPOST/api/segments
Segmentsput_segment_idUpdate segmentomnisend_updatePUT/api/segments/{segmentID}
Segmentsdelete_segment_idDelete segmentomnisend_deleteDELETE/api/segments/{segmentID}
Referenceget_reference_topicsList reference documentation topicsomnisend_queryGET/_reference/topics
Referenceget_reference_documentationGet reference documentation by topicomnisend_queryGET/_reference/documentation

Troubleshooting

  • Cannot connect — Confirm the URL is exactly https://mcp.omnisend.com/v2/mcp, with no trailing slash unless your tool's documentation says otherwise. Check your network and firewall rules.
  • Authentication fails — Make sure your Omnisend account has the Owner, Admin, Manager, or Partner role and that the OAuth flow completes. In Cursor and VS Code, log out of the MCP server and re-authenticate before trying anything else.
  • Tools missing — Restart your AI tool and check that the correct server entry is enabled for the chat or workspace. You should see seven tools: omnisend_search, omnisend_tool_schema, omnisend_reference, omnisend_query, omnisend_create, omnisend_update, and omnisend_delete.
  • The AI answers about the wrong brand — You most likely have more than one Omnisend connector enabled in the same chat. Disable all but the one you need and start a new chat. See Connect multiple Omnisend brands.
  • "Permission denied" on a write action — You authorized read-only access. Reconnect the connector and grant write access if you need the AI to make changes.
  • Inaccurate or inconsistent answers — Start a new chat to reset the context, and be specific in your query: name the campaign, the date range, the channel.
  • Operation errors — If an API call returns an error, the AI will usually explain the issue. Common causes are insufficient permissions, invalid parameters, or rate limiting.

For product issues, contact Omnisend support.