Skip to content
Esc
  • OverviewGuidesWhat exists today, and where to start.
  • QuickstartGuidesKey, domain, first send — in that order.
  • AuthenticationGuidesBearer keys, the mandatory User-Agent, and what each refusal means.
  • ErrorsGuidesThe whole vocabulary, with the status each name carries.
  • IdempotencyGuidesRetry a send without sending it twice.
  • PaginationGuidesCursors are item IDs, not page numbers.
  • Rate limitsGuidesTen a second per team, and the headers that tell you where you are.
  • EventsGuidesEvery event a webhook can carry, with one real payload each.
  • DomainsGuidesThe records, where they go at each registrar, and what the page does while you wait.
  • TrackingGuidesOpens and clicks: one record, two toggles, and what an open really means.
  • TemplatesGuidesFifty-seven starters sorted by goal, and how to keep a campaign as a template.
  • ReceivingGuidesInbound mail, and the Inbox: a webhook fires, you read it, you answer it.
  • InboxGuidesChannels, personal mailboxes and seats: who sees what, and where a reply goes.
  • Mail appsGuidesComing soon: your Rasket address in Apple Mail, Outlook and the Gmail app.
  • Inbox APIGuidesOpen, read and answer support conversations from your app, with the same key.
  • Support inbox in your appGuidesA Contact us form that opens a conversation your team answers, in five minutes.
  • Replies to your emailsGuidesOne field on a send, and the customer's reply opens a conversation.
  • Let an agent triageGuidesAn AI agent reads, notes and drafts over MCP; a person sends.
  • Node SDKGuidesThe rasket package: typed from the API's own document, retries only what is safe.
  • Python SDKGuidesThe rasket package on PyPI: the Node client's methods, in snake_case, over httpx.
  • MCP serverGuidesConnect Claude, ChatGPT or any MCP client: your scopes, no key.
  • AI assistGuidesSubject lines, drafts and diagnosis — in the dashboard and over the API, off until you allow it.
  • AgentsGuidesLet an AI agent set Rasket up: the skill, the rules file, MCP, and the recipe they share.
  • OAuthGuidesLet another app act for a team: register, authorize with PKCE, exchange, refresh.
  • Single sign-onGuidesOIDC login for your team, a domain proved by DNS, enforcement and break-glass.
  • IntegrationsGuidesVercel, Netlify and Cloudflare, Zapier and n8n, a WordPress plugin, and Notion contacts.
  • SMTPGuidesSend from anything that speaks SMTP: settings, setup guides, limits and replies.
  • ZapierGuidesSend email, add contacts and react to email events from a Zap, with no code.
  • n8nGuidesThe Rasket node and trigger for n8n workflows: install, connect, every operation.
  • VercelGuidesAdd Rasket on Vercel: a Sending key in each project as RASKET_API_KEY, no copying.
  • WordPressGuidesThe Rasket plugin: every email your site sends, through Rasket, with a safe fallback.
  • NotionGuidesTurn a Notion database of people into contacts in a segment, once or every hour.
  • Migrating to RasketGuidesBring contacts, unsubscribes, lists and templates from Mailchimp, Klaviyo and more.
  • EmailsAPI referenceSend, batch, retrieve, list, reschedule, cancel, attachments.
  • DomainsAPI referenceAdd a domain, publish its records, verify it.
  • API keysAPI referenceCreate, list, rename and revoke credentials.
  • WebhooksAPI referencePayloads, signature verification, retries and replay.
  • SuppressionsAPI referenceAddresses we will not send to, and why.
  • LogsAPI referenceEvery request made with this team's credentials.
  • MetricsAPI referenceDelivery, bounce, complaint and engagement counts.
  • TemplatesAPI referenceVersioned email content with typed variables, addressed by ID or alias.
  • ContactsAPI referenceYour audience: contacts, their typed properties, segments and topic choices.
  • SegmentsAPI referenceAudiences defined by a filter, by hand, or both.
  • TopicsAPI referenceWhat contacts subscribe to, and the preference page's list.
  • CampaignsAPI referenceCampaigns, at /broadcasts: one message to a segment, from draft to results.
  • ImportsAPI referenceCSV uploads: column mapping, conflicts and counts.
  • AutomationsAPI referenceWorkflows that run per contact: the graph, its versions, and every run.
  • Custom eventsAPI referenceThe names your product fires, and what starts a workflow.
  • ReceivingAPI referenceMail sent to you: the message, its attachments, its raw source.
  • OAuthAPI referenceClient registration, the token endpoint, and the grants a team has given.
  • TeamAPI referenceThe team a credential belongs to: its plan, sender identity, AI flag and members.
  • BillingAPI referencePlan, usage, invoices and add-ons, and the hosted pages where a customer pays.
  • AI helpersAPI referenceSubject lines, a first draft, and why an email did what it did.
  • InboxAPI referenceChannels, conversations, messages, notes and search in your support inbox.

