Automation timing moves inside each action

Every automation action carries its own timing as of API version 2026-04-01

February 26, 2026
Breaking API change

This is a backwards-incompatible change to Buttondown's API. Pinning your newsletter or request to an older API version keeps the previous behavior where a version was cut for it.

Each action inside an automation now carries its own timing, paving the way for multi-step sequences in a single automation. Previously, timing was a top-level field on the automation; starting with API version 2026-04-01, it lives inside each action as a step.

Here's what a multi-step automation looks like in the new format:

{
  "trigger": "subscriber.confirmed",
  "actions": [
    {
      "type": "send_email",
      "metadata": { "email_id": "welcome-email-id" },
      "timing": { "time": "immediate" }
    },
    {
      "type": "send_email",
      "metadata": { "email_id": "followup-email-id" },
      "timing": { "time": "delay", "delay": { "unit": "days", "value": "3" } }
    }
  ]
}

If you're on an older API version, the top-level timing field still works exactly as before — the translation is handled behind the scenes.

Buttondown is the last email platform you’ll switch to.