Automations

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

Rate Limiting: This endpoint is rate limited to 400 requests per minute.

put/automations/{id}/blocks

Request

  • Base URL
    https://api.omnisend.com/api
  • URL
    https://api.omnisend.com/api/automations/{id}/blocks
  • Auth
    • OAuth 2
      Client credentials
      Token URL: https://app.omnisend.com/oauth2/token scopes: automations.write
    • or API key in header Authorization

Path parameters

idstring required

Automation workflow ID (24 character hexadecimal)

Headers

Omnisend-Versionstring required

API version that specifies the response format and behaviour

Request body

Example request

{
  "blocks": [
    {
      "abTesting": {
        "aBlocksPercentage": 50
      },
      "action": {
        "addTag": {
          "value": "vip-customer"
        },
        "removeTag": {
          "value": "vip-customer"
        },
        "sendEmail": {
          "isSkipAllowed": true,
          "language": "en_US",
          "preheader": "Check out what we have for you",
          "replyToEmail": "support@example.com",
          "senderEmail": "hello@example.com",
          "senderName": "My Store",
          "subject": "Welcome to our store!",
          "templateID": "000000000000000000000001"
        },
        "sendPush": {
          "body": "Track your delivery now",
          "clickUrl": "https://example.com/order/123",
          "iconID": "000000000000000000000001",
          "imageID": "000000000000000000000002",
          "isSkipAllowed": true,
          "title": "Your order has shipped"
        },
        "sendSms": {
          "compliance": {
            "isStopKeywordIncluded": true,
            "isUnsubscribeLinkIncluded": true,
            "stopKeywordText": "Reply STOP to opt out",
            "unsubscribeLinkText": "Unsubscribe [[unsubscribe_link]]"
          },
          "imageID": "000000000000000000000001",
          "isLinkShorteningEnabled": true,
          "isSkipAllowed": true,
          "message": "Hello [[contact.first_name]]!"
        },
        "sendWebhook": {
          "body": "{\"contactEmail\": \"[[contact.email]]\"}",
          "callbackUrl": "https://example.com/webhook",
          "headers": [
            {
              "key": "X-Api-Key",
              "value": "secret-token"
            }
          ]
        },
        "type": "sendEmail"
      },
      "delay": {
        "duration": {
          "amount": 24,
          "units": "h"
        },
        "mode": "duration",
        "time": "09:30"
      },
      "id": "000000000000000000000001",
      "split": {
        "filterGroup": {
          "filters": [
            {
              "field": "app_language_code",
              "operator": "eq",
              "type": "event",
              "urlMatch": {
                "operator": "contains",
                "value": "https://example.com/promo"
              }
            }
          ],
          "logicalOperator": "and"
        }
      },
      "temporaryID": "welcome-email",
      "type": "action"
    }
  ]
}

Response

Updated automation workflow

brandIDstring

Brand identifier (read-only)

createdAtstring

Automation creation timestamp (read-only)

disabledAtstring

Timestamp when automation was disabled (read-only)

enabledAtstring

Timestamp when automation was enabled (read-only)

idstring

Automation workflow unique identifier (read-only)

isEnabledboolean

Whether the automation workflow is enabled (read-only). Controlled via enable/disable actions.

namestring

Automation workflow name

updatedAtstring

Automation last update timestamp (read-only)

urlstring

Link to the automation workflow editor in the Omnisend app (read-only)

Example response

