Skip to main content

Overview

WhatsRB Cloud sends HTTP POST requests to your configured endpoint when events occur. Register an endpoint via the API or the dashboard.

Supported events

Payload format

The data object content varies by event type β€” see below for each event.

message.received payload

Fired when an inbound message is received on any channel.

Common fields

Supported message types

Interactive metadata

When a user taps a button or selects a list item from a template, the message type is interactive. The metadata object contains: Example β€” button reply:
Example β€” list reply:

Handling interactive replies

Route by metadata.interactive_type and use the option id (not title) for reliable matching:
The content field always contains a human-readable string, even for rich message types. Use it for display, use metadata for logic.

Message edits

When a user edits a message, WhatsRB updates the original message’s content in place. No message.received event is fired β€” the edit is silent.

Unsupported messages

Messages with type unsupported (e.g. polls) are silently ignored and do not trigger a webhook.

agent_run.completed payload

Fired when an AI agent completes processing an inbound message.
Use the from field to match the sender to a user in your system. Use run_id for idempotent processing β€” webhook deliveries are at-least-once.

Signature verification

Every request includes two headers:
  • X-Webhook-Signature β€” HMAC-SHA256 signature with sha256= prefix
  • X-Webhook-Event β€” the event name
The signature format is:

Verify with the Ruby SDK

Verify manually (any language)

Always use a constant-time string comparison to prevent timing attacks.

Getting your webhook secret

The secret is returned once when you create the endpoint:
Store it securely β€” it cannot be retrieved again.