Webhooks & APIOutbound
message.outbound.created
Emitted when Wexio sends a message to a contact
type: message.outbound.created
Fired when Wexio sends a message out to the contact — from a flow card, the inbox operator UI, the API, or any internal process.
When it fires
- A flow card (Text, Media, Template, Buttons, …) sends to the contact.
- An operator replies manually from the Inbox.
- An AI Agent or external API call writes a message to the contact.
data shape
type Data = {
chat: ChatPayload;
message: MessagePayload; // direction: "OUTBOUND"
contact?: ContactPayload;
};chat— the owning chat. SeeChatPayload.message— the outbound message.directionis always"OUTBOUND". SeeMessagePayload.contact— the recipient, when resolvable.
Example envelope
{
"id": "evt_b1c2d3e4-f5a6-7890-bcde-f12345678901",
"type": "message.outbound.created",
"timestamp": "2026-04-24T12:14:30.000Z",
"data": {
"chat": {
"id": "6804f4c2a6f9f35f6e66f1a1",
"integrationId": "67f95b0126a4d1c9e3f0aa12",
"channel": "WHATSAPP",
"whatsappId": "wa_99887766"
},
"message": {
"id": "msg_02",
"chatId": "6804f4c2a6f9f35f6e66f1a1",
"integrationId": "67f95b0126a4d1c9e3f0aa12",
"direction": "OUTBOUND",
"type": "TEXT",
"text": "Hi Alex — how can we help?",
"sentAt": "2026-04-24T12:14:30.000Z",
"raw": { "providerMessageId": "wamid.HBg..." }
},
"contact": {
"peopleId": "6804f4d5a6f9f35f6e66f1a2",
"phoneNumber": "+46700000000"
}
},
"meta": {
"eventId": "evt_b1c2d3e4-f5a6-7890-bcde-f12345678901",
"event": "message.outbound.created",
"occurredAt": "2026-04-24T12:14:30.000Z",
"organisationId": "6640f3d5c8a0d7e8b7f20222",
"connectionId": "6640f45ac8a0d7e8b7f2014a",
"apiVersion": "2026-04-01",
"attempt": 1
}
}Notes
- Fires for both bot/flow-sent messages and operator-sent messages.
- Use
message.raw.providerMessageIdto correlate with your own provider-side webhook status updates. - Subsequent delivery transitions (
deliveredAt,readAt,failedAt) arrive asmessage.outbound.updatedevents, not as a newcreatedevent.
Related
message.outbound.updated— status transitions and editsmessage.outbound.deleted— hard-delete- Shared Types —
MessagePayload,MessageType,MediaType - Envelope & Delivery