{
  "blocks": [
    {
      "abTesting": {
        "aBlocksPercentage": 50
      },
      "action": {
        "addTag": {
          "value": "vip-customer"
        },
        "removeTag": {
          "value": "vip-customer"
        },
        "sendEmail": {
          "contentID": "000000000000000000000001",
          "isSkipAllowed": true,
          "language": "en_US",
          "preheader": "Check out what we have for you",
          "replyToEmail": "support@example.com",
          "senderEmail": "hello@example.com",
          "senderName": "My Store",
          "subject": "Welcome to our store!"
        },
        "sendPush": {
          "body": "We have something special for you.",
          "clickUrl": "https://example.com/promo",
          "iconID": "000000000000000000000001",
          "imageID": "000000000000000000000001",
          "isSkipAllowed": true,
          "title": "Check this out!"
        },
        "sendSms": {
          "compliance": {
            "isStopKeywordIncluded": true,
            "isUnsubscribeLinkIncluded": true,
            "stopKeywordText": "Reply STOP to opt out",
            "unsubscribeLinkText": "Unsubscribe [[unsubscribe_link]]"
          },
          "discountSettings": {
            "combinesWith": {
              "isOrderCompatible": true,
              "isProductCompatible": true
            },
            "expiry": {
              "dateFormat": "MMM DD, YYYY",
              "expirationText": "expires on",
              "expiresInDays": 14
            },
            "scope": {
              "collectionID": 123456,
              "collectionType": "smart",
              "conditions": "allOrders",
              "minimumOrderAmount": "50.00"
            },
            "type": "percentage",
            "value": "10"
          },
          "imageID": "000000000000000000000001",
          "isLinkShorteningEnabled": true,
          "isSkipAllowed": true,
          "message": "Hello [[contact.first_name]]! Check out our deals"
        },
        "sendWebhook": {
          "body": "{\"contactEmail\": \"[[contact.email]]\"}",
          "callbackUrl": "https://example.com/webhook",
          "headers": [
            {
              "key": "X-Api-Key",
              "value": "secret-token"
            }
          ]
        },
        "type": "sendEmail"
      },
      "delay": {
        "duration": {
          "amount": 24,
          "units": "h"
        },
        "mode": "duration",
        "time": "09:30"
      },
      "id": "000000000000000000000002",
      "split": {
        "filterGroup": {
          "filters": [
            {
              "field": "app_language_code",
              "operator": "eq",
              "type": "event",
              "urlMatch": {
                "operator": "contains",
                "value": "https://example.com"
              }
            }
          ],
          "logicalOperator": "and"
        }
      },
      "type": "action"
    }
  ],
  "brandID": "000000000000000000000001",
  "createdAt": "2026-01-15T10:30:00Z",
  "disabledAt": "2026-01-15T10:30:00Z",
  "enabledAt": "2026-01-15T10:30:00Z",
  "exitConditions": [
    {
      "event": "placed order",
      "filterGroup": {
        "filters": [
          {
            "field": "app_language_code",
            "operator": "eq"
          }
        ],
        "logicalOperator": "and"
      },
      "origin": "omnisend"
    }
  ],
  "id": "000000000000000000000001",
  "isEnabled": true,
  "name": "Welcome Series",
  "settings": {
    "discount": {
      "combinesWith": {
        "isOrderCompatible": true,
        "isProductCompatible": true
      },
      "expiry": {
        "dateFormat": "MMM DD, YYYY",
        "expirationText": "expires on",
        "expiresInDays": 14
      },
      "scope": {
        "collectionID": 123456,
        "collectionType": "smart",
        "conditions": "allOrders",
        "minimumOrderAmount": "50.00"
      },
      "type": "percentage",
      "value": "10"
    },
    "frequencyLimiter": {
      "duration": {
        "amount": 1,
        "units": "w"
      },
      "mode": "interval"
    },
    "overlapLimiter": {
      "automationIDs": [
        "000000000000000000000001"
      ],
      "mode": "currentlyIn",
      "withinDays": 7
    },
    "sendingThresholds": {
      "email": "subscribed",
      "sms": "subscribed"
    }
  },
  "trigger": {
    "audienceFilterGroup": {
      "filters": [
        {
          "field": "tag",
          "operator": "eq"
        }
      ],
      "logicalOperator": "and"
    },
    "condition": {
      "event": "placed order",
      "filterGroups": [
        {
          "filters": [
            {
              "field": "app_language_code",
              "operator": "eq"
            }
          ],
          "logicalOperator": "and"
        }
      ],
      "origin": "omnisend"
    },
    "inactivitySettings": {
      "duration": {
        "amount": 24,
        "units": "h"
      }
    }
  },
  "updatedAt": "2026-01-15T10:30:00Z",
  "url": "https://app.omnisend.com/automation/edit/000000000000000000000001"
}

Changes

No recorded changes to this operation across all 1 revision of this API.