flow.<suffix> - Custom Flow Events
Author-defined events emitted from flows via the Outbound Webhook Event card
type: flow.<suffix> (e.g. flow.order_confirmed, flow.lead_qualified)
Authored by operators via the Outbound Webhook Event flow card. The <suffix> is author-defined - whatever the flow card's Event name field resolves to at runtime.
When it fires
- A flow reaches an Outbound Webhook Event card. The card needs the Pro plan or higher.
The flow moves on at once, whatever happens to the delivery.
Subscribing
In the connection's Event subscriptions section, pick Custom flow events (flow.*) under Flows. It matches every flow.* event in your organisation, including the bare flow event sent by a card with an empty Event name. You cannot subscribe to a single suffix, so filter on type on your side.
New suffixes that authors invent later reach the same subscription without any change on your side. Key your receiver off type (or meta.event) and do not hardcode a list.
data shape
type Data =
| Record<string, unknown> // If the author's payload parsed to a JSON object
| { value: unknown }; // If the parsed JSON was a non-object (array / primitive)
// - wrapped to keep `data` a stable object shape.The card's JSON payload is a raw JSON string. Variables are filled in before the JSON is parsed. What lands at the envelope data root depends on what the payload parses to:
| Parsed JSON | Delivered data |
|---|---|
| Object (recommended) | The object itself |
| Array or primitive (string, number, bool) | { "value": <parsed> } |
| Malformed / empty | {} (flow continues; parse error is logged) |
Example envelope
{
"id": "evt_01JV4QEJX54A0E3KJ9W8R1Z4DP",
"type": "flow.order_confirmed",
"timestamp": "2026-04-24T14:00:00.000Z",
"data": {
"orderId": "ORD-123",
"status": "confirmed",
"contactId": "6804f4d5a6f9f35f6e66f1a2"
},
"meta": {
"eventId": "evt_01JV4QEJX54A0E3KJ9W8R1Z4DP",
"event": "flow.order_confirmed",
"occurredAt": "2026-04-24T14:00:00.000Z",
"organisationId": "6640f3d5c8a0d7e8b7f20222",
"connectionId": "6640f45ac8a0d7e8b7f2014a",
"apiVersion": "2026-04-01",
"attempt": 1
}
}Example - wrapped primitive
Author's payload is "ORD-123":
{
"id": "evt_...",
"type": "flow.order_id",
"timestamp": "2026-04-24T14:00:00.000Z",
"data": { "value": "ORD-123" },
"meta": { "event": "flow.order_id", "apiVersion": "2026-04-01", "attempt": 1 }
}Notes
- Suffix allowed characters:
a–z,A–Z,0–9,_,.,-. Invalid suffixes cause a validation error and the flow stops at the card. - Malformed JSON in the card logs a parse error and emits
data: {}- the flow keeps running. - Blank payload emits
data: {}. - Variables are filled in before parsing - put quotes around text variables in the JSON.
- Fire-and-forget - the flow advances immediately regardless of subscriber status.
Related
- Outbound Webhook Event card - flow-author reference
- Outbound Webhooks - overview and event catalogue
- Envelope & Delivery - headers, signing, retry policy