All integrations

Omnisend

MARKETING · EMAIL

Contacts, campaigns, automations, and segments in the store they connected.

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

omnisend_delete_automations_by_idWRITE

Delete automation workflow. DELETE /automations/{id}. Delete a single automation workflow by ID. This operation is idempotent — deleting a non-existent automation returns a success response. This endpoint is rate limited to 400 requests per minute.

automations.write
omnisend_delete_campaigns_by_idWRITE

Delete campaign. DELETE /campaigns/{id}. Delete a campaign. This endpoint is rate limited to 400 requests per minute.

campaigns.write
omnisend_delete_contacts_tagsWRITE

Batch remove tags. DELETE /contacts/tags. Removes the specified tags from contacts selected by contact IDs, emails, phone numbers or a segment. At least one of contactIDs, emails, phones or segmentID is required. Selectors can be combined and are applied additively — the tags are removed from the union of all matched contacts: every contact in contactIDs, every contact matched by an address in emails, every contact matched by a number in phones and every member of segmentID. A contact matched by more than one selector is processed once. Emails and phones with no matching contact are silently ignored.

contacts.write
omnisend_delete_email_templates_by_idWRITE

Delete email template. DELETE /email-templates/{id}. With this endpoint you can delete email template by ID. This endpoint is rate limited to 400 requests per minute.

email-templates.write
omnisend_delete_email_universal_layouts_by_idWRITE

Delete universal layout. DELETE /email-universal-layouts/{id}. With this endpoint you can delete a universal layout by ID. This endpoint is rate limited to 400 requests per minute.

email-templates.write
omnisend_delete_images_by_idWRITE

Delete image. DELETE /images/{id}. With this endpoint you can delete an image by ID. This endpoint is rate limited to 400 requests per minute.

images.write
omnisend_delete_product_categories_by_categoryidWRITE

Delete product category. DELETE /product-categories/{categoryID}. With this endpoint you can delete product category. Check POSTMAN documentation This endpoint is rate limited to 400 requests per minute.

products.write
omnisend_delete_products_by_productidWRITE

Delete product. DELETE /products/{productID}. Delete product by ID This endpoint is rate limited to 400 requests per minute.

products.write
omnisend_delete_segments_by_segmentidWRITE

Delete segment. DELETE /segments/{segmentID}. 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. This endpoint is rate limited to 100 requests per minute.

segments.write
omnisend_get_automationsREAD

List automation workflows. GET /automations. List automation workflows with filtering, sorting, and cursor-based pagination. 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 This endpoint is rate limited to 400 requests per minute.

automations.read
omnisend_get_automations_by_idREAD

Get automation workflow. GET /automations/{id}. Get a single automation workflow by ID. This endpoint is rate limited to 400 requests per minute.

automations.read
omnisend_get_automations_by_id_blocks_by_blockid_utmREAD

Get UTM tags for an automation block. GET /automations/{id}/blocks/{blockID}/utm. Retrieve UTM tracking tags for a specific send-action block. Missing or cleared tags are returned with their default values. This endpoint is rate limited to 400 requests per minute.

automations.read
omnisend_get_automations_by_id_utmREAD

Get aggregated UTM tags for all blocks. GET /automations/{id}/utm. Retrieve UTM tracking tags for all send-action blocks in an automation. Each block's tags include default-value synthesis for missing fields. This endpoint is rate limited to 400 requests per minute.

automations.read
omnisend_get_batchesREAD

Get batches. GET /batches. Get batches This endpoint is rate limited to 400 requests per minute.

contacts.readevents.readproducts.read
omnisend_get_batches_by_batchidREAD

Get batch information. GET /batches/{batchID}. Get batch information This endpoint is rate limited to 400 requests per minute.

contacts.readevents.readproducts.read
omnisend_get_batches_by_batchid_itemsREAD

Get batch items. GET /batches/{batchID}/items. Get batch items This endpoint is rate limited to 400 requests per minute.

contacts.readevents.readproducts.read
omnisend_get_campaignsREAD

List campaigns with filtering, sorting, and cursor pagination. GET /campaigns. List campaigns with filtering, sorting, and cursor-based pagination. Filtering & sorting: Supported query parameters: nameContains, status, channel, type, parentCampaignID, createdAtFrom/createdAtTo, updatedAtFrom/updatedAtTo, sort, direction, limit, after, before. Only these documented parameters are accepted; any unknown parameter returns 400. sort accepts createdAt, updatedAt, or name; direction (asc/desc) is only valid together with sort. Pagination: This endpoint uses cursor-based pagination.

