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.
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
Your user grants Omnisend access once (OAuth) — the token lands in the vault.
- 2
Your agent calls a tool over MCP or the typed API; Open Connector injects the credential server-side.
- 3
Every routed call appends a hash-chained audit record — nothing leaves your infra.
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
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.