WhatsAble Bot vs Notifier System
Before setting up a webhook, make sure you’re using the right product for your use case.| WhatsAble Bot (this page) | Notifier System | |
|---|---|---|
| How it works | You (or a customer) sends a WhatsApp message to WhatsAble’s number → triggers your n8n / Make / Zapier scenario | You send WhatsApp messages from your own WhatsApp Business number to your leads or customers |
| Best for | Building AI agents, personal automation triggers, developer workflows | Customer outreach, marketing, CRM notifications |
| Webhook direction | Inbound — WhatsAble calls your endpoint | Inbound — your automation platform receives the event |
If you want to send messages to leads or customers from your own WhatsApp Business number, use the Notifier System instead.
What are Webhooks?
A webhook is an HTTP endpoint you host that WhatsAble calls every time a relevant event occurs in your account. Instead of repeatedly asking “did anything happen?”, your server receives a real-timePOST request with the full event payload the instant the event fires.
Common things you can do with WhatsAble webhooks:
- Trigger n8n, Make, or Zapier scenarios the moment someone messages your WhatsAble bot number
- Build AI agents that react to WhatsApp messages in real time
- Pipe incoming customer messages into your CRM or support desk
- Log chat history to your own database
The Webhooks Dashboard
Navigate to Operations → Webhooks (/operations/webhook) in your WhatsAble dashboard to manage all your registered endpoints.
| Action | How |
|---|---|
| Add a webhook | Click New Webhook in the toolbar |
| Search | Type in the search bar to filter endpoints by URL |
| Copy a URL | Click the copy icon next to any endpoint URL |
| Delete | Open the ⋮ menu on any row → Delete — requires confirmation |
The Active Webhooks counter in the toolbar shows how many endpoints are currently registered in your account.
Adding a new endpoint
Enter your Endpoint URL
Paste the full URL of your server endpoint into the Endpoint URL field.
The URL must begin with
http:// or https://. HTTPS is strongly recommended for production.Deleting an endpoint
Find the webhook
Use the search bar or scroll through the table to locate the endpoint you want to remove.
Webhook Data Model
Every webhook you register is stored with the following fields.Auto-incremented integer that uniquely identifies this webhook within your account. Use it to target specific webhooks in API operations.
The full endpoint URL WhatsAble POSTs events to (e.g.
https://api.example.com/whatsapp/events). Must be a valid HTTP or HTTPS URL.UUID of the WhatsAble account that owns this webhook. Set automatically at creation — you cannot assign a webhook to a different account.
ISO 8601 timestamp recording when the webhook was registered. Webhooks are returned in newest-first order by default.
Incoming Webhook Payload
When an event fires, WhatsAble sends an HTTPPOST to your endpoint with a Content-Type: application/json body.
Incoming message payload
Payload fields
Ordered array of recent messages in the conversation, newest last.
Human-readable plain-text transcript of the recent exchange. Useful for passing directly to an LLM or storing as a summary without parsing the full
last_messages array.The WhatsApp phone number of the customer who sent the message (digits only, no
+ prefix).Display name of the customer as stored in their WhatsApp profile. May be empty if WhatsApp has not provided a name.
UUID of the WhatsAble account that received this message. Matches the
user_id stored on the webhook registration.Text of the customer’s most recent message. For image, video, and document messages this contains the caption if one was provided, otherwise an empty string.
Text of the last message your system sent to this customer.
Type of the latest message in the conversation. Same values as
content_type above: text, image, audio, video, document, location.Unix timestamp (seconds) of the customer’s last message. Use this to calculate response latency or enforce time-based rules.
Unix timestamp (seconds) of your system’s last reply to this customer.
URL to the media file if the latest message contains media.
null for text-only messages. Same 24-hour expiry applies.Free-form text note attached to the conversation. Set manually by agents in Notifyer Chat.
Automation-related notes written by internal workflows. Available for your server to read and act on.
Comma-separated list of labels assigned to the conversation (e.g.
"sales, premium-inquiry"). Use these to route events to different handlers in your webhook server.Internal API Reference
The WhatsAble dashboard manages webhooks through three authenticated internal endpoints. All requests require a valid Bearer token from the active session.List webhooks
Authorization: Bearer <access_token>
Response: Array of webhook objects.
Create a webhook
Authorization: Bearer <access_token>
Request body:
Full HTTP or HTTPS URL of your endpoint. Must be a valid URL — invalid formats are rejected with a
400 error.| Status | Meaning |
|---|---|
400 | webhook field missing, empty, or not a valid URL |
401 | No valid session token provided |
500 | Database error — retry after a short delay |
Delete a webhook
Authorization: Bearer <access_token>
Query parameter:
| Parameter | Type | Required | Description |
|---|---|---|---|
id | number | Yes | The id of the webhook to delete |
| Status | Meaning |
|---|---|
400 | id query parameter not provided |
401 | No valid session token |
403 | The webhook exists but belongs to a different account |
404 | No webhook found with the given id |
500 | Database error |
Going to Production
When you’re done testing and ready to go live, follow these steps to switch from your test webhook URL to your production endpoint.Pin your test data
In your automation tool (n8n, Make, etc.), pin the sample payload you received during testing. This keeps the data structure available to configure downstream nodes even after you swap the endpoint.
Copy your production webhook URL
In your automation platform, switch to the Production URL for your trigger node and copy it.
Create a new credential — do not edit the existing one
In WhatsAble, go to Operations → Webhooks and click New Webhook. Paste the production URL and save.In your automation tool, create a new credential (e.g.
WhatsAble Bot – Production) rather than overwriting the test credential. Enter the production webhook URL and your API key, then save.Endpoint Requirements
Your webhook server must:- Accept
HTTP POSTrequests - Parse
application/jsonrequest bodies - Respond with
200 OK(or any2xx) promptly to acknowledge receipt - Be publicly reachable —
localhostand private network addresses will not work - Use HTTPS in production environments
Best Practices
Use HTTPS in production
Use HTTPS in production
Always verify webhook signatures and use HTTPS endpoints. HTTP may be acceptable for local development only. WhatsAble shows a reminder banner on the webhook page: “Always verify webhook signatures and use HTTPS endpoints for secure communication.”
Respond fast, process async
Respond fast, process async
Return
200 OK immediately, then process the payload in a background job or queue. Long-running synchronous handlers risk timing out before the work is done.Handle duplicate deliveries
Handle duplicate deliveries
Network retries can cause the same event to arrive more than once. Use the
user_last_message_time + phone_number combination as an idempotency key to detect and skip duplicates.Download media promptly
Download media promptly
attachment_url and media_url inside last_messages expire after 24 hours. Download and store media files as soon as you receive the webhook — do not rely on the URL remaining valid later.Route by labels and message_type
Route by labels and message_type
Use the
labels field and message_type to dispatch events to different handlers. For example, route "document" types to a contract-processing queue and messages labelled "support" to your helpdesk integration.Log everything
Log everything
Store the raw payload for every incoming event before processing it. Logs are invaluable for debugging and replaying missed events.
Example Handler
Node.js / Express
Troubleshooting
n8n / Make trigger not firing at all
n8n / Make trigger not firing at all
This is the most common issue when setting up the WhatsAble bot trigger. When configuring the WhatsApp trigger node in n8n or Make, you must explicitly select Incoming Messages as the event type. The option can be easy to miss, especially if the interface has changed recently.What to check:
- Open the trigger node settings in your automation tool
- Look for an event type or trigger type selector
- Make sure Incoming Messages (or equivalent) is selected — not “All Events” or left blank
- Save and re-activate the trigger
Already tried everything and it still doesn't work
Already tried everything and it still doesn't work
Before spending more time debugging, open Operations → Webhooks in the WhatsAble dashboard and check how many webhooks you have registered. It’s easy to accumulate duplicate entries from previous test attempts. Multiple webhooks registered to different URLs (or stale test URLs) can cause unexpected behaviour.Fix: Delete any old or duplicate webhook entries, keep only the one that matches your current trigger URL, then test again.
Webhook not receiving events
Webhook not receiving events
- Confirm the endpoint is publicly accessible (not
localhostor behind a firewall) - Check your server logs for incoming
POSTrequests - Verify the webhook is listed and saved correctly in the dashboard
- Ensure your server returns a
2xxresponse — otherwise deliveries may be dropped
Media URLs returning 404 or expired
Media URLs returning 404 or expired
attachment_url and media_url values are temporary and expire within 24 hours of generation. If you receive a 404, the file has expired. Download media immediately on receipt and store it in your own storage.Getting 403 when deleting a webhook
Getting 403 when deleting a webhook
The
DELETE endpoint enforces ownership checks. You can only delete webhooks that belong to the currently authenticated user. Make sure you are using the correct account session token.Duplicate events arriving
Duplicate events arriving
WhatsAble may redeliver events if your server did not respond with a
2xx in time. Build idempotency into your handler using phone_number + user_last_message_time as a composite key.Next steps
API Documentation
Explore the full WhatsAble REST API for sending messages, managing contacts, and more.
Integrations
Connect WhatsAble to Zapier, Make, n8n, and other automation platforms.