campaigns.read
omnisend_get_campaigns_by_idREAD

Get campaign. GET /campaigns/{id}. Get a single campaign by ID. This endpoint is rate limited to 400 requests per minute.

campaigns.read
omnisend_get_campaigns_by_id_utmREAD

Get campaign UTM settings. GET /campaigns/{id}/utm. 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. This endpoint is rate limited to 400 requests per minute.

campaigns.read
omnisend_get_contactsREAD

List contacts. GET /contacts. Returns a paginated list of contacts filtered by the provided query parameters. Filter restrictions: tag and status cannot be used together in the same request. updatedAtFrom cannot be combined with email, phone, status, segmentID, or tag. This endpoint is rate limited to 400 requests per minute.

contacts.read
omnisend_get_contacts_by_idREAD

Get contact. GET /contacts/{id}. Returns the contact with the specified ID. This endpoint is rate limited to 400 requests per minute.

contacts.read
omnisend_get_email_content_by_idREAD

Get email content. GET /email-content/{id}. With this endpoint you can get email content by ID. This endpoint is rate limited to 400 requests per minute.

email-templates.read
omnisend_get_email_templatesREAD

Get email templates. 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.

email-templates.read
omnisend_get_email_templates_by_idREAD

Get email template. GET /email-templates/{id}. With this endpoint you can get email template by ID. This endpoint is rate limited to 400 requests per minute.

email-templates.read
omnisend_get_email_universal_layoutsREAD

Get universal layouts. GET /email-universal-layouts. With this endpoint you can get a paginated list of universal layouts. Sorting: Items are returned in descending order by creation time (newest first). This is based on the internal document ID which contains a timestamp. Pagination: This endpoint uses cursor-based pagination for efficient traversal of large datasets.

email-templates.read
omnisend_get_email_universal_layouts_by_idREAD

Get universal layout. GET /email-universal-layouts/{id}. With this endpoint you can get a universal layout by ID. This endpoint is rate limited to 400 requests per minute.

email-templates.read
omnisend_get_forms_ab_setups_by_absetupid_reportREAD

Get AB setup report. GET /forms/ab-setups/{abSetupID}/report. Get the report for an AB setup by its ID, including per-version form statistics.

forms.read
omnisend_get_forms_by_formid_contactsREAD

Get form submitted contacts. GET /forms/{formID}/contacts. Get a list of contacts for a form by form ID.

forms.read
omnisend_get_imagesREAD

List images. GET /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.

images.read
omnisend_get_images_by_idREAD

Get image. GET /images/{id}. With this endpoint you can get a single image by ID. This endpoint is rate limited to 400 requests per minute.

images.read
omnisend_get_product_categoriesREAD

List product categories. GET /product-categories. List products categories Guide: Sync products catalog, categories Check POSTMAN documentation This endpoint is rate limited to 400 requests per minute.

products.read
omnisend_get_product_categories_by_categoryidREAD

Get product category. GET /product-categories/{categoryID}. Get product category by ID. Check POSTMAN documentation This endpoint is rate limited to 400 requests per minute.

products.read
omnisend_get_productsREAD

List products. GET /products. List products Guide: Sync products catalog, categories This endpoint is rate limited to 400 requests per minute.

products.read
omnisend_get_products_by_productidREAD

Get product. GET /products/{productID}. Get product by ID This endpoint is rate limited to 400 requests per minute.

products.read
omnisend_get_segmentsREAD

List segments. GET /segments. List segments with sorting and cursor-based pagination support. 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.

segments.read
omnisend_get_segments_by_segmentidREAD

Get segment. GET /segments/{segmentID}. Returns a segment by its unique identifier. This endpoint is rate limited to 100 requests per minute.

segments.read
omnisend_get_segments_by_segmentid_statisticsREAD

Get segment statistics. GET /segments/{segmentID}/statistics. Returns statistics for a segment, including the total number of matching contacts. This endpoint is rate limited to 100 requests per minute.

segments.read
omnisend_patch_automations_by_idWRITE

Patch automation workflow. PATCH /automations/{id}. Partially update an automation workflow. Only the fields provided in the request body are updated. Enabled automations cannot be patched. Disable the automation via POST /automations/{id}/disable, make changes, 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). Enable/disable state is controlled exclusively via the /automations/{id}/enable and /automations/{id}/disable endpoints.

