Skip to main content
When you configure a webhook, Zenzap sends HTTP POST requests to your URL when events occur. This page documents the payload structure for each event type.

Event Envelope

All webhook events share the same envelope structure:

HTTP Headers

Each webhook delivery includes these headers:

Signature Verification

When a secret is configured, verify webhooks by calculating:

Message Events

message.created

Sent when a new message is posted in a topic where your bot is a member.

message.updated

Sent when a message is edited or when voice message transcription completes.

message.deleted

Sent when a message is deleted.

Message Object

The message object in message events contains:

Message Types


Attachments

File attachments include a signed download URL:
Attachment URLs expire after 60 minutes. Download files promptly after receiving the webhook.

Voice Message Transcription

Voice messages (audio attachments) are automatically transcribed. The flow is:
  1. message.created arrives with transcription.status: "Pending"
  2. message.updated arrives when transcription completes
Transcription Status Values:

Mentions

To create mentions via External API message sending, use <@profileId> in message text. Example request text:
In webhook payloads, mentions are returned under message.mentions. message.mentionedProfiles may also be present as a compact ID list.
message.text keeps the mention token format (<@profileId>), while mentions[] provides resolved display names. mentions fields:

Reply Messages

Messages that reply to other messages include:

Location Messages

address is optional and is included only when available.

Task Messages

Task snapshots are sent when tasks are created, updated, or their status changes:
Task Actions:

Contact Messages


Reaction Events

reaction.added

reaction.removed

Same structure as reaction.added.

Member Events

member.added

member.removed


Topic Events

topic.updated

Sent when a topic’s name or description is changed.
Only changed fields are included in the payload. If only the description was updated, name would be absent.

Poll Vote Events

poll_vote.created

Sent when a user votes on a poll in a topic where your bot is a member.

poll_vote.deleted

Sent when a user removes their vote from a poll.

Retry & Auto-Pause Behavior

  • Webhooks are retried up to 3 times with exponential backoff on failure
  • After 10 consecutive failures, the webhook is automatically paused
  • Re-enable a paused webhook via the Update webhook configuration endpoint