FlowsEditorTriggers

Webhook Received

Fire a flow when an external system POSTs to a Wexio webhook URL

The Webhook Received trigger runs a flow when an outside system, such as Stripe, Shopify, your backend or an n8n workflow, sends an HTTP POST to a Wexio webhook URL.

This trigger needs the Pro or Enterprise plan.

Webhook Received trigger setup

Before You Start

This trigger points at an inbound webhook connection. Create the connection first in Settings → Webhooks and API → Webhooks. The connection holds the URL, the authentication, the contact mapping and the payload schema. See Webhooks → Inbound.

Many triggers in many flows can use the same connection.

Configuration

The trigger has one field, the connection to listen to.

Pick a webhook connection
FieldDescription
Webhook connectionOne of your active inbound connections. If you have none, click Create webhook connection.

The connection controls everything else: the URL, the authentication, how to find the contact and which fields become variables.

How It Works

External System                         Wexio
      │                                   │
      │  POST /webhooks/in/{connectionId} │
      │  Authorisation header or secret   │
      │  Body: { customer: {...}, ... }   │
      │ ────────────────────────────────► │
      │                                   │
      │                        1. Verify authentication
      │                        2. Parse the JSON body
      │                        3. Resolve the contact using the
      │                           connection's identifier mapping
      │                        4. Find the published flows with a
      │                           Webhook Received trigger on this
      │                           connection
      │                        5. Start them
      │                                   │
      │  202 Accepted                     │
      │ ◄──────────────────────────────── │

This trigger starts a flow only from a webhook. A contact's incoming message never starts it, whatever the flow's other rules say.

Variables

Each field in the payload becomes a flow variable under the webhook. namespace.

A payload like

{
  "customer": { "id": "cus_123", "email": "jane@example.com" },
  "order":    { "id": "ord_456", "total": 99.50, "currency": "USD" }
}

exposes:

  • {{webhook.customer.id}}
  • {{webhook.customer.email}}
  • {{webhook.order.id}}
  • {{webhook.order.total}}
  • {{webhook.order.currency}}

Nested objects are flattened into dotted names. To work with a list, use a Condition or API Call card.

To see real fields in the variable picker, capture a sample payload on the connection. See Webhooks → Inbound → Capture Schema.

Contact Resolution

The connection decides how the incoming payload maps to a Wexio contact. The mapping is:

  • Contact identifier type - how to look the contact up: Chat ID, Phone Number, Email, or the user ID on a connected channel.
  • JSON path to identifier - where to read it in the payload, for example $.customer.email.

See Webhooks → Inbound → Contact Resolution for the complete setup.

If the path resolves to no matching contact, the webhook log row is flagged IDENTIFIER_NOT_FOUND and no flow runs.

Messaging Window

Webhook Received is a proactive trigger - there is no user message at the moment it fires, so the 24-hour messaging window may be closed.

ChannelOutside 24h window
TelegramAny card - no window
ViberAny card - may be billable
WhatsAppMust start with a Template card
InstagramDelivery fails; 7-day extension available with human_agent tag

Rules and Caveats

  • Many flows, one connection. Several flows can listen to the same connection. Each published flow starts when a request arrives.
  • Payload limit. 100 KB per request.
  • Replays. Send an X-Idempotency-Key header and Wexio ignores a repeated request with the same key.

Common Use Cases

  • Payment notifications - Stripe, Paddle or Revolut → send a receipt with a WhatsApp template
  • Store events - an order is paid → start a fulfilment flow
  • CRM changes - a property changes → ask the contact a follow-up question
  • No-code tools - n8n, Zapier or Make call Wexio for the messaging step
  • Your backend - a ticket is escalated → message the contact

Was this page helpful?

On this page