Webhooks and 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.

When it fires

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 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: {}.
  • 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.

Was this page helpful?

On this page