> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ycloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Mensaje eco de WhatsApp actualizado

> Gestiona eventos de estado de mensajes eco entregados, leídos, enviados con retraso y fallidos.

## Qué es

Suscríbete a `whatsapp.echo_message.updated`.

Recibes este evento cuando YCloud procesa un estado de eco saliente coincidente para un Agent creado mediante API. Conserva el contenido del mensaje del evento creado: las actualizaciones de estado omiten el contenido del mensaje y `type`. Las actualizaciones fallidas incluyen detalles del error de origen cuando están disponibles.

El contrato actual mantiene el nombre del evento sin cambios y expone las modificaciones de estado
bajo `whatsappMessage`, coincidiendo con el objeto utilizado por el evento creado
correspondiente.

## Antes de comenzar

1. Incorpora el Agent a través de la [API REST pública](/es/api-reference/meta-business-agents/onboard).
2. Suscribe un endpoint de webhook activo en la misma cuenta a `whatsapp.echo_message.updated`.
3. Verifica `YCloud-Signature` contra el cuerpo sin procesar de la solicitud, acepta cada evento de forma duradera y procésalo de manera idempotente.

<Warning>
  Los Agents creados en la consola no emiten este webhook para clientes. La sincronización de su Inbox es un flujo independiente.
</Warning>

Consulta [Configurar webhooks](/es/api-reference/guides/api-fundamentals/configure-webhooks#subscribe-to-echo-and-handover-events) para configurar el endpoint.

## Cómo funciona

Todos los ejemplos utilizan identificadores de marcador de posición. Enruta mediante el `type` exterior y lee
`whatsappMessage`, no `whatsappMetaBusinessAgent`, `whatsappEchoMessage` ni `data`.

Desduplica entregas repetidas con el `id` exterior. El `createTime` exterior es la
hora del evento del webhook; el `updateTime` anidado y las horas específicas del estado son horas de origen RFC 3339.

* Haz coincidir las actualizaciones con el evento creado mediante `id` o `wamid`, con ámbito limitado a tu cuenta y número comercial.
* El teléfono del cliente y el BSUID son independientes. Cuando el estado de origen suministra tanto `recipient_id` como `recipient_user_id`, el evento incluye `to` junto con `recipientUserId` o `parentRecipientUserId`.
* Si un elemento de estado omite esas identidades y la misma devolución de llamada contiene exactamente un contacto, YCloud puede usar el `wa_id` y `user_id` explícitos de ese contacto. Con cero o múltiples contactos, las identidades faltantes permanecen omitidas; nunca se infieren entre sí.
* `from` se incluye solo cuando la devolución de llamada de origen suministra un número de teléfono visible comercial válido. No se deriva de `phoneNumberId`.
* Mantén el historial de eventos separado del estado actual del mensaje. Un evento `sent` tardío puede llegar después de `read`; regístralo sin degradar el estado actual.
* El ejemplo de envío tardío a continuación hace referencia al mensaje del ejemplo leído. El ejemplo fallido hace referencia a un mensaje diferente.
* Los estados sin cambios y del mismo rango que se repiten se suprimen durante el procesamiento. Esto no garantiza una entrega HTTP exactamente una vez.
* Un estado recibido antes de su registro de eco puede reintentarse internamente. No dependas del orden de entrega.
* Los estados de mensajes ordinarios enviados por API utilizan [`whatsapp.message.updated`](/es/api-reference/guides/examples/webhook-examples/whatsapp-message-updated-webhook-examples), no este evento.

## Solicitud

YCloud envía estos cuerpos JSON en solicitudes HTTP `POST` a tu URL de webhook configurada.

## Respuesta

Devuelve una respuesta `2xx` tras aceptar cada evento de forma duradera. Procesa las tareas lentas de forma asíncrona.

## Mensaje eco entregado

### Solicitud

Correlaciona con el evento creado mediante id o wamid. Los eventos actualizados omiten el contenido y el tipo del mensaje.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "evt_example_echo_delivered",
  "type": "whatsapp.echo_message.updated",
  "apiVersion": "v2",
  "createTime": "2026-09-09T02:00:03.000Z",
  "whatsappMessage": {
    "id": "MESSAGE_ID",
    "wamid": "wamid.EXAMPLE",
    "wabaId": "WABA_ID",
    "from": "+12025550123",
    "to": "+12025550124",
    "recipientUserId": "GB.898232076600896",
    "status": "delivered",
    "updateTime": "2026-09-09T02:00:01.000Z",
    "deliverTime": "2026-09-09T02:00:01.000Z"
  }
}
```

### Respuesta

```http theme={"theme":{"light":"github-light","dark":"github-dark"}}
HTTP/1.1 200 OK
```

### Explicación

Registra la transición a entregado y conserva el contenido del mensaje recibido en el evento creado.

## Mensaje eco leído

### Solicitud

Correlaciona con el evento creado mediante id o wamid. Los eventos actualizados omiten el contenido y el tipo del mensaje.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "evt_example_echo_read",
  "type": "whatsapp.echo_message.updated",
  "apiVersion": "v2",
  "createTime": "2026-09-09T02:00:03.000Z",
  "whatsappMessage": {
    "id": "MESSAGE_ID",
    "wamid": "wamid.EXAMPLE",
    "wabaId": "WABA_ID",
    "from": "+12025550123",
    "to": "+12025550124",
    "recipientUserId": "GB.898232076600896",
    "status": "read",
    "updateTime": "2026-09-09T02:00:02.000Z",
    "readTime": "2026-09-09T02:00:02.000Z"
  }
}
```

