Outbound Webhook Event Card
Emit a custom flow event to outbound webhook connections
The Outbound Webhook Event card fires a custom flow.* event to your outbound webhook connections mid-flow. Use it to notify external systems when a flow reaches a meaningful checkpoint — order confirmed, lead captured, survey completed, support ticket escalated, trial converted.

The card is fire-and-forget — it hands the event to the outbound delivery queue and advances to the next card immediately. A slow or broken subscriber URL never blocks flow execution.
This card is available on Pro and Enterprise plans. Lower tiers do not show it in the card palette.
Configuration
| Setting | Description |
|---|---|
| Event name | Custom suffix appended to the flow. namespace. Type order_confirmed → emits flow.order_confirmed. Leave blank to emit the bare flow event. |
| Connection | Optional — target a specific outbound connection. Leave empty to broadcast to every active connection subscribed to this event (or to the flow namespace). |
| Payload | Raw JSON body — authored in a Monaco JSON editor. Supports {{variable}} interpolation before parsing. |
Event name
Wexio owns the flow. prefix — the UI shows a read-only flow. before your input and the final event name as a helper line.
| Input | Emits |
|---|---|
order_confirmed | flow.order_confirmed |
lead.qualified | flow.lead.qualified |
| (empty) | flow |
Allowed characters in the suffix: a–z, A–Z, 0–9, _, ., -. Invalid characters cause a validation error and the flow stops at this card.
Connection
| Value | Behavior |
|---|---|
| (empty) | Broadcasts to every active outbound connection whose subscribed events include this event or the flow namespace |
| Specific connection | Delivers only to that connection |
Payload
A raw JSON string authored in Monaco. Flow variables are interpolated before JSON.parse, so quote string variables correctly:
{
"orderId": "{{webhook.order.id}}",
"status": "confirmed",
"customer": {
"email": "{{flow.people.email}}",
"name": "{{flow.people.first_name}} {{flow.people.last_name}}"
}
}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) |
What Your Subscribers Receive
{
"id": "evt_01JV4QEJX54A0E3KJ9W8R1Z4DP",
"type": "flow.order_confirmed",
"timestamp": "2026-04-23T12:00:00.000Z",
"data": {
"orderId": "ORD-123",
"status": "confirmed"
},
"meta": {
"eventId": "evt_01JV4QEJX54A0E3KJ9W8R1Z4DP",
"event": "flow.order_confirmed",
"occurredAt": "2026-04-23T12:00:00.000Z",
"organisationId": "…",
"attempt": 1
}
}Along with the signature + event headers — see Outbound Webhooks → Envelope.
Subscribing on the Other Side
Users of your custom events subscribe either:
- To a specific event — e.g. subscribe to
flow.order_confirmedfor only order confirmations. - To the
flownamespace — receives everyflow.*event your org emits. Handy when you want one subscriber to get all flow checkpoints.
Both are configured on the outbound connection's subscription picker.
Connections
- 1 input port — receives execution.
- 1 output port:
- Next — always fires. Emission is fire-and-forget; the flow never waits for delivery.
Operations Cost
1 operation per execution.
Rules and Caveats
- Fire-and-forget. The card never blocks the flow. Even if the subscriber is down, the flow continues to the next card.
- Malformed JSON is tolerated. Parse errors log and emit an empty object — the flow doesn't stop.
- Array/primitive wrapping. Anything that isn't a JSON object is wrapped under
{ "value": ... }so your subscribers always see a stable shape atdata. - No messaging channel interaction. This card doesn't send anything to the contact — it's pure outbound HTTP to external systems.
- Plan gated. Pro and Enterprise only.
Common Use Cases
- CRM sync — fire
flow.lead_capturedwhen a flow finishes collecting name/email/phone - Revenue tracking — fire
flow.order_confirmedwith the resolved order ID and amount - Ops notifications — fire
flow.ticket_escalatedwith the chat ID so downstream dashboards can pick it up - BI export — fire
flow.survey_completedwith the full response payload for BigQuery ingestion - Webhook fan-out to multiple systems — leave
connectionIdempty, subscribe multiple outbound connections toflow.order_confirmed, each one delivers to a different system
Related
- Outbound Webhooks — set up outbound connections, subscriptions, and auth
- Webhook History — browse delivery attempts and retries