Omnisend integrationOmnisend logo

Omnisend integration for AI agents.

Omnisend integration for AI agents with secure authentication and server-side credential injection. Open Connector runs the OAuth, seals the token in an encrypted vault, and serves Omnisend tools to your agent over MCP or a typed API — credentials injected server-side, every call audited, nothing leaving your infrastructure. Open source (AGPL-3.0) and self-hostable.

What your agents can do

Real Omnisend actions, managed and audited.

Your user connects Omnisend once; your agent can then manage Omnisend contacts, campaigns, segments, automations, events, products, orders, templates, webhooks, and marketing analytics — scoped to the OAuth permissions you grant and the tool allowlist you configure. Every action is least-privilege and written to a tamper-evident audit trail.

  1. 1

    Your user grants Omnisend access once (OAuth) — the token lands in the vault.

  2. 2

    Your agent calls a tool over MCP or the typed API; Open Connector injects the credential server-side.

  3. 3

    Every routed call appends a hash-chained audit record — nothing leaves your infra.

Tools & triggers

Supported Omnisend tools.

64 tools are generated from the published Omnisend catalog. Descriptions are plain text; each action remains subject to its configured authentication and tool allowlist.

Showing 64 tools. All published catalog entries are included in this page's server-rendered HTML.

Delete automation workflow
Delete a single automation workflow by ID. This operation is idempotent — deleting a non-existent automation returns a success response. **Scopes:** `automations.write`
Automations
Delete campaign
Delete a campaign. **Scopes:** `campaigns.write`
Campaigns
Batch remove tags
Removes the specified tags from multiple contacts. **Scopes:** `contacts.write`
Contacts
Delete email template
With this endpoint you can delete email template by ID. **Scopes:** `email-templates.write`
Email Templates
Delete universal layout
With this endpoint you can delete a universal layout by ID. **Scopes:** `email-templates.write`
Email Universal Layouts
Delete image
With this endpoint you can delete an image by ID. **Scopes:** `images.write`
Images
Delete product category
With this endpoint you can delete product category. **Scopes:** `products.write` <br><a href="https://www.postman.com/omnisend-api/workspace/omnisend/overview" target="_blank">Check POSTMAN documentation</a>
Product Categories
Delete product
Delete product by ID <br><a href="https://www.postman.com/omnisend-api/workspace/omnisend/overview" target="_blank">Open Postman collection</a>
Products
Delete segment
Permanently deletes a segment by its unique identifier. The segment must not be in a building state to be deleted. If the segment is currently being built, a `409 Conflict` error is returned. **Scopes:** `segments.write` **Rate Limiting:** This endpoint is rate limited to 100 requests per minute.
Segments
List automation workflows
List automation workflows with filtering, sorting, and cursor-based pagination. **Scopes:** `automations.read` **Pagination:** This endpoint uses cursor-based pagination. - Use the `paging.cursors.after` value from the response to get the next page - Use the `paging.cursors.before` value to get the previous page - The `paging.hasMore` field indicates if more results are available - Maximum page size is 250 items. Default: 100
Automations
Get automation workflow
Get a single automation workflow by ID. **Scopes:** `automations.read`
Automations
Get UTM tags for an automation block
Retrieve UTM tracking tags for a specific send-action block. Missing or cleared tags are returned with their default values. **Scopes:** `automations.read`
Automations
Get aggregated UTM tags for all blocks
Retrieve UTM tracking tags for all send-action blocks in an automation. Each block's tags include default-value synthesis for missing fields. **Scopes:** `automations.read`
Automations
Get batches
Get batches **Scopes:** `products.read`, `contacts.read`, `events.read` <br><a href="https://www.postman.com/omnisend-api/workspace/omnisend/overview" target="_blank">Open Postman collection</a>
Batch
Get batch information
Get batch information **Scopes:** `products.read`, `contacts.read`, `events.read` <br><a href="https://www.postman.com/omnisend-api/workspace/omnisend/overview" target="_blank">Open Postman collection</a>
Batch
Get batch items
Get batch items **Scopes:** `products.read`, `contacts.read`, `events.read` <br><a href="https://www.postman.com/omnisend-api/workspace/omnisend/overview" target="_blank">Open Postman collection</a>
Batch
Get information about brand
With this endpoint you can get brand's information. **Scopes:** `brands.read` <br><a href="https://www.postman.com/omnisend-api/workspace/omnisend/overview" target="_blank">Open Postman collection</a>
Brands
List campaigns
List campaigns with filtering, sorting, and cursor-based pagination. **Scopes:** `campaigns.read` **Pagination:** This endpoint uses cursor-based pagination. - Use the `paging.cursors.after` value from the response to get the next page - Use the `paging.cursors.before` value to get the previous page - The `paging.hasMore` field indicates if more results are available - Maximum page size is 250 items. Default: 100
Campaigns
Get campaign
Get a single campaign by ID. **Scopes:** `campaigns.read`
Campaigns
Get campaign UTM settings
Get UTM tag settings for a campaign. The response shape is the same for all campaign types: `tags` is populated for regular campaigns, `variants` for A/B campaigns. The absent field is omitted. **Scopes:** `campaigns.read`
Campaigns
List contacts
Returns a paginated list of contacts filtered by the provided query parameters. **Scopes:** `contacts.read` **Filter restrictions:** - `tag` and `status` cannot be used together in the same request. - `updatedAtFrom` cannot be combined with `email`, `phone`, `status`, `segmentID`, or `tag`.
Contacts
Get contact
Returns the contact with the specified ID. **Scopes:** `contacts.read`
Contacts
Get email templates
With this endpoint you can get a paginated list of email templates. **Sorting:** Use `sort` and `direction` to control the order of results. Supported sort fields: `createdAt` (default), `name`. Supported directions: `asc`, `desc` (default). **Filtering:** Use `nameContains` to filter templates by name (case-insensitive partial match, max 200 characters) **Pagination:** This endpoint uses cursor-based pagination for efficient traversal of large datasets. - Use the `paging.cursors.after` value from the response to get the next page - Use the `paging.cursors.before` value from the response to get the previous page - The `paging.hasMore` field indicates if more results are available - Do not use both `after` and `before` parameters simultaneously - Maximum page size is 100 items (default 50) - If `limit` is less than 1 or greater than 100, returns 400 Bad Request **Scopes:** `email-templates.read`
Email Templates
Get image
With this endpoint you can get a single image by ID. **Scopes:** `images.read`
Images
List images
With this endpoint you can get a paginated list of images for a brand. **Sorting:** Supported sort fields: `createdAt` (default), `name` Supported directions: `asc`, `desc` (default) **Filtering:** Use `nameContains` to filter images by name (case-insensitive, partial match) **Pagination:** This endpoint uses cursor-based pagination for efficient traversal of large datasets. - Use the `cursors.after` value from the response to get the next page - Use the `cursors.before` value from the response to get the previous page - The `hasMore` field indicates if more results are available - Do not use both `after` and `before` parameters simultaneously - Maximum page size is 250 items (default 100) **Scopes:** `images.read`
Images
Get product category
Get product category by ID. **Scopes:** `products.read` <br><a href="https://www.postman.com/omnisend-api/workspace/omnisend/overview" target="_blank">Check POSTMAN documentation</a>
Product Categories
List product categories
List products categories **Scopes:** `products.read` <br>Guide: <a href="https://api-docs.omnisend.com/docs/how-to-sync-products-catalog-categories" target="_blank">Sync products catalog, categories</a> <br><a href="https://www.postman.com/omnisend-api/workspace/omnisend/overview" target="_blank">Check POSTMAN documentation</a>
Product Categories
Get product
Get product by ID **Scopes:** `products.read` <br><a href="https://www.postman.com/omnisend-api/workspace/omnisend/overview" target="_blank">Open Postman collection</a>
Products
List products
List products **Scopes:** `products.read` <br>Guide: <a href="https://api-docs.omnisend.com/docs/how-to-sync-products-catalog-categories" target="_blank">Sync products catalog, categories</a> <br><a href="https://www.postman.com/omnisend-api/workspace/omnisend/overview" target="_blank">Open Postman collection</a>
Products
Get segment
Returns a segment by its unique identifier. **Scopes:** `segments.read` **Rate Limiting:** This endpoint is rate limited to 100 requests per minute.
Segments
Get segment statistics
Returns statistics for a segment, including the total number of matching contacts. **Scopes:** `segments.read`
Segments
List segments
List segments with sorting and cursor-based pagination support. **Scopes:** `segments.read` **Pagination:** This endpoint uses cursor-based pagination. Use the `after` cursor from the response to get the next page, or the `before` cursor to get the previous page. Do not use both `after` and `before` parameters simultaneously. **Sorting:** - Only single-field sorting is supported. You cannot sort by multiple fields. - Available sort fields: `createdAt` (default), `name`. - When sorting by `name`, segments are sorted lexicographically (case-sensitive). - Sort parameters are only required on the first request. Subsequent requests using a cursor will automatically use the sort settings embedded in the cursor. **Cursor Behavior:** - Cursors are self-contained and include all parameters needed for pagination. - Once you have a cursor, you only need to pass the cursor for subsequent pages. - If sort parameters are provided with a cursor, they must match the cursor's sort settings. - Cursors may become invalid if the underlying data changes significantly (e.g., the referenced segment is deleted). **Rate Limiting:** This endpoint is rate limited to 100 requests per minute.
Segments
Update campaign
Update a campaign draft. **Scopes:** `campaigns.write`
Campaigns
Update contact by email
Updates the contact matching the provided email address. **Scopes:** `contacts.write`
Contacts
Update contact by ID
Updates the contact with the specified ID. **Scopes:** `contacts.write`
Contacts
Update product category
Update product category by ID. **Scopes:** `products.write` <br><a href="https://www.postman.com/omnisend-api/workspace/omnisend/overview" target="_blank">Check POSTMAN documentation</a>
Product Categories
Generate report
Returns aggregated marketing analytics grouped by message send date. Covers delivery, engagement, and revenue attribution metrics for campaigns and automations. Supports optional dimensions (timestamp, channel, activity), filters, and up to 4 queries per request. **Scopes:** `analytics.read`
Reports
Generate report
Returns aggregated marketing analytics grouped by event date (when opens, clicks, orders actually occurred). Covers delivery, engagement, revenue attribution, and audience growth metrics. Requires a timestamp dimension. Supports a rich set of dimensions (client, click, subscription, deliverability) and up to 4 queries per request. **Scopes:** `analytics.read`
Statistics
Copy automation workflow
Create a copy of an existing automation workflow. The copy is always created in a disabled state, regardless of the source automation's status. The request body is optional. When provided, you can specify a custom name for the copy. When omitted (or when name is empty), the copy is named "Copy of: <original name>". **Scopes:** `automations.write`
Automations
Disable automation workflow
Disable an automation workflow. Once disabled, the workflow stops accepting new trigger events. Use `contactsInWorkflow` to control what happens to contacts currently progressing through the workflow: - `keep`: contacts remain and continue through the remaining blocks until completion. No new contacts enter. - `exit`: all contacts are immediately removed from the workflow. Contacts who have not yet received their messages will not receive them. Disabling an already-disabled automation is idempotent — returns the current state without side effects. **Scopes:** `automations.write`
Automations
Enable automation workflow
Enable an automation workflow. Once enabled, the workflow starts processing trigger events in real time. The request body is optional. Use `enrollExisting` to also enroll contacts who already qualify at the time of enabling. When the body is omitted (or `enrollExisting` is omitted or false), only future trigger events are processed. Enabling an already-enabled automation is idempotent — returns the current state without side effects. **Scopes:** `automations.write`
Automations
Create batch
Batch operations allow for multiple actions of a similar type to be executed in a single request. Utilizing the batch endpoint is recommended to avoid hitting rate limits and to enhance overall performance. Creating batches is an asynchronous process that initiates the creation or updating of the specified items. * POST batch operations to create multiple items simultaneously. * PUT batch operations to apply multiple updates to multiple items. Each batch operation can include up to 100 actions. The required scopes depend on the type of batch operation being performed. **WARNING**: Before sending a batch of **events**, ensure there are no automations configured in Omnisend that could send messages to customers based on the imported data. This could result in duplicate messages being sent to customers. **Scopes:** `products.write`, `contacts.write`, `events.write` <br><a href="https://www.postman.com/omnisend-api/workspace/omnisend/overview" target="_blank">Open Postman collection</a>
Batch
Connect brand
With this endpoint you can connect your site to Omnisend. Note it's only possible to connect store with [oAuth flow](https://api-docs.omnisend.com/reference/oauth). **Scopes:** `brands.write` <br><a href="https://www.postman.com/omnisend-api/workspace/omnisend/overview" target="_blank">Open Postman collection</a>
Brands
Create campaign
Create a new campaign draft. **Scopes:** `campaigns.write`
Campaigns
Resume A/B test
Resume a stopped A/B test. Automatic winner selection becomes eligible to pick this campaign again. Available only while the campaign is in `stopped` status. **Scopes:** `campaigns.write`
Campaigns
Stop A/B test
Halt the A/B test winner-selection phase. While stopped, automatic winner selection no longer considers this campaign until it is resumed. Available only while the campaign is in `started` status. **Scopes:** `campaigns.write`
Campaigns
Select A/B test winner
Manually pick a variant as the winner. The chosen variant is routed into the send pipeline immediately. **Scopes:** `campaigns.write`
Campaigns
Cancel campaign
Cancel a campaign and mark it as canceled. **Cancelable source states:** `scheduled` or `paused` (all channel types), or `started` (email only). Any other status (e.g. `draft`, `sent`, `canceled`) returns 409. Supported cases: - Any scheduled or paused campaign (all channel types) - Started email campaigns **Note:** For started campaigns, cancellation is best-effort — messages already in flight may still be delivered. **Scopes:** `campaigns.write`
Campaigns
Copy campaign
Create a draft copy of an existing campaign, copying content, audience, and settings from the original. The copied campaign name will be prefixed with "Copy of: ". **Scopes:** `campaigns.write`
Campaigns
Send campaign
Submit a campaign draft for sending. Supports both email and SMS campaigns. Behavior depends on the campaign's sending strategy: - **Immediate**: Campaign will be sent immediately - **Scheduled**: Campaign will be queued for the scheduled time with optional timezone optimization **Scopes:** `campaigns.write`
Campaigns
Create or update existing contact
Creates a new contact. If a contact with the provided email identifier already exists, it will be updated instead. Returns `201 Created` for new contacts and `200 OK` when an existing contact was updated. **Scopes:** `contacts.write`
Contacts
Batch add tags
Adds the specified tags to multiple contacts. **Scopes:** `contacts.write`
Contacts
Render email content
With this endpoint you can render email content to HTML by ID. The content is rendered with an empty data context (no contact, no marketing activity). **Scopes:** `email-templates.write`
Email Content
Render email template
With this endpoint you can render an email template by ID and get the full HTML body for preview purposes. **Scopes:** `email-templates.write`
Email Templates
Send Customer event
With this endpoint you can send customer events to Omnisend. Customer events are used to track customer behavior and trigger automations based on that behavior. You can either format and send custom customer events or use predefined events. **Scopes:** `events.write` <br><a href="https://www.postman.com/omnisend-api/workspace/omnisend/overview" target="_blank">Open Postman collection</a>
Events
Upload image by URL
With this endpoint you can upload an image from a publicly accessible URL. If the name is not provided, the filename will be extracted from the URL. **Scopes:** `images.write`
Images
Upload image file
With this endpoint you can upload an image file directly from your computer. **File Requirements:** - Supported formats: JPEG, PNG, GIF, WebP - Maximum file size: 5MB **Scopes:** `images.write`
Images
Create product category
Creates a new product category **Scopes:** `products.write` <br><a href="https://www.postman.com/omnisend-api/workspace/omnisend/overview" target="_blank">Check POSTMAN documentation</a>
Product Categories
Create product
Creates a new product **Scopes:** `products.write` <br><a href="https://www.postman.com/omnisend-api/workspace/omnisend/overview" target="_blank">Open Postman collection</a>
Products
Replace automation workflow blocks
Replace the full block tree for an automation workflow. Blocks identified by `id` are updated in place. Blocks identified by `temporaryID` are created as new blocks. Existing blocks not included in this array are removed. Enabled automations cannot be restructured. Disable the automation via `POST /automations/{id}/disable`, send the new block tree, then re-enable via `POST /automations/{id}/enable` when ready. When disabling, `contactsInWorkflow` controls whether contacts already in the workflow continue through the remaining blocks (`keep`) or exit immediately (`exit`). **Scopes:** `automations.write`
Automations
Update UTM tags for an automation block
Set UTM tracking tags for a specific send-action block. All three tag fields are replaced atomically. Send an empty string to clear a field — the next read will return its default value. **Scopes:** `automations.write`
Automations
Update campaign UTM settings
Replace UTM tag settings for a campaign. For regular campaigns send a `tags` object. For A/B test campaigns send a `variants` object. The campaign must be in draft status. **Scopes:** `campaigns.write`
Campaigns
Replace product
Replace product by ID **Scopes:** `products.write` <br><a href="https://www.postman.com/omnisend-api/workspace/omnisend/overview" target="_blank">Open Postman collection</a>
Products
Update segment
Updates an existing segment by ID. The segment must not be in a building state to be updated. If the segment is currently being built, a `409 Conflict` error is returned. **Scopes:** `segments.write` **Rate Limiting:** This endpoint is rate limited to 15 requests per minute. The request body structure (`name` and `conditionGroups`) is identical to [Create segment](post_segments). See the Create segment endpoint for detailed examples of condition groups, filters, and advanced segmentation patterns.
Segments
FAQ

Omnisend integration, answered

How do AI agents use Omnisend through Open Connector?
Your user connects Omnisend once with one of its cataloged authentication methods. Open Connector stores the credential in an encrypted vault and exposes Omnisend tools to your agent over MCP or a typed API, with credentials injected server-side on each call.
Is this a Omnisend MCP server?
Yes. Open Connector can serve Omnisend as a named MCP server with a scoped allowlist and a per-user connection URL, so any MCP client can call Omnisend actions with credentials injected server-side.
Where do Omnisend credentials live?
In your own infrastructure. Open Connector keeps credentials in its own vault and injects them at call time, so they never leave your environment.

Give your agents Omnisend — keep the keys.

Open source, self-hostable, with Omnisend credentials that never leave your infrastructure. Run it from source today.