GuidesEvents

Events

Every event a webhook can deliver, with one real payload each. The envelope is the same for all of them; only data changes.

The envelope

Three keys, always. type is the event, created_at is when it happened — not when we delivered it — and data is the subject.

{
  "type": "email.delivered",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {}
}

For an email.* event, data always carries email_id, from, to, subject, message_id and the email's own created_at. tags and headers appear only when the send had them. Some types add one more object, named in the table below. For a contact.* event, data is the contact: id, email, first_name, last_name, unsubscribed, created_at, updated_at and segment_ids.

For an inbox.* event, data always carries conversation_id, channel, origin, actor, subject, status and assignee, plus the ids the type adds. actor says who did it — a teammate, an API key, or Rasket — so you can skip your own changes. There is never a message or note body: read it from the Inbox API with a key that has Inbox access.

Inbox events are chosen on their own. All events leaves them out, and turning one on needs Inbox access: an admin, or an API key with Inbox read and no channel limit. Only shared channels send them; personal mailboxes and restricted channels never do. Mail into a channel sends both email.received and inbox.message.received.

to lists the recipients this event is about. For a bounce, a complaint or a delivery that is the affected addresses only, not everyone the message went to.

Every type

Every event type, what it adds to data, and what it means
TypeAddsMeans
email.sent—We handed the message to the mail provider.
email.scheduled—A send with `scheduled_at` was accepted and is waiting.
email.delivered—A receiving mail server accepted the message.
email.delivery_delayeddelayA receiver deferred the message. It has not been rejected.
email.bouncedbounceA receiver rejected it. A permanent bounce also adds the address to suppressions.
email.complained—A recipient reported the message as spam. The address is suppressed.
email.openedopenA tracking pixel was loaded. Requires open tracking on the sending domain.
email.clickedclickA tracked link was followed. Requires click tracking on the sending domain.
email.failedfailedWe could not send it. `failed.reason` says why.
email.suppressedsuppressedThe send was skipped because the address was already on your list.
email.canceled—A scheduled send was cancelled before it went out.
domain.created—A domain was added, or arrived on your team through a claim.
domain.updated—A domain's settings or record statuses changed.
domain.deleted—A domain was removed, or left your team through someone else's claim.
suppression.added—An address was added to the suppression list.
suppression.removed—An address was taken off it.
contact.created—A contact was added through the API. An import sends none of these.
contact.updated—A contact's fields or properties changed through the API or an automation's update step. Topic and segment changes do not send one.
contact.deleted—A contact was erased. `data` is the contact as it was.
email.received—Mail arrived at one of your receiving addresses. Attachments are listed without URLs; fetch each one from the API.
automation.run.started—An automation enrolled a contact and the run began.
automation.run.completed—A run reached the end of its graph.
automation.run.failed—A run ended without finishing. `error.reason` says why, and covers a cancelled or stopped run too.
inbox.conversation.created—A new conversation opened in a shared Inbox channel: a customer wrote in, or a teammate wrote first.
inbox.message.received—A customer's message landed in a conversation. Mail in Spam or the bin sends none.
inbox.reply.sent—A teammate replied. Sent means accepted for sending; delivery is the email's own events.
inbox.note.created—A teammate left an internal note. The note's words are not included.
inbox.conversation.assigned—The conversation was given to a teammate, or to nobody.
inbox.conversation.status_changed—The team status moved between open, pending and done. A customer writing back reopens it.

