Формат событий вебхука
Примеры данных, которые WAIX отправляет на адрес вашего вебхука.
Входящее сообщение
{
"id": "33333333-3333-4333-8333-333333333333",
"type": "message.received",
"created_at": "2026-09-22T06:00:00.000Z",
"data": {
"connection_id": "11111111-1111-4111-8111-111111111111",
"message_id": "wamid.EXAMPLE",
"contact_wa_id": "77011234567",
"type": "text",
"body": "Здравствуйте!",
"timestamp": "1790056800"
}
}Это пример структуры. data.message_id — ID провайдера, а не UUID из POST /messages. created_at — время события WAIX; timestamp — строка времени из Meta. Не путайте секунды Unix и миллисекунды.
Сообщение, отправленное с телефона
Отметьте message.echo в настройках вебхука. WAIX передаст новые сообщения, отправленные из WhatsApp Business на подключённом с Coexistence номере. Подписка на входящие сообщения автоматически эту опцию не включает. Старая история при включении не отправляется.
{
"type": "message.echo",
"data": {
"connection_id": "11111111-1111-4111-8111-111111111111",
"message_id": "wamid.EXAMPLE",
"contact_wa_id": "77011234567",
"direction": "outbound_app",
"source": "whatsapp_business_app",
"type": "text",
"body": "Ваш заказ готов, можно забирать.",
"content": {"body": "Ваш заказ готов, можно забирать."},
"context": null,
"from": "77077654321",
"to": "77011234567",
"status": "sent",
"timestamp": "1790056800"
}
}data.to и data.contact_wa_id — получатель, data.from — отправитель из события Meta. content содержит данные типа сообщения: текст, координаты, контакт, реакцию или метаданные вложения. Для файла это идентификатор Meta, MIME-тип, подпись и другие доступные поля, а не сам файл и не публичная ссылка. context содержит ссылку на сообщение, на которое ответили, если Meta её передала.
sent означает, что сообщение отправлено из приложения, а не доставлено или прочитано. Это отдельное событие: не запускайте на него автоматический ответ как на входящее сообщение. Редактирование и удаление сообщений в message.echo не входят.
Статус
Для message.status.updated поле data содержит connection_id, message_id, status, timestamp и recipient_id. Сопоставляйте ID провайдера с записью журнала. Код webhook-получателя должен терпеть дополнительные поля и неизвестные типы событий.
Уникальность
Поле id в корне события совпадает с заголовком X-Waix-Delivery. Сохраняйте его и обрабатывайте каждый ID только один раз: одно событие может прийти повторно. Вебхук содержит данные в формате WAIX, без полного исходного запроса Meta и без содержимого медиафайла.
Поможем с подключением и работой WAIX.