Por qué tu mensaje de WhatsApp no le llega al cliente
La API no te rechaza el envío: te lo acepta y no lo entrega. Casi siempre es la ventana de servicio.
Automatizás un recordatorio, lo probás con tu propio número y llega perfecto. Lo ponés en producción y la mitad de los clientes no recibe nada. La API devolvió 200 en todos los casos.
Probaste con tu número justo después de escribirle vos al negocio. Eso abrió una ventana que tus clientes no tienen abierta.
La ventana de servicio de 24 horas
WhatsApp separa dos situaciones, y la diferencia es quién habló primero.
- El cliente te escribió hace menos de 24 horas: la ventana está abierta y podés mandarle mensajes libres — texto, imagen, lo que sea.
- La ventana está cerrada: los mensajes libres no se entregan. Solo pasa una plantilla aprobada de antemano.
La ventana la abre el cliente, no vos. Cada mensaje suyo la reinicia. Un recordatorio de turno para mañana casi siempre cae fuera: la última vez que ese cliente escribió fue cuando sacó el turno, tres semanas atrás.
Las plantillas se aprueban antes, no al enviar
Una plantilla es un mensaje con su texto fijo y sus variables, que Meta revisa y aprueba antes de que puedas usarlo. No se improvisa en el momento del envío: si el texto no está aprobado, no sale.
Al crearla se declara una categoría, y esa categoría define qué se paga:
- Utility — sobre una operación en curso: un turno, un envío, un pago.
- Authentication — códigos de verificación.
- Marketing — promociones y cualquier cosa que busque volver a traer al cliente.
La categoría no es una etiqueta libre. Meta reclasifica una plantilla que declara utility y en realidad promociona, y ahí el costo cambia sin que hayas tocado nada.
Qué se paga desde el cambio a cobro por mensaje
El 1 de julio de 2025 la plataforma dejó atrás el cobro por conversación y pasó a cobrar por mensaje. Antes, un cargo cubría todas las plantillas dentro de una misma ventana de 24 horas; ahora se cobra por plantilla entregada.
Lo que sigue sin costo, según la documentación de Meta:
- Los mensajes que NO son plantilla, dentro de una ventana de servicio abierta.
- Las plantillas de categoría utility entregadas dentro de una ventana abierta.
Y solo se cobra cuando la plantilla se entrega, no cuando se envía.
Lo que esto le exige a tu sistema
La consecuencia de diseño es concreta: tu automatización tiene que saber si la ventana de ese contacto está abierta antes de elegir qué mandar. Eso significa guardar, por contacto, la marca de tiempo del último mensaje entrante — dato que llega por webhook — y decidir con eso.
const VENTANA_MS = 24 * 60 * 60 * 1000;
const ventanaAbierta = (contacto) =>
contacto.ultimoEntranteEn && Date.now() - contacto.ultimoEntranteEn < VENTANA_MS;
// Fuera de la ventana un mensaje libre NO se entrega, y la API igual responde
// que lo acepto. La decision se toma antes de enviar, no despues.
const enviar = (contacto, texto, plantilla) =>
ventanaAbierta(contacto)
? enviarTexto(contacto, texto)
: enviarPlantilla(contacto, plantilla);Un sistema que no lleva ese estado manda mensajes libres a ciegas y pierde una parte de los envíos sin ningún error visible.
Por qué te rechazan una plantilla
La aprobación no es un trámite: es donde se cae la mitad de los primeros intentos. Los motivos que más se repiten:
- Variables al principio o al final del texto, o dos seguidas. Una plantilla que es casi toda variables no se puede revisar, porque el revisor no sabe qué va a decir.
- Contenido promocional declarado como utility. La categoría tiene que coincidir con lo que el mensaje realmente hace.
- Texto que no se entiende sin contexto. "Tu código es {{1}}" pasa; "{{1}}" solo, no.
- Errores de ortografía o formato roto. Se revisa el texto tal como va a llegar.
Consecuencia de diseño: las plantillas no se improvisan en el momento del envío ni se editan libremente después. Cada variante nueva de un mensaje es una plantilla nueva que hay que mandar a aprobar. Si tu sistema arma textos dinámicos, eso hay que resolverlo con variables dentro de una plantilla fija, no generando textos distintos.
Qué guardar de cada contacto
El mínimo para que una automatización funcione sin perder mensajes:
- La marca de tiempo del último mensaje entrante. Es lo que decide si podés mandar texto libre o necesitás plantilla.
- El estado de entrega de lo que mandaste. Los webhooks informan enviado, entregado y leído — y también fallado, que es donde se ve el problema.
- Si el contacto se dio de baja. WhatsApp permite bloquearte, y seguir intentando afecta la calidad de tu número.
La lista corta
- La ventana la abre el cliente al escribirte, y dura 24 horas desde su último mensaje.
- Cerrada la ventana, solo pasan plantillas aprobadas.
- La categoría de la plantilla define el costo, y Meta la reclasifica si no corresponde.
- Guardá el timestamp del último mensaje entrante por contacto: es lo que decide qué podés mandar.
- Probar con tu propio número no prueba nada: tenés la ventana abierta.
- Cada variante de texto es una plantilla nueva que hay que aprobar.
- Insistir con quien no quiere recibirte te baja la calidad del número y el límite diario.
Preguntas frecuentes
- ¿Puedo mandarle un mensaje a alguien que nunca me escribió?
- Sí, pero solo una plantilla aprobada, y esa se cobra. Un mensaje de texto libre a un contacto que nunca te escribió no se entrega, aunque la API acepte el envío.
- ¿Cuánto dura exactamente la ventana de servicio?
- 24 horas contadas desde el último mensaje que te mandó el cliente. Cada mensaje suyo la reinicia. No la abre ni la extiende nada que hagas vos.
- ¿Por qué la API me devuelve 200 y el mensaje no llega?
- El 200 confirma que la API aceptó el pedido, no que WhatsApp lo entregó. Fuera de la ventana, un mensaje libre se acepta y no se entrega. El estado real de entrega llega después, por webhook.
- ¿Qué mensajes son gratis?
- Según la documentación de Meta: los mensajes que no son plantilla enviados dentro de una ventana de servicio abierta, y las plantillas de categoría utility entregadas dentro de una ventana abierta. Las plantillas se cobran al entregarse, no al enviarse.
- ¿Puedo editar una plantilla ya aprobada?
- Hay margen limitado, y cualquier cambio de fondo vuelve a revisión. En la práctica conviene diseñarlas con variables desde el principio en vez de planear editarlas.
¿Querés automatizar WhatsApp sin perder mensajes?
Armo la integración con la API oficial de WhatsApp Business conectada a tu sistema: plantillas que pasan la revisión, control de la ventana de 24 horas y el estado de cada contacto. Contame qué avisos necesitás mandar.
contacto@meglioalan.com