Events
Every event Goomzo sends, and what each one carries.
An event is one thing that happened, sent to every endpoint that hears it as a POST with a JSON body.
Events
| Event | When |
|---|---|
message.sent | The gateway took a message. |
message.delivered | A message reached the customer's phone. |
message.read | The customer read a message. WhatsApp only. |
message.failed | A message couldn't be sent or delivered. error says why. |
message.received | A customer sent you a message on WhatsApp. |
broadcast.finished | A broadcast finished going out, or couldn't. Includes its counts. |
customer.created | A customer was added, one by one, through the API or by import. |
sms.balance_low | Fewer than 100 SMS are left. Sent once each time it falls below. |
webhook.test | Only when you select Send test event. |
Payloads
Each event is a POST with a JSON body:
{
"id": "evt_4hq2v9n1c8x0t6pk",
"type": "message.delivered",
"timestamp": "2026-11-08T09:30:00Z",
"organizationId": "org_...",
"data": {
"id": "msg_...",
"broadcastId": null,
"customerId": "cus_...",
"channel": "sms",
"to": { "name": "Amina Mushi", "phone": "+255712345678" },
"status": "delivered",
"error": null,
"cost": 1,
"sentAt": "2026-11-08T09:29:58Z",
"deliveredAt": "2026-11-08T09:30:00Z",
"failedAt": null,
"test": false
}
}data depends on the event:
- Messages:
id,broadcastId,customerId,channel,to(name, andphoneoremail),status,error,cost,sentAt,deliveredAt,readAt,failedAtandtest. A read receipt that arrives before the delivery report sends onlymessage.read. message.received:id,customerId,channel,from(their number),name(their WhatsApp name),kind(text;buttonorlistfor an option they chose;reaction;image,video,audio,documentorsticker;location;contacts; orunsupported),text(a file's caption),attachment,replyTo(the id of the message it answers, or null) andreceivedAt.attachmentdescribes a file, place or contact cards; a file'surlserves it with your API key once itsstateiskept, usually a few seconds after the event.broadcast.finished:id,name,channel,status(sentorfailed),error,recipients,sent,delivered,failedandtest.customer.created:id,name,phone,emailandattributes.sms.balance_low:leftandthreshold.
Next steps
Last updated