automations.write
omnisend_patch_brands_currentWRITE

Update brand. PATCH /brands/current. Update brand information. All fields are optional — include only the fields you want to change. OAuth connections only; refused on an API-key connection.

brands.write
omnisend_patch_campaigns_by_idWRITE

Update campaign (draft status only). PATCH /campaigns/{id}. Update a campaign draft. Only campaigns in 'draft' status can be updated; any other status returns 409. To change a campaign that is no longer a draft, copy it and edit the new draft copy. This endpoint is rate limited to 400 requests per minute.

campaigns.write
omnisend_patch_contactsWRITE

Update contact by email. PATCH /contacts. Updates the contact matching the provided email address. This endpoint is rate limited to 400 requests per minute.

contacts.write
omnisend_patch_contacts_by_idWRITE

Update contact by ID. PATCH /contacts/{id}. Updates the contact with the specified ID. This endpoint is rate limited to 400 requests per minute.

contacts.write
omnisend_patch_product_categories_by_categoryidWRITE

Update product category. PATCH /product-categories/{categoryID}. Update product category by ID. Check POSTMAN documentation This endpoint is rate limited to 400 requests per minute.

products.write
omnisend_post_accountsWRITE

Create account. POST /accounts. Create a new Omnisend account with a primary user and brand. Returns identifiers needed for subsequent session and brand operations. OAuth connections only; refused on an API-key connection.

accounts.write
omnisend_post_analytics_reportsWRITE

Generate report (by send date). POST /analytics/reports. 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. This endpoint is rate limited to 10 requests per minute and 55 requests per 24 hours. Rate limits apply per brand. See Rate limits.

analytics.read
omnisend_post_analytics_statisticsWRITE

Generate statistics report (by event date). POST /analytics/statistics. 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. This endpoint is rate limited to 10 requests per minute and 55 requests per 24 hours. Rate limits apply per brand. See Rate limits.

analytics.read
omnisend_post_automationsWRITE

Create automation workflow. POST /automations. Create a new automation workflow. Trigger condition examples The trigger.condition field defines the event that enrolls contacts into the automation. Most trigger events use standard Events API event names and may require origin. Built-in trigger events, such as 'birthday', do not use origin. For the 'birthday' trigger, omit trigger.condition.filterGroups to enroll contacts on the day of their birthday.

automations.write
omnisend_post_automations_by_id_blocks_by_blockid_test_emailWRITE

Send test email. POST /automations/{id}/blocks/{blockID}/test-email. Send the saved email content of a specific email block as a test email to up to 5 recipients. The email is rendered and delivered asynchronously. This endpoint is rate limited to 400 requests per minute.

automations.write
omnisend_post_automations_by_id_copyWRITE

Copy automation workflow. POST /automations/{id}/copy. 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: '. This endpoint is rate limited to 400 requests per minute.

automations.write
omnisend_post_automations_by_id_disableWRITE

Disable automation workflow. POST /automations/{id}/disable. 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.

automations.write
omnisend_post_automations_by_id_enableWRITE

Enable automation workflow. POST /automations/{id}/enable. 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. This endpoint is rate limited to 400 requests per minute.

automations.write
omnisend_post_batchesWRITE

Create batch. POST /batches. 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.

contacts.writeevents.writeproducts.write
omnisend_post_brands_currentWRITE

Connect brand. POST /brands/current. With this endpoint you can connect your site to Omnisend. Note it's only possible to connect store with oAuth flow. This endpoint is rate limited to 400 requests per minute. OAuth connections only; refused on an API-key connection.

brands.write
omnisend_post_campaignsWRITE

Create campaign. POST /campaigns. Create a new campaign draft. Boosters (type: booster): The parent campaign (boosterSettings.campaignID) must be a regular email campaign in 'draft' or 'sent' status; 'scheduled' and 'started' parents return 409. Each parent campaign supports at most one booster; creating another returns 409. Delete the existing booster first to replace it. sendingSettings is only allowed when the parent is already sent; for a draft parent provide boosterSettings.delay instead (max 240 hours) and the booster is scheduled automatically when the parent sends.

campaigns.write
omnisend_post_campaigns_by_id_ab_test_resumeWRITE

Resume A/B test. POST /campaigns/{id}/ab-test/resume. 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. This endpoint is rate limited to 400 requests per minute.

campaigns.write
omnisend_post_campaigns_by_id_ab_test_stopWRITE

