Drawing 1 · Interactive
An odd message arrived. What should the bot do?
Question 1 · up to 3
What is message.type in the webhook?
Your answers
None yet — pick an answer to start down the tree.
Path map
Depth 0 of up to 3. Circles are questions, squares are outcomes.
All possible outcomes (5)
Handle it normally
A supported type: parse its object (text.body, image.id…). If your bot has no handler for it yet, that is your gap, not an unsupported message.
Path: “text, image, location, interactive…”
Greet and ask what they need
The content is unavailable, typically on a first message to a number onboarded from the WhatsApp Business app. Reply with a normal greeting and an open question.
Path: “unsupported” → “131060 · Currently unavailable”
Offer buttons instead
Poll choices never reach the API. Reply with reply buttons or a list so the customer can choose again in a form you can read.
Path: “unsupported” → “131051 · Message type unknown” → “poll_creation or poll_update”
Ask for the correction again
You only have the original text. If the edit mattered — a size, an address — ask the customer to type it again.
Path: “unsupported” → “131051 · Message type unknown” → “edit”
Specific fallback, then log it
Say what did not come through and how to resend it, as text or a photo. Count the kind so you can see what customers are trying to send.
Path: “unsupported” → “131051 · Message type unknown” → “Something else”
Question 1: What is message.type in the webhook? 2 options.
What is an unsupported message type?
An unsupported message type is what the WhatsApp Cloud API delivers when a customer sends something it cannot represent. Instead of the content, your messages webhook receives a message whose type is unsupported, an errors array with code 131051 and the title "Message type unknown", and an unsupported object whose type names what the customer actually sent. The sender, the wamid and the timestamp are present as usual; there is simply no body to read.
Meta documents the possible unsupported.type values, among them poll_creation and poll_update for polls, edit for an edited message, pin, keep_in_chat, group_invite, gif and media_placeholder; view-once media is widely reported to arrive this way too. The same payload shape with error 131060, "This message is currently unavailable", appears in a different situation: typically a user's first message to a business whose number was onboarded from the WhatsApp Business app, often after tapping a click-to-WhatsApp ad.
It is different from a system message, which WhatsApp generates about an account event such as a customer changing their number, and from a message type your own code has not implemented yet: a location, a contact card or a reaction is fully supported by the API even if your bot ignores it. Unsupported means the platform itself withheld the content, so the only way to get it is to ask the customer for it in a form the API carries.
Key takeaways
- An unsupported message is an inbound message the Cloud API cannot represent; it arrives with
type: unsupportedinstead of its real content. - The payload carries error 131051, "Message type unknown", and an
unsupported.typefield naming the kind, such aspoll_creationoredit. - The content never reaches you: no poll options, no edited text, so a bot cannot act on it.
- The same shape with error 131060 means the message is currently unavailable, typically a first message to a number onboarded from the WhatsApp Business app.
- Answer with a specific fallback that asks the customer to resend as text, a photo or a button tap, and log
unsupported.typeto see what customers try.
Implementation
An unsupported message type in code
{"from": "919812345678","id": "wamid.HBgMOTE5ODEyMzQ1Njc4FQIAEhgUM0E5QjQ2RDcxRjA4QkY0NzVCRjYA","timestamp": "1760863200","type": "unsupported","errors": [{"code": 131051,"title": "Message type unknown","message": "Message type unknown","error_data": { "details": "Message type is currently not supported." }}],"unsupported": { "type": "edit" }}
The message object inside entry[].changes[].value.messages[]: sender and wamid, but no content.
Operating sequence
How does an unsupported message type work?
Branch on the type first
In the webhook handler, check
message.type === "unsupported"before any content parser runs. Never assumetext.bodyor a media ID exists.Read the error and the kind
errors[0].codeis 131051 (unsupported type) or 131060 (currently unavailable), andunsupported.typenames the kind.error_data.detailsholds the readable description.Reply with a specific fallback
The customer has just written to you, so answer with a free-form message that says what did not come through and how to resend it: as text, a photo, or a tap on your buttons.
Route when it matters
In a support case, or when the customer repeats it, hand the thread to an agent with a note such as "customer sent a poll, not visible via the API".
Log and review
Count events by
unsupported.typeand error code. If customers keep sending polls or edits, change your flows, for example by offering reply buttons instead of asking open questions.
Failure modes
Common mistakes with an unsupported message type
Parsing content before checking the type
A handler that reads
msg.text.bodythrows on an unsupported message, and if the exception fails the webhook request, Meta retries the whole batch. Branch ontypefirst.A generic "I didn't understand"
The customer did nothing wrong, and the reply gives them nothing to do. Say what did not come through and exactly how to resend it.
Confusing your gaps with the platform's
Locations, contacts, reactions and interactive replies are supported types. If your bot ignores them, implement a handler rather than treating them like unsupported messages.
Replying to every event
Several poll updates or pins in a row can each arrive as an unsupported message. Send one fallback per conversation in a short period, not one per event.
Not looking at the trend
Without counts by
unsupported.type, nobody notices that a campaign is drawing poll replies or that customers keep editing addresses. Log the kind and review it.
Specifications
An unsupported message type: key facts and limits
- type
- unsupported
- Error code
- 131051, Message type unknown
- error_data.details
- Message type is currently not supported.
- Kind field
- unsupported.type, e.g. poll_creation, poll_update, edit, pin
- Related code
- 131060, message currently unavailable
- What you receive
- Sender, wamid and timestamp, no content
Example: An edited ring size at a Jaipur jewellery store
A customer tells a Jaipur jewellery store's catalogue bot "size 16" for a ring, then notices the mistake and edits the message to "size 17". The first message arrived as normal text; the edit reaches the webhook as an unsupported message with unsupported.type: edit and no new text. Because the handler branches on the type, the bot replies "I can't see edits to earlier messages — could you type the correct ring size again?" The customer sends "17", and the order is made in the right size instead of the one in the original message.
Design intent
Why does an unsupported message type matter?
Customers do not know which features an API can read. A bot that silently drops a poll vote or an edited correction leaves the customer waiting for an answer to something the business never saw, and one that replies "Sorry, I didn't understand" to a message it could not read sounds broken. Detecting the type and answering with a specific fallback keeps the conversation moving and tells the support team which formats customers are trying to use.
Recommended practice
Best practices for an unsupported message type
- Keep one short fallback line for each common kind; specific asks get answered.
- Show agents a clear placeholder such as "Customer sent a poll (not visible via API)" instead of an empty bubble.
- Use reply buttons or list messages when you need a choice, because poll answers never reach the API.
- When an edit arrives, ask the customer to confirm the detail rather than trusting the original text.