Hay un momento incómodo que vive casi todo el que automatiza WhatsApp por primera vez: el panel dice que el mensaje se envió, la API devolvió 200, hay un identificador de mensaje… y el cliente jura que no ha recibido nada.
No es un fallo de tu integración. Es la ventana de 24 horas, y conviene entenderla antes de construir nada encima.
Qué es exactamente la ventana de 24 horas
WhatsApp separa dos situaciones que a nivel de negocio parecen la misma y a nivel de plataforma no lo son:
- Estás respondiendo a alguien. El contacto te escribió y tú contestas. WhatsApp llama a esto una conversación de servicio y te deja mandar texto libre: lo que quieras, como quieras.
- Estás iniciando tú. El contacto no te ha escrito, o lo hizo hace tiempo. Aquí WhatsApp no te deja improvisar.
La frontera entre ambas es una ventana de 24 horas que se cuenta desde el último mensaje entrante del contacto. Dentro de esa ventana, texto libre. Fuera, solo una plantilla previamente aprobada por Meta.
Es importante el detalle de entrante: la ventana no la abre tu mensaje, la abre el suyo. Y cada mensaje que te manda la reinicia.
El 200 que no significa nada
Aquí está la trampa que hace perder tardes enteras.
Cuando envías fuera de la ventana, la API de Meta no te rechaza. Responde 200, te devuelve un wamid y todo parece correcto. El mensaje se ha aceptado, que no es lo mismo que entregado.
El veredicto real llega después, por webhook, en forma de actualizaciones de estado:
sent → delivered → read
…o bien:
failed → 131047 "Re-engagement message"
Ese 131047 es la plataforma diciéndote: acepté tu mensaje, pero han pasado más de 24 horas desde que esa persona te escribió, así que lo he descartado.
Si tu sistema trata el 200 como éxito, tu panel dirá que enviaste 500 mensajes cuando en realidad llegaron 120. Y no lo sabrás, porque nada falló de forma visible.
La regla: un
200de Meta significa aceptado para procesar. El único estado que significa entregado esdelivered, y llega por webhook, más tarde. Cualquier métrica construida sobre el200está inflada.
Cómo se alcanza entonces a un contacto frío
Con una plantilla aprobada. Es la única vía.
Una plantilla es un mensaje que registras en Meta con antelación, que un revisor aprueba, y que puede contener variables ({{1}}, {{2}}…) que rellenas en el momento del envío. Fuera de la ventana de 24 horas, una plantilla aprobada entra; cualquier otra cosa, no.
Esto tiene una consecuencia de diseño que mucha gente descubre tarde: cualquier automatización que escriba a alguien que nunca te ha escrito tiene que usar plantilla, siempre. Un flujo de "nuevo lead" que manda un texto libre de bienvenida está condenado por definición: el lead, por ser nuevo, no ha abierto ninguna ventana.
La trampa del botón con URL dinámica
Hay un caso concreto que merece una advertencia, porque el editor de plantillas de Meta te deja construirlo y luego no se puede enviar.
Si registras una plantilla con un botón de tipo URL y metes una variable dentro de la dirección, algo como https://tudominio.com/pedido/{{1}}, ese botón se marca como dinámico. A partir de ahí, cada envío está obligado a incluir un componente button con el valor de esa variable. Si tu herramienta de automatización no tiene un campo donde rellenarlo, Meta responde:
131008 Required parameter is missing
El 100% de las veces. La plantilla está aprobada, se ve perfecta en el editor, y no se puede enviar nunca.
Si no controlas el envío a bajo nivel, la recomendación es sencilla: usa botones con URL estática. Pon la variable en el cuerpo del mensaje, no dentro del enlace.
Las tres reglas, juntas
| Situación | Qué se puede enviar | Qué pasa si te equivocas |
|---|---|---|
| Dentro de 24 h desde su último mensaje | Texto libre | Nada |
| Fuera de la ventana | Solo plantilla aprobada | 200, y después 131047 |
| Plantilla con botón de URL dinámica | Nada, en la práctica | 131008 en cada intento |
Qué debería hacer tu herramienta
Si estás evaluando una plataforma de mensajería o construyendo la tuya, estas son las preguntas que separan una integración seria de una que te dará disgustos:
- ¿Sabe en qué estado está la ventana antes de enviar? Decidir después es tarde.
- ¿Se salta el envío y te dice por qué, en lugar de mandarlo igual y dejar que Meta lo tire en silencio?
- ¿Guarda el estado real que llega por webhook, o se queda con el
200inicial? - ¿Detecta una plantilla imposible de enviar, la del botón dinámico, antes de intentarlo?
Lo más prudente es marcar como omitido el envío que no puede llegar, dejando escrito el motivo, en lugar de contarlo como enviado. Un panel en verde mientras se descartan mensajes es peor que uno en rojo: la cifra en rojo se investiga, mientras que la verde deja perder clientes durante meses sin que nadie se entere.
Resumen
- La ventana de 24 horas se abre con el mensaje del contacto, no con el tuyo.
- Fuera de ella, solo entra una plantilla aprobada.
- Un
200es aceptado, no entregado. El estado real llega por webhook. 131047= fuera de ventana.131008= falta el parámetro del botón dinámico.- Cualquier automatización que contacte primero necesita plantilla, sin excepción.
Si tus campañas de WhatsApp reportan un envío perfecto y una conversión extraña, empieza por aquí: es muy probable que estés midiendo aceptaciones y no entregas.


