WhatsApp webhooks

Forward WhatsApp messages and statuses to your own URL, instantly, with a debounce or at intervals.

  • Category: Communication
  • Status: Available
  • Requirements: A WhatsApp account in the company; A URL that accepts POST with JSON
  • MCP tools (Read only): listar_numeros_whatsapp
  • MCP tools (Write or modify): crear_webhook_whatsapp, editar_webhook_whatsapp, simular_mensaje_sandbox_whatsapp
  • MCP tools (Destructive): eliminar_webhook_whatsapp

Markdown

What can you do with it?

Set up one or more URLs that receive incoming messages and status changes for all numbers in the account. It is the piece that connects WhatsApp to your own bot.

When should you use it?

  • A bot has to answer messages.
  • Another system needs to record conversations.
  • You want to group several consecutive messages from a contact before processing them.

How does it work in ArduMaker?

ModeWhen it sends
instantAs soon as the message is ready. An audio goes out once its transcription finishes.
debounceAfter debounce_seconds without new messages in that chat (0 to 3600, default 10).
intervalEvery interval_seconds, with all pending chats (0 to 86400, default 60).

The body is JSON with the account, the mode and a list of conversations (headers) with their messages. Files arrive as a signed public URL; the internal file path is never sent. send_incoming and send_status choose what is sent.

With notify_audio_received the webhook gets an immediate notice with "event": "audio_received" and the X-Event: audio_received header, before transcription. The final message comes later, without event.

What actually changes?

  • The webhook configuration is stored in the company's WhatsApp account.
  • Each delivery is recorded per message, with HTTP status, duration and platform wait.
  • A test message adds "sandbox": true and the X-Sandbox: 1 header; a manual resend adds "resend": true.

Diagram

  1. WhatsApp
  2. Twilio: notifies ArduMaker
  3. ArduMaker: stores and transcribes audio
  4. Delivery by mode: instant, debounce or interval
  5. Your URL: POST with JSON
Incoming message to the webhook — In instant delivery goes out right away; a periodic sweep is the safety net and never sends the same message twice.

Expected result

Your server receives each message once. The chat shows how long each delivery took and which status the webhook returned.

Errors and troubleshooting

  • The webhook was down: automatic delivery does not repeat. From the chat, a specific message can be resent to the webhooks; resending does not alter what is pending.
  • Audio counted twice: the audio_received notice and the final message are two POSTs; tell them apart by event.
  • 400 `invalid_data`: some field is invalid; the response names which.
  • Why my webhook rejects something: the sandbox returns the status and body each webhook answered with.

MCP access

Requires access to the company. See /mcp/docs.

TypeTools
Readlistar_numeros_whatsapp
Modifycrear_webhook_whatsapp, editar_webhook_whatsapp, simular_mensaje_sandbox_whatsapp
Destructiveeliminar_webhook_whatsapp

Related features