Transactional

Update transactional email

Updates transactional email metadata or replaces the linked email body using raw HTML or Sequenzy blocks.

patch/transactional/{idOrSlug}

Path parameters

idOrSlugstring required

Transactional email ID or slug

Request body

htmlstring

Raw HTML body. Provide either html or blocks, not both.

namestring
enabledboolean
subjectstring
previewTextstring nullable

Example request

{
  "html": "<h1>Hello</h1>",
  "blocks": [
    {
      "id": "block_123",
      "type": "html",
      "content": "<h1>Hello</h1>",
      "styles": {
        "backgroundColor": "#f8fafc",
        "backgroundOpacity": 80,
        "textColor": "#111827",
        "borderRadius": 12,
        "borderColor": "#cbd5e1",
        "borderWidth": 1
      },
      "conditions": [
        {
          "id": "c1",
          "value": "plan:pro"
        }
      ]
    }
  ],
  "name": "Welcome Email",
  "enabled": true,
  "subject": "Welcome, {{NAME}}",
  "previewText": "Your account is ready."
}

Response

Transactional email updated

successboolean
warningsstring[]

Non-blocking advisories about the blocks that were written. The write succeeded. Present when a field was not part of the block schema and was discarded, or when a supported field does not control what its name suggests for that block type - for example styles.backgroundColor on a button colors the band behind the button while the fill comes from buttonColor. Each message names the offending path and the fields that block does accept. Absent when there is nothing to report.

Example response

{
  "success": true,
  "transactional": {
    "id": "tx_abc123",
    "name": "Welcome Email",
    "slug": "welcome-email",
    "emailId": "email_123",
    "enabled": true,
    "variables": [
      "NAME",
      "COMPANY",
      "PRODUCT"
    ],
    "subject": "Welcome, {{NAME}}",
    "previewText": "Your account is ready.",
    "blocks": [
      {
        "id": "block_123",
        "type": "html",
        "content": "<h1>Hello</h1>",
        "styles": {
          "backgroundColor": "#f8fafc",
          "backgroundOpacity": 80,
          "textColor": "#111827",
          "borderRadius": 12,
          "borderColor": "#cbd5e1",
          "borderWidth": 1
        },
        "conditions": [
          {
            "id": "c1",
            "value": "plan:pro"
          }
        ]
      }
    ],
    "email": {
      "id": "email_123",
      "companyId": "company_123",
      "name": "Welcome email",
      "subject": "Welcome",
      "previewText": "Here's what to do next",
      "blocks": [
        {
          "id": "block_123",
          "type": "html",
          "content": "<h1>Hello</h1>",
          "styles": {
            "backgroundColor": "#f8fafc",
            "backgroundOpacity": 80,
            "textColor": "#111827",
            "borderRadius": 12,
            "borderColor": "#cbd5e1",
            "borderWidth": 1
          },
          "conditions": [
            {
              "id": "c1",
              "value": "plan:pro"
            }
          ]
        }
      ]
    }
  },
  "warnings": [
    "blocks[0].styles.color is not a supported field and was ignored. Button label color comes from the block-level `buttonTextColor` field. Supported styles fields: backgroundColor, backgroundOpacity, bleed, borderColor, borderRadius, borderWidth, paddingBottom, paddingLeft, paddingRight, paddingTop, textAlign, textColor."
  ]
}

Changes