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.
Compatibilidad de cliente: los Native Flows aún no son compatibles con WhatsApp Web/Desktop. El botón del formulario solo se renderizará para destinatarios en las apps oficiales de Android e iOS, en otros clientes el mensaje aparecerá sin el botón interactivo.
Usa el flujo oficial contact_details de WhatsApp. Oculta los campos que no quieres pedir vía las flags *Visible. Aquí pedimos solo nombre, teléfono y email.
curl -X POST "https://ryzeapi.cloud/api/message/form/$Instance_Name" \ -H "token: $Token_Instance" \ -H "Content-Type: application/json" \ -d '{ "number": "5511999999999", "message": "To finish your support request, please complete your details:", "formType": "contact_details", "buttonLabel": "Fill in details", "fullNameVisible": true, "phoneNumberVisible": true, "emailVisible": true, "cpfOrCnpjVisible": false, "deliveryAddressVisible": false }'
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.
El messageType 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
{ "success": true, "message": "Form message sent successfully", "status": "sent", "data": { "messageId": "3EB08FCF27E532F1B0F5", "direction": "sent", "messageType": "interactive", "content": "Lock in your spot in the course with 50% off!", "source": "api", "timestamp": "2026-04-30T14:30:00Z", "chat": { "jid": "5511999999999@s.whatsapp.net", "isGroup": false }, "sender": { "jid": "5511777777777@s.whatsapp.net", "instance": "my-instance" } }}
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.
Tipo de formulario preconfigurado: "contact_details" (Datos del cliente) o "registration_offer" (Oferta de registro). Ignorado si se proporciona buttonParamsJSON.
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.
Escape hatch para flujos completamente personalizados. Cuando se proporciona, el servidor envía este JSON literal como params del botón Native Flow e ignoraformType, 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.
Los Flows contact_details y registration_offer son plantillas preaprobadas de WhatsApp listas para usar. Si necesitas un formulario con campos específicos (preguntas personalizadas, lógica de pantalla), usa buttonParamsJSON con tu propio Flow.
El flowToken es 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, incluyendo flow_id, flow_action, flow_action_payload y flow_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.