Mensajes
Enviar formulario
Envía un botón que abre un Native Flow de WhatsApp para captura de datos estructurados
POST
Enviar formulario
Auth:
Flujo personalizado vía
Escape hatch para tus propios flujos (creados en WhatsApp Business Manager). Cuando se proporciona
TokenAccount o TokenInstance • Rate-limit: Global (100/min) • Idempotente: no
Descripción
Envía un mensaje con un botón que abre un Native Flow de WhatsApp, un formulario nativo que recolecta datos estructurados (nombre, teléfono, email, CPF/CNPJ, dirección) sin salir de la conversación. Soporta dos flujos preconfigurados:contact_details (Datos del cliente) y registration_offer (Oferta de registro), además de un escape hatch vía buttonParamsJSON para flujos completamente personalizados. Ideal para captura de leads, registros y ofertas con confirmación rápida.
Ejemplos
Oferta de registro (registration_offer)
Envía una oferta con título y descripción. El botón abre el Flow default de registro con campos visibles configurables.Captura de datos de contacto (contact_details)
Usa el flujo oficialcontact_details de WhatsApp. Oculta los campos que no quieres pedir vía las flags *Visible. Aquí pedimos solo nombre, teléfono y email.
Flujo personalizado vía buttonParamsJSON
Escape hatch para tus propios flujos (creados en WhatsApp Business Manager). Cuando se proporciona buttonParamsJSON, el servidor ignora todos los demás campos relacionados con el flujo (formType, flowId, flags de visibilidad, offerName, etc.) y usa el JSON literal como params del botón Native Flow.
Crear Flows
Abre el WhatsApp Business Manager para crear y gestionar tus Flows personalizados (obtén el
flow_id aquí).Flows Playground
Prueba y prototipa schemas de Flow en el playground oficial de Meta antes de enviarlos a producción.
Respuesta exitosa
ElmessageType retornado es interactive (un formulario es una variación de mensaje interactivo Native Flow), y content refleja el message que enviaste. Guarda el messageId (y el flowToken, generado automáticamente cuando no envías uno) para correlacionar con la respuesta del flujo en el webhook.
200 OK
Cuando el usuario llena y envía el formulario, WhatsApp envía un mensaje
interactive_response cargando el flow_token (el UUID que proporcionaste o el autogenerado) y el JSON con las respuestas. Captúralo vía webhook/websocket para correlacionar con el envío original.Parámetros de ruta
string
requerido
Nombre de la instancia (p. ej.,
$Instance_Name).Cabeceras
string
requerido
TokenAccount o TokenInstance.string
requerido
application/jsonCuerpo de la solicitud
string
requerido
Destino: teléfono (
5511999999999) o JID (@s.whatsapp.net, @lid, @g.us).string
requerido
Texto mostrado en la burbuja del mensaje, sobre el botón que abre el Flow.
string
predeterminado:"registration_offer"
Tipo de formulario preconfigurado:
"contact_details" (Datos del cliente) o "registration_offer" (Oferta de registro). Ignorado si se proporciona buttonParamsJSON.string
predeterminado:"Add information"
Texto mostrado en el botón que abre el Flow (
flow_cta).string
Token para correlacionar la respuesta del formulario con el envío. Cuando se omite, el servidor genera un UUID automáticamente. Puedes usar este token para vincularlo con un lead/oportunidad en tu CRM.
string
ID del Flow en WhatsApp Business. Defaults por
formType:contact_details→1889354358373616registration_offer→892701196712475
buttonParamsJSON).string
predeterminado:"4"
Valor
flow_message_version enviado a WhatsApp.int
predeterminado:"3"
message_version del payload Native Flow.string
Escape hatch para flujos completamente personalizados. Cuando se proporciona, el servidor envía este JSON literal como
params del botón Native Flow e ignora formType, flowId, flowToken, flowMessageVersion, messageVersion, todas las flags *Visible, offerName y offerDescription. Útil para integrar con flujos que has creado en WhatsApp Business Manager con schemas personalizados.boolean
predeterminado:"true"
Muestra el campo “Full name” en el formulario. Ignorado si se proporciona
buttonParamsJSON.boolean
predeterminado:"true"
Muestra el campo “Phone number”.
boolean
predeterminado:"true"
Muestra el campo “Email”.
boolean
predeterminado:"true"
Muestra el campo “CPF/CNPJ”.
boolean
predeterminado:"true"
Muestra el campo “Delivery address”.
string
Título de la oferta mostrado dentro del Flow. Usado cuando
formType=registration_offer.string
Descripción de la oferta mostrada dentro del Flow. Usada cuando
formType=registration_offer.int
predeterminado:"0"
Tiempo en segundos a esperar antes de enviar. Durante el intervalo, el servidor muestra el indicador “escribiendo…” al destinatario.
string
ID del mensaje a responder. El mensaje original debe pertenecer a la misma instancia y estar guardado en la base de datos.
boolean
predeterminado:"false"
Cuando es
true y replyTo apunta a un mensaje originado en un grupo, la respuesta se redirige al chat privado del autor original.string
predeterminado:"api"
Identificador de origen para trazabilidad (p. ej.,
crm, landing-sales, n8n).Notas
- Los Flows
contact_detailsyregistration_offerson plantillas preaprobadas de WhatsApp listas para usar. Si necesitas un formulario con campos específicos (preguntas personalizadas, lógica de pantalla), usabuttonParamsJSONcon tu propio Flow. - El
flowTokenes tu identificador para vincular la respuesta del formulario con el registro originador (lead, pedido, etc.). Si no envías uno, guarda el UUID autogenerado para poder correlacionar después. - Cuando se envía
buttonParamsJSON, todos los demás campos relacionados con el Flow se ignoran, tomas el control total del payload, incluyendoflow_id,flow_action,flow_action_payloadyflow_message_version. - Native Flow solo funciona en chats 1-a-1 (
@s.whatsapp.net) y grupos (@g.us); las newsletters (@newsletter) no son compatibles con WhatsApp. - La respuesta del formulario llega como un evento
interactive_response, no es un mensaje de texto regular, así que maneja el webhook en consecuencia.
Errores
Envoltorio de error: