Custom webhook
Create the endpoint, enable outgoing, and the reply hits your server as a normal POST. https://whatsable.app/integrations/webhook
Yes. A reply you type in the WhatsApp Business app still POSTs to your webhook. You keep the app on the phone. The number stays the same.
Outgoing has to be on for that destination. If it is off, the contact still gets the reply and your webhook never sees it.
Pick where the reply should land: a webhook you built, n8n, Zapier, or Make.
outgoing: true.Create the endpoint, enable outgoing, and the reply hits your server as a normal POST. https://whatsable.app/integrations/webhook
The trigger is labelled On new Incoming message event. That string is the node's label, not a filter. With the credential Notifyer System incoming and outgoing messages, the same trigger also fires for a phone-app reply. The sibling post has the n8n clicks. https://whatsable.app/blog/trigger-n8n-scenarios-from-whatsapp-business-app https://whatsable.app/integrations/n8n
Use New Incoming or Outgoing WhatsApp Message. https://whatsable.app/integrations/zapier
From the console, choose Incoming & Outgoing Messages under the Notifyer System module. https://whatsable.app/integrations/make
A phone-app reply only reaches an Agent Skill if that Skill sits on a webhook you created with outgoing enabled. Installing a Skill alone does not deliver the event. https://whatsable.app/vibe-code
When a phone-app reply hits, three fields line up. incoming_message is false. send_by is "WhatsApp App". was_message_by_human is true.
The same POST also carries the rest of the official message fields. The meanings below match the payload fields page.
Check message_type (text, image, audio, video, document, location). For audio, the transcription appears in the text fields when available.
| Field | What it is |
|---|---|
phone_number | WhatsApp number of the contact in this conversation (digits, often without +). On outgoing events this is the person your business messaged. May arrive as a number or a string. |
message_type | The type of the latest message (text, image, audio, video, document, or location). For audio, the transcription appears in the text fields when available. |
last_message_of_user | The last message sent by the user. |
last_message_of_bot | The last business send, including a human on the phone or in the inbox. Not only a bot. |
last_messages | Recent messages in the conversation (about the last 20). On webhook deliveries this is typically a JSON string — parse it before iterating. Each item is typed user (the contact) or bot (the last business send, including a human on the phone or in the inbox). Includes messages from the WhatsApp Business app, the Notifyer inbox, automations, and templates. |
last_messages.type | Sender type (user or bot). user is the contact. bot is the last business send, including a human on the phone or in the inbox. |
last_messages.content | Message content (empty for media messages). For audio, the transcription appears in the text fields when available. |
last_messages.timestamp | ISO 8601 timestamp when the message was sent. |
last_messages.content_type | Type of content (text, image, audio, video, document, or location). |
last_messages.media_url | URL to media file if applicable (valid for 24 hours). |
conversation_paragraph | Human-readable summary of the recent conversation. |
recipient_name | The name of the recipient if available. |
user_id | Unique identifier for the user in your system. |
user_last_message_time | Unix timestamp of the user's last message. |
bot_last_message_time | Unix timestamp of your system's last message. |
attachment_url | URL to media file if the latest message contains media (null for text messages). |
note | Custom note field for additional context. |
note_automation | Automation-related notes. |
labels | Comma-separated labels for categorizing the conversation. |
incoming_message | true when the contact sent this message to your business. false when your business sent it (outgoing). Outgoing events include messages typed in the WhatsApp Business app, sent from the Notifyer chat inbox, or sent by Make, Zapier, n8n, the API, or a bot. |
send_by | Which system or person sent an outgoing message. "WhatsApp App" when typed in the WhatsApp Business app; the logged-in teammate's name when sent from the Notifyer chat inbox; the automation or app name for Make, Zapier, n8n, API, or a bot. Empty on incoming messages. |
was_message_by_human | true when a person sent the message (WhatsApp Business app or Notifyer chat inbox). false when a bot or automation sent it. |
referral | Present on incoming events from a Click-to-WhatsApp ad or post, and omitted on ordinary chats and most follow-ups. See https://whatsable.app/click-to-whatsapp-ads. |
Filter so incoming_message is false, send_by is "WhatsApp App", and was_message_by_human is true.
Yes. YouTube: https://www.youtube.com/watch?v=njAxHZalMn4
This is not an inbox check, a Click-to-WhatsApp field spec, or a customer JSON dump.
The sibling post has the n8n clicks.
Create the endpoint, enable outgoing, and the reply hits your server as a normal POST.
The trigger is labelled On new Incoming message event. That string is the node's label, not a filter.
Use New Incoming or Outgoing WhatsApp Message.
Incoming & Outgoing Messages under the Notifyer System module.
A phone-app reply only reaches an Agent Skill if that Skill sits on a webhook you created with outgoing enabled.
referral points only to this page. It is present on incoming events from a Click-to-WhatsApp ad or post, and omitted on ordinary chats and most follow-ups.