The payloads

One example per type, folded away so the page stays readable. Each is the shape we send; the values are illustrative.

email.sent
{
  "type": "email.sent",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "email_id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
    "from": "Acme <orders@send.acme.example>",
    "to": ["ronald.williams@example.com"],
    "subject": "Your order has shipped",
    "message_id": "<01000199a3c4d5e6-7f8a9b0c@send.acme.example>",
    "created_at": "2026-09-09T10:14:02.118Z",
    "tags": {
      "order": "1042"
    },
    "headers": [
      {
        "name": "X-Entity-Ref-ID",
        "value": "1042"
      }
    ]
  }
}
email.scheduled
{
  "type": "email.scheduled",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "email_id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
    "from": "Acme <orders@send.acme.example>",
    "to": ["ronald.williams@example.com"],
    "subject": "Your order has shipped",
    "message_id": "<01000199a3c4d5e6-7f8a9b0c@send.acme.example>",
    "created_at": "2026-09-09T10:14:02.118Z",
    "tags": {
      "order": "1042"
    },
    "headers": [
      {
        "name": "X-Entity-Ref-ID",
        "value": "1042"
      }
    ]
  }
}
email.delivered
{
  "type": "email.delivered",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "email_id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
    "from": "Acme <orders@send.acme.example>",
    "to": ["ronald.williams@example.com"],
    "subject": "Your order has shipped",
    "message_id": "<01000199a3c4d5e6-7f8a9b0c@send.acme.example>",
    "created_at": "2026-09-09T10:14:02.118Z",
    "tags": {
      "order": "1042"
    },
    "headers": [
      {
        "name": "X-Entity-Ref-ID",
        "value": "1042"
      }
    ]
  }
}
email.delivery_delayed
{
  "type": "email.delivery_delayed",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "email_id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
    "from": "Acme <orders@send.acme.example>",
    "to": ["ronald.williams@example.com"],
    "subject": "Your order has shipped",
    "message_id": "<01000199a3c4d5e6-7f8a9b0c@send.acme.example>",
    "created_at": "2026-09-09T10:14:02.118Z",
    "tags": {
      "order": "1042"
    },
    "headers": [
      {
        "name": "X-Entity-Ref-ID",
        "value": "1042"
      }
    ],
    "delay": {
      "type": "MailboxFull",
      "expirationTime": "2026-09-10T10:16:44.902Z",
      "delayedRecipients": [
        {
          "emailAddress": "ronald.williams@example.com",
          "status": "4.2.2",
          "diagnosticCode": "smtp; 452 4.2.2 Mailbox full"
        }
      ]
    }
  }
}
email.bounced
{
  "type": "email.bounced",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "email_id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
    "from": "Acme <orders@send.acme.example>",
    "to": ["ronald.williams@example.com"],
    "subject": "Your order has shipped",
    "message_id": "<01000199a3c4d5e6-7f8a9b0c@send.acme.example>",
    "created_at": "2026-09-09T10:14:02.118Z",
    "tags": {
      "order": "1042"
    },
    "headers": [
      {
        "name": "X-Entity-Ref-ID",
        "value": "1042"
      }
    ],
    "bounce": {
      "type": "Permanent",
      "subType": "General",
      "message": "smtp; 550 5.1.1 The email account that you tried to reach does not exist.",
      "diagnosticCode": ["smtp; 550 5.1.1 user unknown"]
    }
  }
}
email.complained
{
  "type": "email.complained",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "email_id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
    "from": "Acme <orders@send.acme.example>",
    "to": ["ronald.williams@example.com"],
    "subject": "Your order has shipped",
    "message_id": "<01000199a3c4d5e6-7f8a9b0c@send.acme.example>",
    "created_at": "2026-09-09T10:14:02.118Z",
    "tags": {
      "order": "1042"
    },
    "headers": [
      {
        "name": "X-Entity-Ref-ID",
        "value": "1042"
      }
    ]
  }
}
email.opened
{
  "type": "email.opened",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "email_id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
    "from": "Acme <orders@send.acme.example>",
    "to": ["ronald.williams@example.com"],
    "subject": "Your order has shipped",
    "message_id": "<01000199a3c4d5e6-7f8a9b0c@send.acme.example>",
    "created_at": "2026-09-09T10:14:02.118Z",
    "tags": {
      "order": "1042"
    },
    "headers": [
      {
        "name": "X-Entity-Ref-ID",
        "value": "1042"
      }
    ],
    "open": {
      "ipAddress": "66.249.84.201",
      "timestamp": "2026-09-09T10:16:44.902Z",
      "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (via ggpht.com GoogleImageProxy)"
    }
  }
}
email.clicked
{
  "type": "email.clicked",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "email_id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
    "from": "Acme <orders@send.acme.example>",
    "to": ["ronald.williams@example.com"],
    "subject": "Your order has shipped",
    "message_id": "<01000199a3c4d5e6-7f8a9b0c@send.acme.example>",
    "created_at": "2026-09-09T10:14:02.118Z",
    "tags": {
      "order": "1042"
    },
    "headers": [
      {
        "name": "X-Entity-Ref-ID",
        "value": "1042"
      }
    ],
    "click": {
      "ipAddress": "203.0.113.42",
      "link": "https://acme.example/orders/1042",
      "timestamp": "2026-09-09T10:16:44.902Z",
      "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"
    }
  }
}
email.failed
{
  "type": "email.failed",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "email_id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
    "from": "Acme <orders@send.acme.example>",
    "to": ["ronald.williams@example.com"],
    "subject": "Your order has shipped",
    "message_id": "<01000199a3c4d5e6-7f8a9b0c@send.acme.example>",
    "created_at": "2026-09-09T10:14:02.118Z",
    "tags": {
      "order": "1042"
    },
    "headers": [
      {
        "name": "X-Entity-Ref-ID",
        "value": "1042"
      }
    ],
    "failed": {
      "reason": "ses_rejected"
    }
  }
}
email.suppressed
{
  "type": "email.suppressed",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "email_id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
    "from": "Acme <orders@send.acme.example>",
    "to": ["ronald.williams@example.com"],
    "subject": "Your order has shipped",
    "message_id": "<01000199a3c4d5e6-7f8a9b0c@send.acme.example>",
    "created_at": "2026-09-09T10:14:02.118Z",
    "tags": {
      "order": "1042"
    },
    "headers": [
      {
        "name": "X-Entity-Ref-ID",
        "value": "1042"
      }
    ],
    "suppressed": {
      "reason": "previous_bounce",
      "type": "Suppressed",
      "message": "The address is on this team's suppression list.",
      "diagnosticCode": ["smtp; 550 5.1.1 user unknown"]
    }
  }
}
email.canceled
{
  "type": "email.canceled",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "email_id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
    "from": "Acme <orders@send.acme.example>",
    "to": ["ronald.williams@example.com"],
    "subject": "Your order has shipped",
    "message_id": "<01000199a3c4d5e6-7f8a9b0c@send.acme.example>",
    "created_at": "2026-09-09T10:14:02.118Z",
    "tags": {
      "order": "1042"
    },
    "headers": [
      {
        "name": "X-Entity-Ref-ID",
        "value": "1042"
      }
    ]
  }
}
domain.created
{
  "type": "domain.created",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "id": "d91a7b60-1a5f-4a2e-9d1b-0d9f2c7a1e34",
    "name": "send.acme.example",
    "status": "pending",
    "created_at": "2026-09-09T09:02:44.301Z",
    "region": "eu-west-1",
    "records": [
      {
        "record": "SPF",
        "name": "rasket",
        "value": "eu1.rasket.net",
        "type": "CNAME",
        "ttl": "Auto",
        "status": "verified"
      },
      {
        "record": "DKIM",
        "name": "rasket._domainkey",
        "value": "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A…",
        "type": "TXT",
        "ttl": "Auto",
        "status": "verified"
      },
      {
        "record": "Tracking",
        "name": "links",
        "value": "links1.rasket-dns.com",
        "type": "CNAME",
        "ttl": "Auto",
        "status": "not_started"
      }
    ]
  }
}
domain.updated
{
  "type": "domain.updated",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "id": "d91a7b60-1a5f-4a2e-9d1b-0d9f2c7a1e34",
    "name": "send.acme.example",
    "status": "verified",
    "created_at": "2026-09-09T09:02:44.301Z",
    "region": "eu-west-1",
    "records": [
      {
        "record": "SPF",
        "name": "rasket",
        "value": "eu1.rasket.net",
        "type": "CNAME",
        "ttl": "Auto",
        "status": "verified"
      },
      {
        "record": "DKIM",
        "name": "rasket._domainkey",
        "value": "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A…",
        "type": "TXT",
        "ttl": "Auto",
        "status": "verified"
      },
      {
        "record": "Tracking",
        "name": "links",
        "value": "links1.rasket-dns.com",
        "type": "CNAME",
        "ttl": "Auto",
        "status": "not_started"
      }
    ]
  }
}
domain.deleted
{
  "type": "domain.deleted",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "id": "d91a7b60-1a5f-4a2e-9d1b-0d9f2c7a1e34",
    "name": "send.acme.example",
    "status": "verified",
    "created_at": "2026-09-09T09:02:44.301Z",
    "region": "eu-west-1",
    "records": [
      {
        "record": "SPF",
        "name": "rasket",
        "value": "eu1.rasket.net",
        "type": "CNAME",
        "ttl": "Auto",
        "status": "verified"
      },
      {
        "record": "DKIM",
        "name": "rasket._domainkey",
        "value": "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A…",
        "type": "TXT",
        "ttl": "Auto",
        "status": "verified"
      },
      {
        "record": "Tracking",
        "name": "links",
        "value": "links1.rasket-dns.com",
        "type": "CNAME",
        "ttl": "Auto",
        "status": "not_started"
      }
    ]
  }
}
suppression.added
{
  "type": "suppression.added",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "id": "2c9a7f10-b4e8-4d61-8a3c-5f7b9e1d2a06",
    "email": "ronald.williams@example.com",
    "origin": "bounce",
    "source_id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
    "created_at": "2026-09-09T10:16:44.902Z"
  }
}
suppression.removed
{
  "type": "suppression.removed",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "id": "2c9a7f10-b4e8-4d61-8a3c-5f7b9e1d2a06",
    "email": "ronald.williams@example.com",
    "origin": "bounce",
    "source_id": null,
    "created_at": "2026-09-09T10:16:44.902Z"
  }
}
contact.created
{
  "type": "contact.created",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "id": "e169aa45-1ecf-4183-9955-b1499d5701d3",
    "email": "ronald.williams@example.com",
    "first_name": "Ronald",
    "last_name": "Williams",
    "unsubscribed": false,
    "created_at": "2026-09-08T22:22:17.595Z",
    "updated_at": "2026-09-08T22:22:17.595Z",
    "segment_ids": []
  }
}
contact.updated
{
  "type": "contact.updated",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "id": "e169aa45-1ecf-4183-9955-b1499d5701d3",
    "email": "ronald.williams@example.com",
    "first_name": "Ronald",
    "last_name": null,
    "unsubscribed": true,
    "created_at": "2026-09-08T22:22:17.595Z",
    "updated_at": "2026-09-09T10:16:44.902Z",
    "segment_ids": ["78261eea-8f8b-4381-83c6-79fa7120f1cf"]
  }
}
contact.deleted
{
  "type": "contact.deleted",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "id": "e169aa45-1ecf-4183-9955-b1499d5701d3",
    "email": "ronald.williams@example.com",
    "first_name": "Ronald",
    "last_name": null,
    "unsubscribed": true,
    "created_at": "2026-09-08T22:22:17.595Z",
    "updated_at": "2026-09-08T22:22:17.595Z",
    "segment_ids": []
  }
}
email.received
{
  "type": "email.received",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "email_id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
    "created_at": "2026-09-09T10:16:44.902Z",
    "from": "Ronald Williams <ronald.williams@example.com>",
    "to": ["support@inbound.acme.example"],
    "subject": "Order #1042 arrived damaged",
    "message_id": "<CAF1042.damaged@mail.example.com>",
    "bcc": [],
    "cc": ["billing@example.com"],
    "received_for": ["support@inbound.acme.example"],
    "attachments": [
      {
        "id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c",
        "filename": "photo.png",
        "content_type": "image/png",
        "content_disposition": "inline",
        "content_id": "photo-1042@example.com"
      },
      {
        "id": "d91a7b60-1a5f-4a2e-9d1b-0d9f2c7a1e34",
        "filename": "damage-report.pdf",
        "content_type": "application/pdf",
        "content_disposition": "attachment"
      }
    ]
  }
}
automation.run.started
{
  "type": "automation.run.started",
  "created_at": "2026-09-09T10:14:02.118Z",
  "data": {
    "id": "0199d2f1-4c4e-7a20-9c31-6f2b8a0e5e02",
    "automation_id": "0199d2f1-4c4e-7a20-9c31-6f2b8a0e5e01",
    "automation_version_id": "0199d2f1-4c4e-7a20-9c31-6f2b8a0e5e03",
    "contact_id": "e169aa45-1ecf-4183-9955-b1499d5701d3",
    "status": "running",
    "trigger": {
      "event_name": "trial.started",
      "event_id": "0199d2f1-4c4e-7a20-9c31-6f2b8a0e5e06"
    },
    "current_step_key": null,
    "started_at": "2026-09-09T10:14:02.118Z",
    "completed_at": null,
    "created_at": "2026-09-09T10:14:02.118Z",
    "error": null
  }
}
automation.run.completed
{
  "type": "automation.run.completed",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "id": "0199d2f1-4c4e-7a20-9c31-6f2b8a0e5e02",
    "automation_id": "0199d2f1-4c4e-7a20-9c31-6f2b8a0e5e01",
    "automation_version_id": "0199d2f1-4c4e-7a20-9c31-6f2b8a0e5e03",
    "contact_id": "e169aa45-1ecf-4183-9955-b1499d5701d3",
    "status": "completed",
    "trigger": {
      "event_name": "trial.started",
      "event_id": "0199d2f1-4c4e-7a20-9c31-6f2b8a0e5e06"
    },
    "current_step_key": null,
    "started_at": "2026-09-09T10:14:02.118Z",
    "completed_at": "2026-09-09T10:16:44.902Z",
    "created_at": "2026-09-09T10:14:02.118Z",
    "error": null
  }
}
automation.run.failed
{
  "type": "automation.run.failed",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "id": "0199d2f1-4c4e-7a20-9c31-6f2b8a0e5e02",
    "automation_id": "0199d2f1-4c4e-7a20-9c31-6f2b8a0e5e01",
    "automation_version_id": "0199d2f1-4c4e-7a20-9c31-6f2b8a0e5e03",
    "contact_id": "e169aa45-1ecf-4183-9955-b1499d5701d3",
    "status": "failed",
    "trigger": {
      "event_name": "trial.started",
      "event_id": "0199d2f1-4c4e-7a20-9c31-6f2b8a0e5e06"
    },
    "current_step_key": null,
    "started_at": null,
    "completed_at": "2026-09-09T10:16:44.902Z",
    "created_at": "2026-09-09T10:14:02.118Z",
    "error": {
      "reason": "automation_quota_reached"
    }
  }
}
inbox.conversation.created
{
  "type": "inbox.conversation.created",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "conversation_id": "0199d3a4-7a40-7c55-b1e3-0f0a3b6d2e91",
    "channel": {
      "id": "0199d3a4-1b20-7a11-9e02-4c6d8e0f1a22",
      "address": "support@acme.example"
    },
    "origin": "email",
    "actor": {
      "type": "system",
      "id": null,
      "name": "Rasket"
    },
    "subject": "Order #1042 arrived damaged",
    "status": "open",
    "assignee": null,
    "message_id": "0199d3a4-7a52-7d10-8c44-91b2e6f0aa03",
    "from": "Ronald Williams <ronald.williams@example.com>"
  }
}
inbox.message.received
{
  "type": "inbox.message.received",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "conversation_id": "0199d3a4-7a40-7c55-b1e3-0f0a3b6d2e91",
    "channel": {
      "id": "0199d3a4-1b20-7a11-9e02-4c6d8e0f1a22",
      "address": "support@acme.example"
    },
    "origin": "email",
    "actor": {
      "type": "system",
      "id": null,
      "name": "Rasket"
    },
    "subject": "Order #1042 arrived damaged",
    "status": "open",
    "assignee": null,
    "message_id": "0199d3a4-7a52-7d10-8c44-91b2e6f0aa03",
    "from": "Ronald Williams <ronald.williams@example.com>",
    "attachments": 1
  }
}
inbox.reply.sent
{
  "type": "inbox.reply.sent",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "conversation_id": "0199d3a4-7a40-7c55-b1e3-0f0a3b6d2e91",
    "channel": {
      "id": "0199d3a4-1b20-7a11-9e02-4c6d8e0f1a22",
      "address": "support@acme.example"
    },
    "origin": "email",
    "actor": {
      "type": "member",
      "id": "0199d3a4-2c31-7b22-8f13-5d7e9f102b33",
      "name": "Dana Park"
    },
    "subject": "Order #1042 arrived damaged",
    "status": "pending",
    "assignee": {
      "user_id": "0199d3a4-2c31-7b22-8f13-5d7e9f102b33",
      "name": "Dana Park"
    },
    "message_id": "0199d3a4-7a52-7d10-8c44-91b2e6f0aa03",
    "email_id": "4ef9a417-02e9-4d39-ad75-9611e0fcc33c"
  }
}
inbox.note.created
{
  "type": "inbox.note.created",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "conversation_id": "0199d3a4-7a40-7c55-b1e3-0f0a3b6d2e91",
    "channel": {
      "id": "0199d3a4-1b20-7a11-9e02-4c6d8e0f1a22",
      "address": "support@acme.example"
    },
    "origin": "email",
    "actor": {
      "type": "member",
      "id": "0199d3a4-2c31-7b22-8f13-5d7e9f102b33",
      "name": "Dana Park"
    },
    "subject": "Order #1042 arrived damaged",
    "status": "open",
    "assignee": {
      "user_id": "0199d3a4-2c31-7b22-8f13-5d7e9f102b33",
      "name": "Dana Park"
    },
    "note_id": "0199d3a4-8b63-7e21-9d55-a2c3f7012b14"
  }
}
inbox.conversation.assigned
{
  "type": "inbox.conversation.assigned",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "conversation_id": "0199d3a4-7a40-7c55-b1e3-0f0a3b6d2e91",
    "channel": {
      "id": "0199d3a4-1b20-7a11-9e02-4c6d8e0f1a22",
      "address": "support@acme.example"
    },
    "origin": "email",
    "actor": {
      "type": "member",
      "id": "0199d3a4-2c31-7b22-8f13-5d7e9f102b33",
      "name": "Dana Park"
    },
    "subject": "Order #1042 arrived damaged",
    "status": "open",
    "assignee": {
      "user_id": "0199d3a4-2c31-7b22-8f13-5d7e9f102b33",
      "name": "Dana Park"
    },
    "previous_assignee": null
  }
}
inbox.conversation.status_changed
{
  "type": "inbox.conversation.status_changed",
  "created_at": "2026-09-09T10:16:44.902Z",
  "data": {
    "conversation_id": "0199d3a4-7a40-7c55-b1e3-0f0a3b6d2e91",
    "channel": {
      "id": "0199d3a4-1b20-7a11-9e02-4c6d8e0f1a22",
      "address": "support@acme.example"
    },
    "origin": "email",
    "actor": {
      "type": "member",
      "id": "0199d3a4-2c31-7b22-8f13-5d7e9f102b33",
      "name": "Dana Park"
    },
    "subject": "Order #1042 arrived damaged",
    "status": "done",
    "assignee": {
      "user_id": "0199d3a4-2c31-7b22-8f13-5d7e9f102b33",
      "name": "Dana Park"
    },
    "previous_status": "open"
  }
}

Subscribing

Pick the types you want when you create a webhook endpoint, on the webhooks reference, which is also where signature verification, the retry schedule and replay live.

  • Events are not ordered. An email.delivered can arrive before the email.sent for the same message.
  • Dedupe on the svix-id header, which is stable across retries and replays. The payload has no id of its own.