Webhooks & APIOutbound

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.

Subscribing

Subscription valueWhat it matches
flow.<exact-name>Only that specific custom event
flowEvery flow.* event emitted in the organisation (namespace wildcard)

Both are configured on the connection's Subscribed events picker. Use flow when you want a single subscriber to receive every custom event your authors emit.

Subscribing to flow means you will start receiving events for new suffixes authors invent later — without any subscription change on your side. Design your receiver to key off type (or meta.event) rather than hardcoding 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 flow card authors a raw JSON string in a Monaco editor, with {{variable}} interpolation applied before JSON.parse. What lands at the envelope data root depends on what the payload parses to:

Parsed JSONDelivered 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: {}.
  • Variable interpolation happens before parse — quote string variables correctly in the JSON source.
  • Fire-and-forget — the flow advances immediately regardless of subscriber status.

On this page