Outbound webhooks let your systems react to events in Flowella in near real-time, without polling the API. You configure a URL and a list of event types, and Flowella POSTs a signed JSON payload to that URL whenever one of those events fires.Documentation Index
Fetch the complete documentation index at: https://knowledge.flowella.io/llms.txt
Use this file to discover all available pages before exploring further.
Configuring a webhook
You need the Owner or Admin role.Add a webhook
Click Add webhook, paste the public HTTPS URL of your endpoint, and pick the event types you want to receive.
Save the signing secret
Flowella generates a unique signing secret for the webhook. Copy it — you will use it to verify incoming requests.
Event types
You can subscribe to any of these product events:| Event | When it fires |
|---|---|
message.received | An inbound WhatsApp message has arrived from a contact |
message.sent | Flowella has accepted your outbound message and submitted it to Meta |
message.delivered | Meta confirmed the message was delivered to the recipient’s device |
message.read | The recipient opened the message |
message.failed | Meta returned a failure for the message |
conversation.opened | A conversation has moved into the open state |
conversation.closed | A conversation has been closed |
optout.created | A contact opted out on a specific channel |
template.status_updated | Meta changed a template’s status (approved, rejected, paused, disabled) |
webhook.test is sent only when you click Send test — you do not subscribe to it explicitly.
Request format
Flowella POSTs a JSON body to your URL with these headers:Verifying signatures
Every request includes anX-Flowella-Signature header. The value is the HMAC-SHA256 hex digest of the raw UTF-8 request body keyed with your webhook’s signing secret.
Verify before processing:
Responses, retries, and timeouts
- Timeout: Flowella waits up to 10 seconds for your endpoint to respond.
- Success: any
2xxresponse is treated as successful delivery. - Retries: failed deliveries are retried up to 3 attempts with backoff.
- Auto-disable: if a webhook accumulates 10 consecutive failures, Flowella deactivates it. You will need to re-enable it from Settings → Webhooks after fixing your endpoint.
Idempotency
Webhooks may be retried, so the same logical event can arrive more than once. To process safely:- Use the
data.idof the event (or a derived key likeevent + data.messageId) as an idempotency key. - Keep a short-lived cache of processed keys (a few hours is enough for retries).
- Treat duplicates as no-ops.
Listing and managing deliveries
Settings → Webhooks shows recent delivery attempts per webhook, including:- Timestamp
- Event type
- Response status
- A truncated response body (up to ~1 KB) for debugging

