Actualizado el 25/10/2026
Con la API oficial de WhatsApp, un restaurante puede publicar su menú en el catálogo de Meta, recibir por webhook el pedido que el cliente arma en el carrito de WhatsApp, cobrar con Pix dentro del chat y enviar cada cambio de estado (en preparación, en camino, entregado). Como el pedido nace de un mensaje del cliente, casi todo el ciclo ocurre dentro de la ventana de atención de 24 horas, donde las respuestas libres e interactivas son mensajes de servicio. Las plantillas solo se necesitan para avisos fuera de esa ventana y para la reseña del día siguiente.
Esta guía recorre un pedido de delivery de principio a fin, con payloads de la Cloud API, la categoría de cada mensaje y consejos de operación. (Contexto: Pix es el sistema de pagos instantáneos de Brasil, que se paga copiando un código en la app del banco.)
El flujo completo de un pedido
| Etapa | Qué ocurre | Tipo de mensaje |
|---|---|---|
| El cliente escribe | «Hola, quiero pedir» o clic en un enlace wa.me | Mensaje recibido, abre la ventana de 24 h |
| Menú | El restaurante envía el catálogo o una selección | catalog_message o product_list |
| Carrito | El cliente elige productos y envía el carrito | Webhook type: "order" |
| Dirección | El restaurante pide la ubicación | location_request_message |
| Pago | El restaurante envía el resumen con Pix | order_details |
| Confirmación | El PSP confirma el Pix y el restaurante actualiza | order_status |
| Preparación y entrega | «En preparación», «En camino», «Entregado» | Texto u order_status dentro de la ventana |
| Reseña | Encuesta sobre ese pedido | Plantilla de utilidad, si está fuera de la ventana |
Cada etapa usa un recurso documentado por Meta.
Menú en el catálogo
El catálogo de Meta admite productos y servicios con nombre, descripción, precio, imagen y disponibilidad. Usted sube el menú por el Commerce Manager o por la API de catálogo y lo conecta a la cuenta de WhatsApp (catálogos).
Hay tres formas de mostrar el menú en el chat:
- Mensaje de catálogo (
catalog_message): una miniatura con el botón «Ver catálogo», que abre todo el menú dentro de WhatsApp. - Mensaje multiproducto (
product_list): hasta 30 productos en secciones como «Pizzas», «Bebidas» y «Postres». Meta menciona repetir un pedido habitual de comida para llevar como uno de sus usos. - Producto único (
product): destaca un plato, como el menú del día.
Mensaje multiproducto con dos secciones:
{
"messaging_product": "whatsapp",
"to": "5584999999999",
"type": "interactive",
"interactive": {
"type": "product_list",
"header": { "type": "text", "text": "Menú de hoy" },
"body": { "text": "Elija sus productos y toque Ver carrito para enviar el pedido." },
"action": {
"catalog_id": "367025965434465",
"sections": [
{ "title": "Pizzas", "product_items": [
{ "product_retailer_id": "PIZZA-MARG" },
{ "product_retailer_id": "PIZZA-PEPP" } ] },
{ "title": "Bebidas", "product_items": [
{ "product_retailer_id": "GASEOSA-LATA" } ] }
]
}
}
}
El carrito viene activado por defecto en cada número y puede desactivarse en la configuración de comercio. Los productos agotados deben salir del catálogo (o quedar no disponibles) antes de la hora pico, o el cliente pedirá algo que la cocina no tiene. Más en catálogo y mensajes de producto.
¿Quieres probar mientras lees? Crea tu cuenta en Vectalk y envía el primer mensaje por la API oficial. Crear cuenta gratis →
Recibir el pedido por webhook
Cuando el cliente envía el carrito, llega un webhook de mensaje con type: "order", según la referencia de pedidos:
{
"from": "5584999999999",
"id": "wamid.HBgM...",
"timestamp": "1761400000",
"type": "order",
"order": {
"catalog_id": "367025965434465",
"text": "Sin cebolla, por favor",
"product_items": [
{ "product_retailer_id": "PIZZA-MARG", "quantity": 1, "item_price": 59.9, "currency": "BRL" },
{ "product_retailer_id": "GASEOSA-LATA", "quantity": 2, "item_price": 7, "currency": "BRL" }
]
}
}
Tres detalles importan para la cocina:
- El carrito enviado no se puede editar. Para cambiar algo, el cliente envía un carrito nuevo. Su sistema debe decidir si el nuevo reemplaza al anterior.
- Las notas llegan en
order.text. «Sin cebolla» y el punto de la carne llegan ahí. Muestre ese campo en la pantalla de cocina. - Recalcule el precio en su sistema. Use el
product_retailer_idpara buscar el precio actual y las reglas de costo de envío, en lugar de confiar solo en el valor del webhook.
No todo cabe en un catálogo: pizzas mitad y mitad o bowls con muchos adicionales suelen requerir otra interfaz. Para esos casos, una lista interactiva o un formulario con WhatsApp Flows resuelve la elección de adicionales dentro del chat.
Dirección y ubicación
Para la dirección, el mensaje location_request_message muestra un botón para enviar la ubicación. La respuesta llega al webhook con latitud, longitud y, cuando existe, la dirección (documentación):
{
"messaging_product": "whatsapp",
"to": "5584999999999",
"type": "interactive",
"interactive": {
"type": "location_request_message",
"body": { "text": "Para calcular el costo de envío, comparta su ubicación o escriba la dirección con número y departamento." },
"action": { "name": "send_location" }
}
}
Pida siempre el departamento o la unidad por texto. La ubicación del celular no siempre apunta al edificio o piso correcto.
Pago con Pix en el chat
En Brasil, Meta ofrece la Orders API: usted envía un mensaje order_details con productos, total y un código Pix dinámico generado por su banco o proveedor de pagos (PSP). El cliente copia el código y paga en la app del banco (Pix dinámico). Los montos son enteros con offset 100: R$ 73,90 se envía como 7390.
{
"messaging_product": "whatsapp",
"to": "5584999999999",
"type": "interactive",
"interactive": {
"type": "order_details",
"body": { "text": "Pedido #2231: 1 pizza margarita y 2 gaseosas. Entrega estimada en 45 minutos." },
"action": {
"name": "review_and_pay",
"parameters": {
"reference_id": "pedido-2231",
"type": "physical-goods",
"payment_type": "br",
"payment_settings": [
{ "type": "pix_dynamic_code", "pix_dynamic_code": {
"code": "CODIGO_PIX_COPIA_Y_PEGA", "merchant_name": "Pizzeria Ejemplo LTDA",
"key": "39580525000189", "key_type": "CNPJ" } }
],
"currency": "BRL",
"total_amount": { "value": 7390, "offset": 100 }
}
}
}
}
El reference_id debe ser único por pedido. WhatsApp no concilia pagos: su PSP confirma el Pix y su sistema avisa al cliente con order_status. El pago contra entrega (terminal de tarjeta o efectivo) sigue siendo posible; en ese caso, confirme el pedido por texto. La visión general de pagos en Brasil también incluye boleto y enlaces de pago.
Estado del pedido
Después del pago, el mensaje order_status actualiza el pedido en el chat. Meta acepta los estados pending, processing, partially_shipped, shipped, completed y canceled, y el pago captured muestra la etiqueta de pagado (Orders API):
{
"messaging_product": "whatsapp",
"to": "5584999999999",
"type": "interactive",
"interactive": {
"type": "order_status",
"body": { "text": "¡Pago confirmado! Su pedido #2231 ya está en preparación." },
"action": {
"name": "review_order",
"parameters": {
"reference_id": "pedido-2231",
"order": { "status": "processing" },
"payment": { "status": "captured", "timestamp": 1761400300 }
}
}
}
}
Un mapeo simple para delivery:
| Evento de cocina | Estado del pedido | Texto sugerido |
|---|---|---|
| Pix confirmado | processing | «Pago confirmado, pedido en preparación.» |
| Salió el repartidor | shipped | «Su pedido va en camino.» |
| Entregado | completed | «Pedido entregado. ¡Buen provecho!» |
| Cancelado antes del pago | canceled | Motivo en hasta 120 caracteres |
La cancelación falla si ya existe un pago confirmado o pendiente para ese order_details. En ese caso, gestione el reembolso en el PSP y avise por texto.
Costo y categoría de cada mensaje
El pedido empieza con un mensaje del cliente, que abre la ventana de 24 horas. Dentro de ella, texto, catálogo, order_details y order_status son mensajes de servicio. Desde el 1 de octubre de 2026, cada número tiene 1.000 mensajes de servicio gratuitos al mes, y Meta cobra a partir del 1.001. Las plantillas de utilidad enviadas dentro de la ventana ahora se cobran como utilidad (página de precios). Por eso, para el estado dentro de la ventana, prefiera mensajes libres u order_status en lugar de plantillas.
Fuera de la ventana, solo plantillas:
| Mensaje | Categoría | Observación |
|---|---|---|
| Retraso del pedido de ayer, reembolso procesado | Utilidad | Datos del pedido, sin oferta |
| Encuesta sobre el pedido entregado | Utilidad | Debe citar el pedido; una encuesta genérica no se aprueba como utilidad |
| Promoción de la semana, cupón, «vuelva a pedir» | Marketing | Requiere opt-in de ofertas |
Las reglas de categoría están en las pautas de categorización. El artículo sobre mensajes de utilidad en la ventana de atención explica el cambio de cobro.
Reseña después de la entrega
Meta acepta como utilidad una encuesta ligada a un pedido específico, como «Entregamos su pedido {{1}}. Si hubo algún problema, escríbanos abajo.» Si la entrega fue hace pocos minutos, la ventana sigue abierta y puede enviar botones de respuesta rápida, sin plantilla:
{
"messaging_product": "whatsapp",
"to": "5584999999999",
"type": "interactive",
"interactive": {
"type": "button",
"body": { "text": "¿Cómo llegó el pedido #2231?" },
"action": { "buttons": [
{ "type": "reply", "reply": { "id": "resena_2231_bien", "title": "Llegó perfecto" } },
{ "type": "reply", "reply": { "id": "resena_2231_mal", "title": "Hubo un problema" } }
] }
}
}
Si el cliente toca «Hubo un problema», pase el chat a una persona. La guía de posventa y NPS profundiza en el tema.
Operación en hora pico
- La cocina no lee WhatsApp. El pedido del webhook debe llegar al mismo sistema de pedidos (KDS o impresora) que los demás canales.
- Varios agentes, un número. Con la API, varias personas atienden el mismo número desde una herramienta de atención. Vea varios agentes en un número.
- Horario de atención. Fuera de horario, responda con un mensaje automático que indique cuándo abre la cocina. Vea mensajes de bienvenida, ausencia y horario.
- Cola en el webhook. Responda 200 al instante y procese el pedido en una cola, para no perder eventos en la hora pico.
Cómo hacerlo con Vectalk
Vectalk es un proxy de la WhatsApp Cloud API oficial de Meta: catálogo, product_list, order_details, order_status y solicitud de ubicación usan los mismos payloads de Meta, enviados a https://apis.vectalk.com.br/api/messages. La documentación tiene ejemplos de mensajes de producto y catálogo y de la configuración de comercio, que activa o desactiva el carrito por número. Con la coexistencia, el restaurante mantiene su número en la app WhatsApp Business. Cree su cuenta en apps.vectalk.com.br/register.
Preguntas frecuentes
¿Necesito catálogo para recibir pedidos por WhatsApp?
No. Puede recibir pedidos por texto o por listas interactivas. El catálogo ayuda porque el pedido llega estructurado, con código de producto y cantidad.
¿El cliente puede pagar con Pix sin salir de WhatsApp?
Copia el código Pix en el chat y lo pega en la app del banco. Meta también describe un modo que abre la app del banco directamente, pero a la fecha de esta consulta requiere registro manual.
¿Se cobra el mensaje de «pedido en camino»?
Si la ventana de 24 horas está abierta, es un mensaje de servicio: gratis hasta 1.000 por número al mes. Si es una plantilla, se cobra como utilidad.
¿Puedo enviar promociones a quien ya pidió?
Solo con plantilla de marketing y opt-in de ofertas. Haber hecho un pedido no equivale a aceptar promociones.
¿Funciona con el número que el restaurante ya usa en el celular?
Sí, con la coexistencia: el número sigue en la app WhatsApp Business y también funciona con la API.
Fuentes oficiales consultadas el 25/10/2026: Catálogos, Mensajes multiproducto, Configuración de comercio, Webhook de pedidos, Solicitud de ubicación, Pagos en Brasil, Orders API, Pix dinámico, Categorización de plantillas, Precios, Documentación de Vectalk.
Pon a funcionar el WhatsApp oficial de tu empresa
Crea tu cuenta, conecta tu número a la API oficial (puedes mantener la app con coexistencia) y empieza a atender y enviar mensajes.
