send_whatsapp_web_form
Send a published web form to a WhatsApp chat as a message with a short link. The link is minted for that chat only and is put where the message says {{form.url}}, or added at the end. The customer's answers arrive as a submission (see manage_whatsapp_web_form_submissions) and in the form:submitted webhook. For WhatsApp Forms (Meta WhatsApp Flows, native in-chat forms on WhatsApp Business API numbers) use send_whatsapp_flow and list_whatsapp_flows instead.
On WhatsApp Cloud API numbers a free-text message needs the customer to have written within the last 24 hours. Outside that window pass template: an approved template whose URL button opens a form link (list or create one with manage_whatsapp_web_form_appearance, actions link_templates and create_link_template). Pass an idempotencyKey: a retry with the same key is refused instead of sending the form twice.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"formId": "<formId>"
},
"name": "send_whatsapp_web_form"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| chat | No | Chat ID, e.g. 34600111222@c.us (individual chats only: groups and channels cannot receive web forms) | |
| phone | No | Phone number in international format (E.164), e.g. +34600111222 | |
| device | No | Number to send from. Needed when the account has more than one | |
| formId | Yes | Web form ID (id from the list action) | |
| message | No | Message text; put {{form.url}} where the link goes, e.g. "Hi Maria! Please confirm your delivery: {{form.url}}". The link is appended when there is none | |
| template | No | WhatsApp Cloud API numbers, outside the 24-hour window: send the form as this template instead of a text. message is then ignored | |
| expiresIn | No | How long the link works: "48h", "7d", or seconds (1 hour to 90 days). The form's own setting when omitted | |
| reference | No | Your own reference for this link, kept with it and its submissions | |
| variables | No | Flat values the form reads as link.<key> (keys a-z, 0-9 and _, at most 2 KB in all), e.g. { "order_id": "A-1029" } | |
| callbackUrl | No | https URL that receives the submission as well as the webhooks | |
| idempotencyKey | No | Your unique key for this message, 6 to 36 characters. Reuse it when retrying the same send: the API refuses a second message with 409 instead of sending it twice |