Para consultar el catálogo exhaustivo derivado del esquema, consulta todos los ejemplos.
Qué es
Gestiona los tipos de mensajes entrantes de WhatsApp con ejemplos de cargas útiles comentadas.Antes de comenzar
- Crea un endpoint HTTPS público en tu aplicación.
- Configura un endpoint de webhook de YCloud para los tipos de eventos que necesites.
- Almacena el secreto de firma del endpoint de forma segura.
- Haz que el procesamiento de eventos sea idempotente.
Cómo funciona
YCloud envía una solicitud HTTPPOST cuando ocurre el evento. Verifica la firma, registra el evento de forma duradera, devuelve una respuesta 2xx y procesa el trabajo lento de forma asíncrona.
Solicitud
Los siguientes escenarios muestran solicitudes enviadas a tu URL de webhook. Trata el eventoid como el identificador de entrega y utiliza type para enrutar la carga útil.
Respuesta
Devuelve un estado2xx tras aceptar el evento.
Para la configuración del endpoint, la validación de firmas y el comportamiento de reintentos, consulta Configurar webhooks.
Mensaje entrante no admitido
En este caso, tu endpoint de webhook recibió un mensaje entrante no admitido:typeestá establecido enunsupported.errorsexplica por qué el mensaje no es compatible o no está disponible.unsupported.typeidentifica la categoría del mensaje, comopoll_creation,poll_update,editopin.
Solicitud
Respuesta
Confirma la recepción tras aceptar el evento de forma duradera.Explicación
- El error
131051conMessage type unknownsignifica que WhatsApp Cloud API no admite el tipo de mensaje. - El error
131060conThis message is currently unavailable.significa que WhatsApp no pudo proporcionar el contenido del mensaje. unsupported.typeidentifica la categoría general. No contiene el contenido original del mensaje.- Consulta Mensajes no admitidos en Inbox para ver una lista legible de tipos de mensajes. Consulta la referencia de webhooks de mensajes no admitidos de Meta para conocer el contrato actual de carga útil.
Mensaje de texto entrante
En este caso, tu endpoint de webhook recibió un mensaje de texto entrante:- Contiene el texto sin formato que envió el usuario.
- Contiene la información del mensaje mencionado en
context.
Solicitud
Respuesta
Confirma la recepción tras aceptar el evento de forma duradera.Explicación
- Los mensajes entrantes son aquellos que envían los clientes a tus números de teléfono de empresa.
- El objeto
context(opcional) contiene la información del mensaje mencionado, que se utiliza normalmente para responder a un mensaje anterior enviado por el usuario o por tu empresa.context.fromes el ID de WhatsApp (número de teléfono sin el prefijo ’+’) del usuario que envió el mensaje mencionado.context.ides el ID original del mensaje mencionado en la plataforma de WhatsApp, que comienza conwamid..
Mensaje de texto entrante activado por un anuncio con clic a WhatsApp
En este caso, tu endpoint de webhook recibió un mensaje de texto entrante activado por un anuncio con clic a WhatsApp:- Contiene texto sin formato.
- Contiene información sobre el anuncio.
Solicitud
Respuesta
Confirma la recepción tras aceptar el evento de forma duradera.Explicación
- El objeto
referralcontiene información sobre el anuncio. Consulta también Anuncios con clic a WhatsApp.
Mensaje de imagen entrante
En este caso, tu endpoint de webhook recibió un mensaje de imagen entrante:- Contiene una URL de imagen.
- Contiene un pie de foto para describir esta imagen.
Solicitud
Respuesta
Confirma la recepción tras aceptar el evento de forma duradera.Explicación
- La
image.linkse puede acceder directamente durante unos minutos para comodidad del usuario, pero siempre debes incluir un encabezadoX-API-Keypara descargar este archivo en un plazo de 30 días.
Mensaje de video entrante
En este caso, tu endpoint de webhook recibió un mensaje de video entrante:- Contiene una URL de video.
- Contiene un pie de video para describir este video.
Solicitud
Respuesta
Confirma la recepción tras aceptar el evento de forma duradera.Explicación
- La
video.linkse puede acceder directamente durante unos minutos para comodidad del usuario, pero siempre debes incluir un encabezadoX-API-Keypara descargar este archivo en un plazo de 30 días.
Mensaje de audio entrante
En este caso, tu endpoint de webhook recibió un mensaje de audio entrante:- Contiene una URL de audio.
Solicitud
Respuesta
Confirma la recepción tras aceptar el evento de forma duradera.Explicación
- La
audio.linkse puede acceder directamente durante unos minutos para comodidad del usuario, pero siempre debes incluir un encabezadoX-API-Keypara descargar este archivo en un plazo de 30 días.
Mensaje de documento entrante
En este caso, tu endpoint de webhook recibió un mensaje de documento entrante:- Contiene una URL de documento.
- Contiene un pie para describir este documento.
Solicitud
Respuesta
Confirma la recepción tras aceptar el evento de forma duradera.Explicación
- La
document.linkse puede acceder directamente durante unos minutos para comodidad del usuario, pero siempre debes incluir un encabezadoX-API-Keypara descargar este archivo en un plazo de 30 días.
Mensaje de sticker entrante
En este caso, tu endpoint de webhook recibió un mensaje de sticker entrante:- Contiene una URL de sticker.
Solicitud
Respuesta
Confirma la entrega después de aceptar el evento de forma duradera.Explicación
- Se puede acceder directamente al
sticker.linken unos minutos para comodidad del consumidor, pero siempre debes incluir un encabezadoX-API-Keypara descargar este archivo dentro de los 30 días.
Mensaje de ubicación entrante
En este caso, tu endpoint de webhook recibió un mensaje de ubicación entrante:- Contiene la latitud y longitud del lugar.
- Contiene el nombre, la dirección y la URL del lugar.
Solicitud
Respuesta
Confirma la entrega después de aceptar el evento de forma duradera.Explicación
Enruta el evento mediantetype, deduplícalo por id y traslada el trabajo lento o propenso a errores a un procesador asíncrono.
Mensaje de contactos entrante
En este caso, tu endpoint de webhook recibió un mensaje de contactos entrante:- Contiene un contacto con direcciones, fecha de cumpleaños, correos electrónicos, nombre, teléfonos y otros campos de contacto.
- Contiene
origin: contact_requestcuando el usuario compartió el contacto en respuesta a un mensaje de solicitud de información de contacto.
Solicitud
Respuesta
Confirma la entrega después de aceptar el evento de forma duradera.Explicación
Enruta el evento mediantetype, deduplícalo por id y traslada el trabajo lento o propenso a errores a un procesador asíncrono.
Mensaje de reacción entrante
En este caso, tu endpoint de webhook recibió un mensaje de reacción entrante:- Contiene el ID del mensaje al que reacciona el usuario.
- Contiene el emoji.
Solicitud
Respuesta
Confirma la entrega después de aceptar el evento de forma duradera.Explicación
- El
emojiestá presente cuando el usuario reacciona a un mensaje con un emoji. Si no es así, indica que el usuario eliminó el emoji de un mensaje.
Mensaje de botón de plantilla entrante
En este caso, tu endpoint de webhook recibió un mensaje de botón de plantilla entrante:- Contiene el botón
textde la plantilla que utilizaste al enviar una plantilla de mensaje. - Contiene el botón
payloadque proporcionaste al enviar una plantilla de mensaje. - Contiene el wamid (
context.wamid) de la plantilla de mensaje que enviaste.
Solicitud
Respuesta
Confirma la entrega después de aceptar el evento de forma duradera.Explicación
Enruta el evento mediantetype, deduplícalo por id y traslada el trabajo lento o propenso a errores a un procesador asíncrono.
Mensaje interactivo de respuesta de lista entrante
En este caso, tu endpoint de webhook recibió un mensaje interactivo de respuesta de lista entrante:- El campo
interactivecontiene la respuesta de la lista en la que el usuario hizo clic en un mensaje interactivo que enviaste anteriormente. - El campo
contextcontiene información sobre el mensaje interactivo que enviaste previamente al usuario.
Haz clic en el botón para seleccionar un elemento.
El destinatario responde a tu mensaje seleccionando uno de los elementos de tu mensaje interactivo enviado previamente.
Solicitud
Respuesta
Confirma la entrega después de aceptar el evento de forma duradera.Explicación
- El
contextcontiene información sobre el mensaje interactivo que enviaste anteriormente.context.fromes el WhatsApp ID (número de teléfono sin el prefijo ’+’) de quien envió el mensaje interactivo.context.ides el ID del mensaje original en la plataforma de WhatsApp, que comienza conwamid..
Mensaje interactivo de respuesta de botón entrante
En este caso, tu endpoint de webhook recibió un mensaje interactivo de respuesta de botón entrante:- El campo
interactivecontiene la respuesta del botón en el que el usuario hizo clic en un mensaje interactivo que enviaste anteriormente. - El campo
contextcontiene información sobre el mensaje interactivo que enviaste previamente al usuario.
Solicitud
Respuesta
Confirma la entrega después de aceptar el evento de forma duradera.Explicación
- El
contextcontiene información sobre el mensaje interactivo que enviaste anteriormente.context.fromes el WhatsApp ID (número de teléfono sin el prefijo ’+’) de quien envió el mensaje interactivo.context.ides el ID del mensaje original en la plataforma de WhatsApp, que comienza conwamid..
Mensaje interactivo de respuesta de Flow entrante
Al completarse el flow, se enviará un mensaje de respuesta al chat de WhatsApp. Lo recibirás de la misma manera que recibes todos los demás mensajes del usuario: a través del webhook de mensajes. El camporesponse_json contendrá datos específicos del flow.
Solicitud
Respuesta
Confirma la entrega después de aceptar el evento de forma duradera.Explicación
interactive.typesiempre esnfm_reply.interactive.namesiempre esflow.interactive.bodysiempre esSent.interactive.response_jsoncorresponde a datos específicos del flow. La estructura se define en el JSON del flow (consulta Complete action) o, si el flow utiliza un endpoint, está controlada por el endpoint (consulta Final Response Payload en Data Exchange Request). Analiza la cadena JSONinteractive.response_jsona un objeto JSON, donde el tipo de datos de sus valores puede variar. Por lo general, los valores son texto sin formato, excepto:- Cuando se origina a partir de un componente CheckboxGroup, el valor es una lista de cadenas.
- Cuando se origina a partir de un componente OptIn, el valor es un booleano, es decir,
trueofalse. Actualmente, si está presente, el valor debe sertrue, ya que no se incluirá dicha clave enresponse_jsonsi el usuario no eligió aceptar (opt-in). - Cuando se origina a partir de un componente DatePicker, el valor es una cadena que representa una marca de tiempo Unix en milisegundos, como
"1725936737548"(es decir, 2024-09-10T02:52:17.548Z). A partir de la versión 5.0 de Flow JSON, las fechas se establecerán en formato “yyyy-MM-dd”, lo que hace que los valores sean independientes de las zonas horarias.
- Para enviar un mensaje con un Flow, consulta Mensaje de plantilla Flow y Mensaje interactivo de Flow.
Mensaje de sistema entrante
En este caso, tu endpoint de webhook recibió un mensaje de sistema entrante:typeestá establecido ensystem, ysystem.typeestá establecido enuser_changed_number.- Un usuario cambia su número de teléfono en WhatsApp, y
wa_ides el nuevo WhatsApp ID (número de teléfono sin el prefijo+). user_ides el nuevo BSUID.parent_user_idsolo se incluye cuando los BSUID principales están habilitados.
Solicitud
Respuesta
Confirma la entrega tras aceptar el evento de forma duradera.Explicación
Enruta el evento mediantetype, deduplícalo mediante id y traslada el trabajo lento o propenso a fallos a un procesador asíncrono.
Mensaje de pedido entrante
En este caso, tu endpoint de webhook recibió un mensaje de pedido entrante cuando un cliente añade uno o más productos a su carrito y envía un pedido:- Contiene información sobre el producto solicitado.
Solicitud
Respuesta
Confirma la entrega tras aceptar el evento de forma duradera.Explicación
Enruta el evento mediantetype, deduplícalo mediante id y traslada el trabajo lento o propenso a fallos a un procesador asíncrono.
Mensaje de consulta de producto entrante
En este caso, tu endpoint de webhook recibió un mensaje de texto entrante cuando un cliente consulta sobre un producto:- Contiene información sobre el producto.
Solicitud
Respuesta
Confirma la entrega tras aceptar el evento de forma duradera.Explicación
- Se recibe un mensaje de consulta de producto cuando un usuario solicita más información sobre un producto específico. Estos pueden recibirse en dos escenarios:
- Cuando un cliente responde a Mensajes de un solo producto o de múltiples productos.
- Cuando un cliente accede al catálogo de una empresa mediante otro punto de entrada, navega a la página de detalles del producto y hace clic en Enviar mensaje a la empresa sobre este producto.
Mensaje de bienvenida de solicitud entrante
Puedes recibir una notificación por webhook cada vez que un usuario de WhatsApp abra un chat contigo por primera vez. Esto puede ser útil si deseas responder a estos usuarios con un mensaje de bienvenida especial con tu propio diseño. Si habilitas esta función y un usuario abre un chat, normalmente cuando pulsa un enlace universal (enlaces wa.me o api.whatsapp.com ), el cliente de WhatsApp verifica si existe un hilo de mensajes previo entre el usuario y el número de teléfono de tu empresa. Si no lo hay, el cliente activa un webhookrequest_welcome. A continuación, puedes responder al usuario con tu propio mensaje de bienvenida.
Solicitud
Respuesta
Confirma la entrega tras aceptar el evento de forma duradera.Explicación
- Para habilitar esta función en un número de teléfono, ve a Meta Administrador de WhatsApp > Números de teléfono > Configuración > Automatizaciones.
- Para probar el mensaje
request_welcome, si ya tienes un hilo de chat en curso con el número de teléfono de la empresa, primero debes eliminar el chat. - Esta función solo activa un mensaje entrante
request_welcomey no responde ningún mensaje automáticamente. Depende de ti enviar o no un mensaje de bienvenida.

