# Incoming message

This section describes the webhook format for an incoming text message.

You can find more details about all parameters and their types in [the WebHook documentation](https://app.swaggerhub.com/apis-docs/HELLO_137/Whapi-Cloud-WhatsApp-API/1.8.5#/WebhookPayload).

* [Incoming text message](#incoming-text-message)
* [Incoming text message with URL ](#incoming-text-message-with-url)
* [Incoming message with image, video, audio, document ](#incoming-message-with-document)
* [Incoming message from Facebook Ads (Click-to-WhatsApp)](#incoming-message-from-facebook-a-ds-click-to-whatsapp)
* [Incoming message with geolocation ](#incoming-message-with-geolocation)
* [Incoming message with contact & contacts array ](#incoming-message-with-contact)
* [Incoming message with quote ](#incoming-message-with-quote)
* [Incoming message with sticker ](#incoming-message-with-sticker)
* [Incoming message-emoji reaction ](#incoming-message-emoji-reaction)
* [Incoming message with group invitation](#incoming-message-with-group-invitation)
* [Incoming message with product](#incoming-message-with-product)
* [Incoming message with poll](#incoming-message-with-poll)
* [Incoming message with poll update](#incoming-message-with-poll-update)
* [Incoming message with order](#incoming-message-with-order)
* [Incoming channel admin invite](#incoming-channel-admin-invite)
* [Incoming HSM-Template message](#incoming-hsm-template-message-whatsapp-business-account-waba) (WhatsApp Business Account (*WABA*)
* [Incoming carousel message](#incoming-carousel-message)
* [Incoming Group member tag changed](#incoming-group-member-tag-changed)
* [Incoming message with media album](#incoming-album)

The messages array contains all messages that were sent to the webhook URL. Sent on event "`messages.post`" or "`messages.put`". We mentioned more about the events here: [#mode-setting](https://support.whapi.cloud/help-desk/receiving/detailed-webhook-settings#mode-setting "mention")

### Incoming text message

Use the `messages.post` setting to get this webhook.

```json
{
  "messages": [
    {
      "id": "p.w30M7fgwWD4XwHu.g4CA-gBgTwl0rVw",
      "from_me": false,
      "type": "text",
      "chat_id": "919984351847@s.whatsapp.net",
      "timestamp": 1712995245,
      "source": "mobile",
      "text": {
        "body": "Hello world"
      },
      "from": "919984351847",
      "from_name": "Gerald"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

***

Read incoming message

```json
{
  "statuses": [
    {
      "id": "p.w30M7fgwWD4XwHu.g4CA-gBgTwl0rVw",
      "code": 4,
      "status": "read",
      "recipient_id": "919984351847@s.whatsapp.net",
      "timestamp": "1712995290"
    }
  ],
  "event": {
    "type": "statuses",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

***

### Incoming reply by button

```json
{
  "messages": [
    {
      "id": "g0jEG0ZsSobn4yNGGU3TAg-gDYOS60TLw",
      "from_me": false,
      "type": "reply",
      "chat_id": "61371989950@s.whatsapp.net",
      "timestamp": 1726126124,
      "source": "mobile",
      "chat_name": "Jonathan Customer",
      "reply": {
        "type": "buttons_reply",
        "buttons_reply": {
          "id": "ButtonsV3:randomId1",
          "title": "Button1"
        }
      },
      "context": {
        "quoted_id": "yqKj.Z7XWg0g1lA-wD8Sij1GoQ",
        "quoted_author": "919984351847",
        "quoted_content": {
          "header": "Header with text",
          "body": "Body message",
          "footer": "Footer message",
          "buttons": [
            {
              "type": "quick_reply",
              "text": "Button1",
              "id": "ButtonsV3:randomId1"
            },
            {
              "type": "quick_reply",
              "text": "Button2",
              "id": "ButtonsV3:randomId2"
            }
          ]
        },
        "quoted_type": "hsm"
      },
      "from": "61371989950",
      "from_name": "Jonathan"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-PF238"
}
```

### Incoming text message with URL&#x20;

```json
{
  "messages": [
    {
      "id": "wbvJ8Fr71sq2L8lPILge.Q-gLUTwl0rVw",
      "from_me": false,
      "type": "link_preview",
      "chat_id": "919984351847@s.whatsapp.net",
      "timestamp": 1713201613,
      "source": "mobile",
      "link_preview": {
        "body": "This is text with url https://whapi.cloud/features",
        "url": "https://whapi.cloud/features",
        "title": "Enriched Cloud API for WhatsApp - Our Features",
        "id": "file-c1bbc9f05afbd6cab62fc94f20b81ef9-80b513c25d2b57",
        "sha256": "ckBXLlYx8dYz2Qe9ZGWNbzxFH6T+mYrElsVyOOIQd28=",
        "description": "Our API allowing you to connect your website or system to your WhatsApp account, send messages to your customers, and efficiently manage your groups, contacts, orders, goods etc.",
        "preview": "data:image/jpeg;base64,/9j/4AAQSkZ........."
      },
      "from": "919984351847",
      "from_name": "Gerald"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

***

### Incoming message with document

The `link` parameter will only appear when the [Auto Download](https://support.whapi.cloud/help-desk/account/setting-auto-download) [setting](https://support.whapi.cloud/help-desk/account/setting-auto-download) is enabled, which downloads files to the cloud and stores them for 30 days.

```json
{
  "messages": [
    {
      "id": "tGZmYoiXecvbKahzwpwKmg-gEcTwl0rVw",
      "from_me": false,
      "type": "document",
      "chat_id": "919984351847@s.whatsapp.net",
      "timestamp": 1713201784,
      "source": "mobile",
      "document": {
        "id": "pdf-b487668896662779cbdb29a3c29c0a9a-804713c25d2b57",
        "mime_type": "application/pdf",
        "file_size": 1438781,
        "sha256": "TdxdgX8lBzV6/SYW96F/BEh19ob0eFAn4wKAWhWpUyk=",
        "file_name": "File_example.pdf",
        "link": "https://s3.eu-central-1.wasabisys.com/in-files/61371989950/pdf-b487668896662779cbdb29a3c29c0a9a-804713c25d2b57.pdf",
        "caption": "This is text with file",
        "filename": "File_example.pdf",
        "page_count": 14,
        "preview": "data:image/jpeg;base64,/9j/4AAQSkZJ.........."
      },
      "from": "919984351847",
      "from_name": "Gerald"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

### Incoming mention added to media (image, video, document)

```json
{
  "messages": [
    {
      "id": "test_message_id_12345",
      "from_me": false,
      "type": "action",
      "chat_id": "123456789012345678@g.us",
      "timestamp": 1700000000,
      "source": "system",
      "chat_name": "test_group_name",
      "action": {
        "type": "media_notify",
        "participant": "10000000000@s.whatsapp.net"
      },
      "from_name": "Test User"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "TEST-CHANNEL-001"
}
```

### Incoming message with voice audio

The `link` parameter will only appear when the [Auto Download](https://support.whapi.cloud/help-desk/account/setting-auto-download) [setting](https://support.whapi.cloud/help-desk/account/setting-auto-download) is enabled, which downloads files to the cloud and stores them for 30 days.

```json
{
  "messages": [
    {
      "id": "oOv4asxjzsG949lluzApPg-gFETwl0rVw",
      "from_me": false,
      "type": "voice",
      "chat_id": "919984351847@s.whatsapp.net",
      "timestamp": 1713206474,
      "source": "mobile",
      "voice": {
        "id": "oga-a0ebf86acc6d9653cec1bde3bb30293e-805113c25d2b57",
        "mime_type": "audio/ogg; codecs=opus",
        "file_size": 7848,
        "sha256": "BDxh78Oq9X0BDIU4MpWd0tiJCLQVGo6Cr22OisLAXmU=",
        "link": "https://s3.eu-central-1.wasabisys.com/in-files/61371989950/oga-a0ebf86acc6d9653cec1bde3bb30293e-805113c25d2b57.oga",
        "seconds": 3
      },
      "from": "919984351847",
      "from_name": "Gerald"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

***

### Incoming message from Facebook Ads (Click-to-WhatsApp)

This is a sample webhook payload for an **incoming message triggered by a Click-to-WhatsApp (CTWA) ad** on Facebook or Instagram. When a user clicks on a WhatsApp button in a Facebook ad and sends a message, the system delivers this webhook to your server.&#x20;

You can use this data to:

* Personalize your response based on the ad they came from
* Track ad performance and conversions
* Automatically assign leads to your CRM or sales team

> This type of webhook is only triggered when the user contacts you via a **Facebook Click-to-WhatsApp ad**, and **message attribution is enabled** in your WhatsApp Business settings.

```json
{
  "messages": [
    {
      "id": "TEST_MSG_ID_12345",
      "from_me": false,
      "type": "text",
      "chat_id": "60000000000@s.whatsapp.net",
      "timestamp": 1754275820,
      "source": "mobile",
      "text": {
        "body": "Hi, I'm interested in the double-storey terrace house. Can you share more info?"
      },
      "context": {
        "conversion": {
          "data": "TEST_CONVERSION_TOKEN_ABC123XYZ456",
          "source": "FB_Ads"
        },
        "ad": {
          "title": "Test Ad Campaign - Property Promo",
          "body": "🏠 Brand New Homes\n📍 Prime Location\n✅ Freehold Title\nContact us now",
          "media_type": "image",
          "preview_url": "https://example.com/media/preview.jpg",
          "media_url": "https://facebook.com/ads/testvideo123",
          "source": {
            "id": "TEST_AD_ID_987654321",
            "type": "ad",
            "url": "https://fb.me/testadlink123"
          },
          "attrib": true,
          "ctwa": "TEST_CTWA_TOKEN_1234567890"
        }
      },
      "from": "60000000000",
      "from_name": "Test User"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

***

### Incoming message with geolocation

```json
{
  "messages": [
    {
      "id": "d1pxYYXaaoS.ViAtmE6rPA-gAoTwl0rVw",
      "from_me": false,
      "type": "location",
      "chat_id": "919984351847@s.whatsapp.net",
      "timestamp": 1713202936,
      "source": "mobile",
      "location": {
        "latitude": 44.5381067,
        "longitude": 25.7787495,
        "preview": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQA........"
      },
      "from": "919984351847",
      "from_name": "Gerald"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

### Incoming message with Live geolocation

```json
{
  "messages": [
    {
      "id": "RdtP4a16Zs._BbcgvC3N6w-gGMTwl0rVw",
      "from_me": false,
      "type": "live_location",
      "chat_id": "919984351847@s.whatsapp.net",
      "timestamp": 1713202720,
      "source": "mobile",
      "live_location": {
        "latitude": 44.5381067,
        "longitude": 25.7787495,
        "caption": "My live location",
        "sequence_number": 1713202719671001,
        "preview": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQA........."
      },
      "from": "919984351847",
      "from_name": "Gerald"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

***

### Incoming message with contact&#x20;

```json
{
  "messages": [
    {
      "id": "sTttJjRHIePJR_WK7JUJgQ-gMkTwl0rVw",
      "from_me": false,
      "type": "contact",
      "chat_id": "919984351847@s.whatsapp.net",
      "timestamp": 1713203367,
      "source": "mobile",
      "contact": {
        "name": "Whapi Dev Channel",
        "vcard": "BEGIN:VCARD\nVERSION:3.0\nN:Channel;Whapi;Dev;;\nFN:Whapi Dev Channel\nORG:Helloworld College\nTITLE:\nTEL;type=Mobile;waid=61280155346:+61 2 8015 5346\nEND:VCARD"
      },
      "from": "919984351847",
      "from_name": "Gerald"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

### Incoming message with contacts array

```json
{
  "messages": [
    {
      "id": "P1.zAHRrD4eWwbkzhJlu5w-gC8Twl0rVw",
      "from_me": false,
      "type": "contact_list",
      "chat_id": "919984351847@s.whatsapp.net",
      "timestamp": 1713203412,
      "source": "mobile",
      "contact_list": {
        "list": [
          {
            "name": "Dev Whapi Checker",
            "vcard": "BEGIN:VCARD\nVERSION:3.0\nN:Checker;Dev;Whapi;;\nFN:Dev Whapi Checker\nTEL;type=Mobile:+1 (216) 744-1018\nEND:VCARD"
          },
          {
            "name": "Whapi Dev Channel",
            "vcard": "BEGIN:VCARD\nVERSION:3.0\nN:Channel;Whapi;Dev;;\nFN:Whapi Dev Channel\nORG:Helloworld College\nTITLE:\nTEL;type=Mobile;waid=61280155346:+61 2 8015 5346\nEND:VCARD"
          }
        ]
      },
      "from": "919984351847",
      "from_name": "Gerald"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

***

### Incoming message with quote&#x20;

```json
{
  "messages": [
    {
      "id": "K5iXSDAPkTxTzMTUBLMvcA-gEATwl0rVw",
      "from_me": false,
      "type": "text",
      "chat_id": "919984351847@s.whatsapp.net",
      "timestamp": 1713203447,
      "source": "mobile",
      "text": {
        "body": "Thanks"
      },
      "context": {
        "quoted_id": "yqJRppZk7BI-wNoTwl0rVw",
        "quoted_author": "61371989950",
        "quoted_content": {
          "body": "Hello from API"
        },
        "quoted_type": "text"
      },
      "from": "919984351847",
      "from_name": "Gerald"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

***

### Incoming message with sticker&#x20;

The `link` parameter will only appear when the [Auto Download](https://support.whapi.cloud/help-desk/account/setting-auto-download) [setting](https://support.whapi.cloud/help-desk/account/setting-auto-download) is enabled, which downloads files to the cloud and stores them for 30 days.

```json
{
  "messages": [
    {
      "id": "nkiUVCEQLYex741Bm4NqSQ-gIYTwl0rVw",
      "from_me": false,
      "type": "sticker",
      "chat_id": "919984351847@s.whatsapp.net",
      "timestamp": 1713203569,
      "source": "mobile",
      "sticker": {
        "id": "webp-9e489d8745421102b1ef8d419b836a49-808613c25d2b57.webp",
        "mime_type": "image/webp",
        "file_size": 266046,
        "sha256": "3Hng4qYEzT/NquSSh/UhbAaIw+cXqhdSjtGaPufYFVM=",
        "link": "https://s3.eu-central-1.wasabisys.com/in-files/61371989950/webp-9e489d8745421102b1ef8d419b836a49-808613c25d2b57.webp",
        "width": 512,
        "height": 512,
        "animated": true
      },
      "from": "919984351847",
      "from_name": "Gerald"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

***

### Incoming message-emoji reaction&#x20;

```json
{
  "messages": [
    {
      "id": "BTRGsVX7LoFWE5Bkd0eVAA-gOcTwl0rVw",
      "from_me": false,
      "type": "action",
      "chat_id": "919984351847@s.whatsapp.net",
      "timestamp": 1713203716,
      "source": "mobile",
      "action": {
        "target": "yqJRppZk7BI-wNoTwl0rVw",
        "type": "reaction",
        "emoji": "👍"
      },
      "from": "919984351847",
      "from_name": "Gerald"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

***

### Incoming message with group invitation&#x20;

```json
{
  "messages": [
    {
      "id": "O5AqBFcFuC_q561s.EcMVg-gJsTwl0rVw",
      "from_me": false,
      "type": "group_invite",
      "chat_id": "919984351847@s.whatsapp.net",
      "timestamp": 1713795517,
      "source": "mobile",
      "group_invite": {
        "body": "Hello https://chat.whatsapp.com/BxAwBxLeLKnEkf2wn5EZLK",
        "url": "https://chat.whatsapp.com/BxnEkf2xLeLKAwBwn5EZLK",
        "title": "Name changed 🥏 Yar!",
        "invite_code": "BxnEkf2xLeLKAwBwn5EZLK",
        "id": "file-3b902a045705b82feae7ad6cf8470c56-813c2509bd2b57",
        "sha256": "UocyuqaECIdhfhXFyWviPjlrK1jHVmiYpUowtO8MeHQ=",
        "description": "WhatsApp Group Invite",
        "preview": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQA.........."
      },
      "from": "919984351847",
      "from_name": "Gerald"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

***

### Incoming message with product

```json
{
  "messages": [
    {
      "id": "QS5K3_XwtfXnQU9bxJRBPQ-gIQTwl0rVw",
      "from_me": false,
      "type": "product",
      "chat_id": "919984351847@s.whatsapp.net",
      "timestamp": 1713795443,
      "source": "mobile",
      "product": {
        "product_id": "7275856165856513",
        "catalog_id": "919984351847@s.whatsapp.net"
      },
      "from": "919984351847",
      "from_name": "Gerald"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

### Incoming message with catalog

```json
{
  "messages": [
    {
      "id": "yqJGSHAr3x0-gGgTwl0rVw",
      "from_me": false,
      "type": "catalog",
      "chat_id": "919984351847@s.whatsapp.net",
      "timestamp": 1713795236,
      "source": "mobile",
      "catalog": {
        "body": "Look at this!\nhttps://wa.me/c/919984351847",
        "url": "https://wa.me/c/919984351847",
        "canonical": "https://wa.me/c/919984351847",
        "title": "MyShop",
        "catalog_id": "919984351847",
        "preview": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ..........."
      },
      "from": "919984351847",
      "from_name": "Gerald"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

***

### Incoming message with poll

Use the `messages.post` setting to get this webhook.

<pre class="language-json"><code class="lang-json">{
  "messages": [
    {
      "id": "9N4IF5zS1OwY9m.NUBE3ag-gE8Twl0rVw",
      "from_me": false,
      "type": "poll",
      "chat_id": "919984351847@s.whatsapp.net",
      "timestamp": 1713205837,
      "source": "mobile",
      "poll": {
        "title": "My question",
        "options": [
          "Point 1",
          "Point 2",
          "Point 3"
        ],
        "total": 0,
        "results": [
          {
            "name": "Point 1",
            "voters": [],
            "count": 0,
            <a data-footnote-ref href="#user-content-fn-1">"id": "TNMMXFdlKvIk+DtozFvnZnVLnI3+Lk3vVSxppxFLzBo="</a>
          },
          {
            "name": "Point 2",
            "voters": [],
            "count": 0,
            "id": "PkUcpv6T9mfhcvvYv+/AvR2Viu/lslMGqNBgQA0bDqE="
          },
          {
            "name": "Point 3",
            "voters": [],
            "count": 0,
            "id": "rCoFUNfBRqhGNPoWG0jD4H1vR4PyPqU1rLUdx84Bt64="
          }
        ]
      },
      "from": "919984351847",
      "from_name": "Gerald"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
</code></pre>

***

### Incoming message with poll update

Use the `messages.post` setting to get this webhook.

<pre class="language-json"><code class="lang-json">{
  "messages": [
    {
      "id": "acvd9A6XTf_nC7q5H3w2Og-wNMTwl0rVw",
      "from_me": true,
      "type": "action",
      "chat_id": "919984351847@s.whatsapp.net",
      "timestamp": 1713205922,
      "source": "mobile",
      "status": "sent",
      "action": {
        <a data-footnote-ref href="#user-content-fn-2">"target": "9N4IF5zS1OwY9m.NUBE3ag-gE8Twl0rVw"</a>,
        "type": "vote",
        <a data-footnote-ref href="#user-content-fn-3">"votes": </a>[
          "PkUcpv6T9mfhcvvYv+/AvR2Viu/lslMGqNBgQA0bDqE=",
          "rCoFUNfBRqhGNPoWG0jD4H1vR4PyPqU1rLUdx84Bt64="
        ]
      },
      <a data-footnote-ref href="#user-content-fn-4">"from": "</a>919984351847",
      "from_name": "Dev Whapi"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
</code></pre>

{% hint style="info" %}

### How to Quickly Check the Vote Count in a Poll

To see the final results of a poll, you can use the **Get Message** endpoint and provide the message ID of the poll. This will return the full voting data.

If you'd like to track the number of votes in real time, enable the **`messages.patch`** webhook.\
Each time a vote is submitted or updated, you'll receive a webhook event containing:

* `"total"` – total number of votes
* `"count"` – vote count for each poll option
* `"voters"` – a list of users who voted for each option

This allows you to monitor poll activity as it happens.
{% endhint %}

Use the `messages.patch` setting to get this webhook:

<pre class="language-json"><code class="lang-json">{
  "messages_updates": [
    {
      "id": "9N4IF5zS1OwY9m.NUBE3ag-gE8Twl0rVw",
      "trigger": {
        "id": "acvd9A6XTf_nC7q5H3w2Og-wNMTwl0rVw",
        "from_me": false,
        "type": "action",
        "chat_id": "919984351847@s.whatsapp.net",
        "timestamp": 1747730574,
        "source": "web",
        "device_id": 20,
        "chat_name": "Pedro,
        "action": {
          "target": "9N4IF5zS1OwY9m.NUBE3ag-gE8Twl0rVw",
          "type": "vote",
          "votes": [
            "PkUcpv6T9mfhcvvYv+/AvR2Viu/lslMGqNBgQA0bDqE="
          ]
        },
        "from": "919984351847",
        "from_name": "Pedro"
      },
      "before_update": {
        "id": "9N4IF5zS1OwY9m.NUBE3ag-gE8Twl0rVw",
        "from_me": true,
        "type": "poll",
        "chat_id": "919984351847@s.whatsapp.net",
        "timestamp": 1747730565,
        "source": "api",
        "device_id": 86,
        "status": "read",
        "poll": {
          "title": "My Poll",
          "options": [
            "Option 1",
            "Option 2"
          ],
          "vote_limit": 1,
          <a data-footnote-ref href="#user-content-fn-5">"total": 0,</a>
          "results": [
            {
              "name": "Option 1",
              "voters": [],
              "count": 0,
              "id": "+uLbCT4d0xBC6KuUJ+hnOnDEP0vFGSNdmiMu+tYHaao="
            },
            {
              "name": "Option 2",
              "voters": [],
              "count": 0,
              "id": "IGsWdw8fem7qt0eGrTwDO+s6oODsSUPzmJD9UoxU5EU="
            }
          ]
        },
        "from": "84865364571"
      },
      "after_update": {
        "id": "9N4IF5zS1OwY9m.NUBE3ag-gE8Twl0rVw",
        "from_me": true,
        "type": "poll",
        "chat_id": "919984351847@s.whatsapp.net",
        "timestamp": 1747730565,
        "source": "api",
        "device_id": 86,
        "status": "read",
        "poll": {
          "title": "My Poll",
          "options": [
            "Option 1",
            "Option 2"
          ],
          "vote_limit": 1,
          <a data-footnote-ref href="#user-content-fn-6">"total": 1,</a>
          "results": [
            {
              "name": "Option 1",
              "voters": [
                "919984351847@s.whatsapp.net"
              ],
              <a data-footnote-ref href="#user-content-fn-7">"count": 1,</a>
              <a data-footnote-ref href="#user-content-fn-3">"id": "+uLbCT4d0xBC6KuUJ+hnOnDEP0vFGSNdmiMu+tYHaao=</a>"
            },
            {
              "name": "Option 2",
              "voters": [],
              <a data-footnote-ref href="#user-content-fn-7">"count": 0,</a>
              "id": "IGsWdw8fem7qt0eGrTwDO+s6oODsSUPzmJD9UoxU5EU="
            }
          ]
        },
        "from": "84865364571"
      },
      "changes": [
        "poll"
      ]
    }
  ],
  "event": {
    "type": "messages",
    "event": "patch"
  },
  "channel_id": "MANTIS-M72HC"
}
</code></pre>

***

### Incoming message with order

```json
{
  "messages": [
    {
      "id": "7GZVXunkHjZaIOgEgWPPrw-gDMTwl0rVw",
      "from_me": false,
      "type": "order",
      "chat_id": "919984351847@s.whatsapp.net",
      "timestamp": 1713264543,
      "source": "mobile",
      "order": {
        "order_id": "964278151888836",
        "seller": "61371989950",
        "title": "Jonathan",
        "token": "AR4ToE6jF7HwiKY8cUChFb+h6Blgb0sbRMOY3vwRHhsaeg==",
        "item_count": 3,
        "currency": "AUD",
        "total_price": 359,
        "status": "new",
        "preview": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQAB......"
      },
      "from": "919984351847",
      "from_name": "Gerald"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

### Incoming channel admin invite

```json
{
  "messages": [
    {
      "id": "yqLJwDbyoe8-gGcOS60TLw",
      "from_me": false,
      "type": "admin_invite",
      "chat_id": "61371989950@s.whatsapp.net",
      "timestamp": 1713863006,
      "source": "api",
      "device_id": 24,
      "admin_invite": {
        "newsletter_id": "120363260670839366@newsletter",
        "newsletter_name": "My journey",
        "expiration": 1714401910,
        "body": "Hi buddy, please help me with my channel"
      },
      "from": "61371989950",
      "from_name": "Jonathan"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-PF298"
}
```

***

### Incoming HSM-Template message (WhatsApp Business Account (*WABA*)

```json
{
  "messages": [
    {
      "id": "D47hovYN9GXp-gJASdDLolQ",
      "from_me": false,
      "type": "hsm",
      "chat_id": "919703374655@s.whatsapp.net",
      "timestamp": 1713206231,
      "source": "business_api",
      "from": "919703374655",
      "from_name": "919703374655"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

### Incoming carousel message

```json
  "messages": [
    {
      "id": "Psq9XYAIlO2yB2s-gBcSlpp3yQ",
      "from_me": false,
      "type": "carousel",
      "chat_id": "12345678937@s.whatsapp.net",
      "timestamp": 1760362773,
      "source": "api",
      "device_id": 30,
      "carousel": {
        "text": "Carousel Text of body",
        "cards": [
          {
            "image": {
              "id": "jpeg-3ecabd5d800894edb2076b-801712969a77c9",
              "mime_type": "image/jpeg",
              "file_size": 225844,
              "sha256": "8o9oRT0n/HdMAnatWSi3ebRhGcWlMH6sqrILRef3hD4=",
              "width": 1000,
              "height": 571,
              "preview": "data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wAARCAASACADASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAQBAgUD/8QAKhAAAgIBAgUACwAAAAAAAAAAAQIAAxEEEhMhNFFhBRQxQVJxcoGRodH/xAAYAQACAwAAAAAAAAAAAAAAAAAEBQECBv/EACARAAEDAwUBAAAAAAAAAAAAAAABAgMEMTIREiFBcYH/2gAMAwEAAhEDEQA/ALprKkOUZ1PhD/J3f0inqzi8ttIxuCEfqZNuv1GCdy0p2UZY/czL1l72DBJy3c5MDSn1uPZ1axm5yD9bYUWIpZn5qPhHnzDh2MctkZ/MVwbaKrVOGZcH5jlIW21W28R0bsTkQyKNn0zk75V74LXknV4PsA5CJX9QYQlUHtfgno7pulb64ajpyfeDyhCQmQodY//Z"
            },
            "buttons": [
              {
                "type": "cta_url",
                "text": "Button text1",
                "id": "ButtonsV3:Button ID1",
                "url": "https://www.google.com/"
              }
            ]
          },
          {
            "image": {
              "id": "jpeg-3ecabd5d800894edb2076b-801712969a77c9",
              "mime_type": "image/jpeg",
              "file_size": 39776,
              "sha256": "RHUBtDKOq0WQbx39NymvzA4BECJdxRVIs0+rRfl1Sn8=",
              "width": 420,
              "height": 240,
              "preview": "data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wAARCAASACADASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAABAAFAQP/xAAuEAABAwIEAwUJAAAAAAAAAAABAgMRAAQFEhMhMUFRFEJhwdEGFSMyM2KBsbL/xAAWAQEBAQAAAAAAAAAAAAAAAAACAwT/xAAZEQACAwEAAAAAAAAAAAAAAAAAAQISIUL/2gAMAwEAAhEDEQA/AA4ekYpboDTmS/YEsOTGcDuHypmVOMMQ2Oz4nbmQOBkcY9PyKCE6g942Qh1G9wyn+0+YouKYwbq6Tc2TCkvoT8VxJ+boY6isqVnhubqtH63axousuN3yJzNhEzHeHpz5VxYxlTJDKUW7CwCpwCCrxjjQxbpvrVF1ZuOHEGxmUFOE6scSPu8K0bDHDeMaS/rAbpO2Y+R/dVRJmNZ7vJSd0qkEciINK9nUp0XdhuDyqqoQFMzmFKbvLjIopyqBEGIM16Y+AjG1lAykpBMbSetVVPoHJ//Z"
            },
            "buttons": [
              {
                "type": "quick_reply",
                "text": "Button text2",
                "id": "ButtonsV3:Button ID2"
              }
            ]
          },
          {
            "image": {
              "id": "jpeg-3ecabd5d800894edb2076b-801712969a77c9",
              "mime_type": "image/jpeg",
              "file_size": 28926,
              "sha256": "G95cmaijlvaq2jPY9CiBBiUPpjmvKLGvcHwRhup5k4g=",
              "width": 360,
              "height": 240,
              "preview": "data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wAARCAAVACADASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMFBAb/xAAnEAABAwIGAQQDAAAAAAAAAAABAgMRAAQFEhMhMWFRBhQyM0Fxkf/EABYBAQEBAAAAAAAAAAAAAAAAAAIDAf/EABsRAAMAAgMAAAAAAAAAAAAAAAABEQISISIy/9oADAMBAAIRAxEAPwDPf4mgOZCPj+QayPKnB2mzKnM0kAEnk0l+wvbpS3LdhbjczKeJprurZsNpfbWkxA8Gi8VRbcDMHt0OWl8VokgCMydxsfNT3WAC0IH1yP7VHC3ypm9UJAUE8/o0pSpCNkkaZ3I7ot9hLydDgb2lhKDlmXCeehUn1RcarbEICQFkxPVFFUJkWzvlWzbwCArVETMRtS/eLyjbhMc90UUYja4f/9k="
            },
            "buttons": [
              {
                "type": "quick_reply",
                "text": "Button text3",
                "id": "ButtonsV3:Button ID3"
              }
            ]
          }
        ]
      },
      "from": "919703374655",
      "from_name": "Name"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-M72HC"
}
```

### Incoming Group member tag changed

When a participant adds, edits, or deletes their member tag in a group, you will receive a system message via the `messages.post` webhook.

Group member tags are short text labels (up to 30 characters) that appear under a participant's name in a group chat — for example, "Coach" or "Manager". Tags are group-specific, so users can have different tags in different groups.

json

```json
{
  "messages": [
    {
      "id": "rIGgoRPCfsGyzjMDUd0gFA-gg0Bq53lteBWvw",
      "from_me": false,
      "type": "action",
      "chat_id": "120363424979900095@g.us",
      "timestamp": 1770710015,
      "source": "system",
      "chat_name": "test group2001",
      "action": {
        "type": "label_change",
        "participant": "79836116937@s.whatsapp.net",
        "label": "Participant label"
      },
      "from_name": "Name2"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "MANTIS-PF298
```

### Incoming album

```json
{
  "messages": [
    {
      "id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "from_me": false,
      "type": "album",
      "chat_id": "1234567890@s.whatsapp.net",
      "timestamp": 1774271298,
      "source": "mobile",
      "album": {
        "expectedImageCount": 10,
        "expectedVideoCount": 0
      },
      "from": "1234567890",
      "from_name": "User"
    }
  ],
  "event": {
    "type": "messages",
    "event": "post"
  },
  "channel_id": "XXXXX-XXXXX"
}
```

### Format

<table data-header-hidden><thead><tr><th width="163"></th><th></th></tr></thead><tbody><tr><td>id*</td><td><p><code>string</code></p><p>Message ID</p></td></tr><tr><td>type*</td><td><p>MessageType <code>string</code><br>default: text</p><p>Message type</p><p>Enum:<br>[ text, image, video, gif, audio, voice, short, document, link_preview, location, live_location, contact, contact_list, sticker, system, call, unknown, action, group_invite, product, interactive, reply, poll, hsm, order, story, carousel ]</p></td></tr><tr><td>subtype</td><td><p><code>string</code></p><p>Message subtype</p></td></tr><tr><td>chat_id*</td><td><p><code>string</code></p><p>Chat ID</p></td></tr><tr><td>from</td><td><p><code>string</code></p><p>WhatsApp ID of the sender</p></td></tr><tr><td>from_me*</td><td><p><code>boolean</code></p><p>Is message from me</p></td></tr><tr><td>from_name</td><td><p><code>string</code></p><p>Pushname of the sender</p></td></tr><tr><td>source</td><td><p>MessageSource <code>string</code><br>default: text</p><p>Message source</p><p>Enum:<br>[ web, mobile, api, system, business_api ]</p></td></tr><tr><td>timestamp*</td><td><p><code>number</code></p><p>Message timestamp</p></td></tr><tr><td>device_id</td><td><p><code>number</code></p><p>Device ID, if the message was not sent through the app</p></td></tr><tr><td>status</td><td><p>StatusEnum <code>string</code><br>List [ "Message failed to send (Red error triangle in WhatsApp Mobile)", "Message pending to send (One clock in WhatsApp Mobile)", "Message received by WhatsApp server (One checkmark in WhatsApp Mobile)", "Message delivered to recipient (Two checkmarks in WhatsApp Mobile)", "Message read by recipient (Two blue checkmarks in WhatsApp Mobile)", "Voice-message played by recipient (Two blue checkmarks in WhatsApp Mobile)", "Message deleted by the user" ]</p><p>Message ack status</p><p>Enum:<br>[ failed, pending, sent, delivered, read, played, deleted ]</p></td></tr></tbody></table>

<table data-header-hidden><thead><tr><th width="165"></th><th></th></tr></thead><tbody><tr><td>action</td><td><p>Message action {</p><p>}</p></td></tr><tr><td>context</td><td><p>Message context {</p><p>}</p></td></tr><tr><td>reactions</td><td>Reactions for message</td></tr></tbody></table>

[^1]: The identifier of the specific item in the poll. Store this data so you can compare which item a person voted for.

[^2]: The ID of the message with the survey itself

[^3]: The identifiers of the voting points that the person has selected

[^4]: Who voted in the poll

[^5]: total number of votes before update

[^6]: total number of votes after update

[^7]: vote count for each poll option


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://support.whapi.cloud/help-desk/receiving/webhooks/incoming-webhooks-format/incoming-message.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
