← Blog

·

WhatsApp para delivery y restaurantes: pedidos y estado por la API

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

EtapaQué ocurreTipo de mensaje
El cliente escribe«Hola, quiero pedir» o clic en un enlace wa.meMensaje recibido, abre la ventana de 24 h
MenúEl restaurante envía el catálogo o una seleccióncatalog_message o product_list
CarritoEl cliente elige productos y envía el carritoWebhook type: "order"
DirecciónEl restaurante pide la ubicaciónlocation_request_message
PagoEl restaurante envía el resumen con Pixorder_details
ConfirmaciónEl PSP confirma el Pix y el restaurante actualizaorder_status
Preparación y entrega«En preparación», «En camino», «Entregado»Texto u order_status dentro de la ventana
ReseñaEncuesta sobre ese pedidoPlantilla 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_id para 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 cocinaEstado del pedidoTexto sugerido
Pix confirmadoprocessing«Pago confirmado, pedido en preparación.»
Salió el repartidorshipped«Su pedido va en camino.»
Entregadocompleted«Pedido entregado. ¡Buen provecho!»
Cancelado antes del pagocanceledMotivo 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:

MensajeCategoríaObservación
Retraso del pedido de ayer, reembolso procesadoUtilidadDatos del pedido, sin oferta
Encuesta sobre el pedido entregadoUtilidadDebe citar el pedido; una encuesta genérica no se aprueba como utilidad
Promoción de la semana, cupón, «vuelva a pedir»MarketingRequiere 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.