Stop A/B test. POST /campaigns/{id}/ab-test/stop. 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. This endpoint is rate limited to 400 requests per minute.

campaigns.write
omnisend_post_campaigns_by_id_ab_test_winnerWRITE

Select A/B test winner. POST /campaigns/{id}/ab-test/winner. Manually pick a variant as the winner. The chosen variant is routed into the send pipeline immediately. This endpoint is rate limited to 400 requests per minute.

campaigns.write
omnisend_post_campaigns_by_id_cancelWRITE

Cancel campaign. POST /campaigns/{id}/cancel. 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. This endpoint is rate limited to 400 requests per minute.

campaigns.write
omnisend_post_campaigns_by_id_copyWRITE

Copy campaign. POST /campaigns/{id}/copy. Create a draft copy of an existing campaign, copying content, audience, and settings from the original. The copy is a new draft campaign with its own ID; the original campaign is left unchanged. The copied campaign name will be prefixed with 'Copy of: '. This endpoint is rate limited to 400 requests per minute.

campaigns.write
omnisend_post_campaigns_by_id_restoretodraftWRITE

Restore campaign to draft. POST /campaigns/{id}/restoreToDraft. Restore a scheduled campaign to draft while preserving its ID and name. Only campaigns in scheduled status are supported. Regular email, SMS, push, and A/B test parent campaigns can be restored. Booster campaigns are not supported. Restoring cancels the scheduled send, deletes send progress, and changes the campaign status to draft. For A/B tests, all child campaigns are also restored to draft. This endpoint is rate limited to 400 requests per minute.

campaigns.write
omnisend_post_campaigns_by_id_sendWRITE

Send campaign. POST /campaigns/{id}/send. Submit a campaign draft for sending. Only campaigns in 'draft' status can be sent; to send a campaign again, copy it and send the copy. 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 This endpoint is rate limited to 400 requests per minute.

campaigns.write
omnisend_post_campaigns_by_id_test_emailWRITE

Send campaign test email. POST /campaigns/{id}/test-email. Render the campaign draft and email it to up to 5 recipients so the merchant (or their AI tool) can preview it without leaving the API. The test uses the campaign's saved subject, sender, and content; only email campaigns are supported. This endpoint is rate limited to 400 requests per minute.

campaigns.write
omnisend_post_contactsWRITE

Create or update existing contact. POST /contacts. 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. This endpoint is rate limited to 400 requests per minute.

contacts.write
omnisend_post_contacts_tagsWRITE

Batch add tags. POST /contacts/tags. Adds the specified tags to contacts selected by contact IDs, emails, phone numbers or a segment. At least one of contactIDs, emails, phones or segmentID is required. Selectors can be combined and are applied additively — the union of all matched contacts is tagged: every contact in contactIDs, every contact matched by an address in emails, every contact matched by a number in phones and every member of segmentID. A contact matched by more than one selector is tagged once. Emails and phones with no matching contact are silently ignored.

contacts.write
omnisend_post_email_content_by_id_renderWRITE

Render email content. POST /email-content/{id}/render. 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). This endpoint is rate limited to 40 requests per minute.

email-templates.write
omnisend_post_email_templatesWRITE

Create email template. POST /email-templates. With this endpoint you can create a new email template. This endpoint is rate limited to 400 requests per minute.

email-templates.write
omnisend_post_email_templates_by_id_renderWRITE

Render email template. POST /email-templates/{id}/render. With this endpoint you can render an email template by ID and get the full HTML body for preview purposes. This endpoint is rate limited to 40 requests per minute.

email-templates.write
omnisend_post_email_templates_importWRITE

Import email template from HTML. POST /email-templates/import. With this endpoint you can import email template from raw HTML content. The HTML will be parsed, styles extracted, and structured into a template. Request body size limit: 1 MB This endpoint is rate limited to 400 requests per minute.

email-templates.write
omnisend_post_email_universal_layoutsWRITE

Create universal layout. POST /email-universal-layouts. With this endpoint you can create a new universal layout. This endpoint is rate limited to 400 requests per minute.

email-templates.write
omnisend_post_event_metadataWRITE

Create custom event metadata. POST /event-metadata. Declares a new brand-custom event schema. The event identity is the combination of name and origin; displayName and at least one top-level property are required. Optional metadata fields must be omitted rather than sent as null. The created event is returned with every node flagged explicitlyDefined. This endpoint is rate limited to 400 requests per minute.

