What are Webhooks
Webhooks are how Hub Chatt2.me notifies you about events in real time. Without a configured webhook, you can only send messages — but not receive your users' replies or know whether messages were delivered.
How it works
User sends a message on WhatsApp
│
▼
Hub Chatt2.me receives and processes
│
▼
Hub makes a POST to your endpoint
{ event type, content, metadata }
│
▼
Your server responds with 200 OK
The Hub sends a POST request to the URL you register. Your server must respond with HTTP 200 to confirm receipt. If the response is not 200, the Hub records the error in the webhook log.
Event types
eventType | When it fires |
|---|---|
Message | A message was received from a user on your channel |
MessageStatus | The delivery status of a message you sent has changed |
Message event
Fired when a user sends any type of message to one of your channels: text, image, audio, location, interactive button reply, etc.
MessageStatus event
Fired when the delivery status of a message you sent changes — for example: sent → delivered → read (when available in the channel).
Why configure it now?
If you are building a chatbot, customer service system, or any flow that reacts to user messages, the webhook is required. Without it:
- You don't know when the user replied
- You cannot identify the
to(chat_id, PSID, IGSID) to respond - You cannot implement conversational flows
- You don't know if your messages were delivered
Your endpoint requirements
- Must be accessible via HTTPS at a public URL
- Must respond with
HTTP 200within a reasonable time - Must accept
POSTrequests with a JSON body - Does not need special authentication by default (but you can add custom headers)
- Must pass endpoint verification when you create or change the webhook so Hub can set
isVerified— see Endpoint verification - If Require signature is enabled, validate
X-hub-Signatureusing your signing secret — see Verifying webhook signatures
To test webhooks during local development, use tools like ngrok, localtunnel, or Cloudflare Tunnel to expose your local server via HTTPS.