### Respuesta

```http theme={"theme":{"light":"github-light","dark":"github-dark"}}
HTTP/1.1 200 OK
```

### Explicación

Registra la transición a leído utilizando `updateTime` y `readTime` como horas de eventos de origen.

## Estado de envío tardío tras lectura

### Solicitud

Un estado de origen de menor rango puede llegar tras la lectura. Registra el evento sin degradar el estado actual del mensaje.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "evt_example_echo_sent",
  "type": "whatsapp.echo_message.updated",
  "apiVersion": "v2",
  "createTime": "2026-09-09T02:00:03.000Z",
  "whatsappMessage": {
    "id": "MESSAGE_ID",
    "wamid": "wamid.EXAMPLE",
    "wabaId": "WABA_ID",
    "from": "+12025550123",
    "to": "+12025550124",
    "recipientUserId": "GB.898232076600896",
    "status": "sent",
    "updateTime": "2026-09-09T02:00:00.000Z",
    "sendTime": "2026-09-09T02:00:00.000Z"
  }
}
```

### Respuesta

```http theme={"theme":{"light":"github-light","dark":"github-dark"}}
HTTP/1.1 200 OK
```

### Explicación

Conserva este evento en el historial de entregas, pero no degrades un estado actual posterior como `read`.

## Mensaje eco fallido

### Solicitud

Este es un mensaje fallido independiente, no una transición desde leído. Las actualizaciones fallidas incluyen detalles del error de origen cuando están disponibles.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "evt_example_echo_failed",
  "type": "whatsapp.echo_message.updated",
  "apiVersion": "v2",
  "createTime": "2026-09-09T02:00:03.000Z",
  "whatsappMessage": {
    "id": "FAILED_MESSAGE_ID",
    "wamid": "wamid.FAILED_EXAMPLE",
    "wabaId": "WABA_ID",
    "from": "+12025550123",
    "to": "+12025550124",
    "recipientUserId": "GB.898232076600896",
    "status": "failed",
    "errorCode": "131000",
    "errorMessage": "Provider failure",
    "updateTime": "2026-09-09T02:00:03.000Z"
  }
}
```

### Respuesta

```http theme={"theme":{"light":"github-light","dark":"github-dark"}}
HTTP/1.1 200 OK
```

### Explicación

Usa `errorCode` y `errorMessage` para diagnósticos cuando la devolución de llamada de origen los proporcione.

### Ejemplos relacionados

* [Mensaje eco de WhatsApp creado](/es/api-reference/guides/examples/webhook-examples/whatsapp-echo-message-created)
* [Traspaso de Agent de WhatsApp actualizado](/es/api-reference/guides/examples/webhook-examples/whatsapp-meta-business-agent-handover-updated)
* [Ejemplos de eco y traspaso de Agent](/es/api-reference/guides/examples/webhook-examples/overview#echo-and-agent-handover-events)
* [Catálogo completo de cargas útiles](/es/api-reference/guides/examples/webhook-examples/webhook-payload-examples)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.