no provider scope
omnisend_post_event_metadata_queryWRITE

Query events metadata. POST /event-metadata/query. Returns event metadata entries for the given category, optionally filtered by event names and/or origins. Supported categories: automations, events, segments API version scoping: The events a category exposes depend on the requested Omnisend-Version; a date between releases resolves to the nearest earlier supported version. Brand-custom events are not version-scoped. Event name filtering: When events are provided, only events whose system name matches one of the given values are returned (exact, case-sensitive match).

no provider scope
omnisend_post_eventsWRITE

Send Customer event. POST /events. 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. This endpoint is rate limited to 400 requests per minute.

events.write
omnisend_post_imagesWRITE

Upload image by URL. POST /images. 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. This endpoint is rate limited to 400 requests per minute.

images.write
omnisend_post_product_categoriesWRITE

Create product category. POST /product-categories. Creates a new product category Check POSTMAN documentation This endpoint is rate limited to 400 requests per minute.

products.write
omnisend_post_productsWRITE

Create product. POST /products. Creates a new product This endpoint is rate limited to 400 requests per minute.

products.write
omnisend_post_segmentsWRITE

Create segment. POST /segments. Creates a new segment. Segmentation examples Event filter fields reference For entity: 'event' conditions, each filter in the filters array supports the following fields: > origin is usually optional. Most events belong to a single origin, so the API resolves it for you. > You only need to specify origin when an event exists under multiple origins — otherwise the API returns an error with the list of valid values to choose from. Period operators The period object is optional on every event filter. When omitted, the filter matches across all time.

segments.write
omnisend_post_sessionsWRITE

Create session from token. POST /sessions. Exchange a one-time login token for a browser session. On success the user is redirected (302) to Omnisend with session cookies set. This endpoint must be called from the user's browser (e.g. via a form POST) so that cookies are stored in the browser context. Browser-bound: Omnisend answers this with a 302 redirect carrying session cookies, which a server-side call cannot use.

no provider scope
omnisend_post_sessions_tokenWRITE

Create session token. POST /sessions/token. Create a one-time login token. Use this token in the session creation endpoint to log the user in and redirect them to Omnisend. OAuth connections only; refused on an API-key connection.

sessions.write
omnisend_put_automations_by_id_blocksWRITE

Replace automation workflow blocks. PUT /automations/{id}/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).

automations.write
omnisend_put_automations_by_id_blocks_by_blockid_utmWRITE

Update UTM tags for an automation block. PUT /automations/{id}/blocks/{blockID}/utm. 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. This endpoint is rate limited to 400 requests per minute.

automations.write
omnisend_put_campaigns_by_id_utmWRITE

Update campaign UTM settings. PUT /campaigns/{id}/utm. 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. This endpoint is rate limited to 400 requests per minute.

campaigns.write
omnisend_put_email_content_by_idWRITE

Update email content. PUT /email-content/{id}. With this endpoint you can update (fully replace) email content by ID. The full content structure must be provided in the request body. This endpoint is rate limited to 400 requests per minute.

email-templates.write
omnisend_put_email_templates_by_idWRITE

Update email template. PUT /email-templates/{id}. With this endpoint you can update (fully replace) an email template by ID. This endpoint is rate limited to 400 requests per minute.

email-templates.write
omnisend_put_email_universal_layouts_by_idWRITE

Update universal layout. PUT /email-universal-layouts/{id}. With this endpoint you can update (fully replace) a universal layout by ID. This endpoint is rate limited to 400 requests per minute.

email-templates.write
omnisend_put_event_metadataWRITE

Update custom event metadata. PUT /event-metadata. Merges changes into an existing brand-custom event, identified by name and origin. Only supplied fields are applied: omitted metadata and omitted properties are preserved, and no property is deleted. The type of an already explicitly-defined property cannot change. Optional metadata fields must be omitted rather than sent as null. The merged event is returned. This endpoint is rate limited to 400 requests per minute.

no provider scope
omnisend_put_products_by_productidWRITE

Replace product. PUT /products/{productID}. Replace product by ID This endpoint is rate limited to 400 requests per minute.

products.write
omnisend_put_segments_by_segmentidWRITE

Update segment. PUT /segments/{segmentID}. 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. The request body structure (name and conditionGroups) is identical to Create segment. See the Create segment endpoint for detailed examples of condition groups, filters, and advanced segmentation patterns. This endpoint is rate limited to 15 requests per minute.

segments.write

Put Omnisend behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.