← Blog

·

Ventana de 24 horas de WhatsApp: qué puedes enviar dentro y fuera de ella

Actualizado el 29/10/2026

La ventana de 24 horas de WhatsApp, que Meta llama ventana de atención al cliente, se abre cuando el usuario escribe o llama a la empresa y se reinicia con cada nuevo mensaje suyo. Mientras está abierta, puedes enviar mensajes libres (texto, multimedia, botones, listas) y también plantillas; cuando se cierra, solo plantillas aprobadas. La ventana de punto de entrada gratuito es otra cosa: aplica a quien llega por un anuncio de clic a WhatsApp, dura hasta 7 días y solo cambia el cobro, no el tipo de mensaje permitido.

Este artículo explica las dos ventanas, muestra cómo controlar la de 24 horas en tu código y resume qué se cobra en cada caso, con las reglas vigentes desde el 1/10/2026.

Dos ventanas con funciones distintas

Muchas integraciones mezclan las dos. La tabla separa lo que controla cada una:

Ventana de atención (24 horas)Ventana de punto de entrada gratuito (FEP)
Cómo se abreEl usuario escribe o llama a la empresaEl usuario llega por un anuncio de clic a WhatsApp (app de Android o iOS) y la empresa responde dentro de la ventana de atención
Duración24 horas, reiniciadas con cada mensaje o llamada del usuarioHasta 7 días desde la respuesta de la empresa
Qué controlaQué mensajes se pueden enviarCuánto cobra Meta
EfectoHabilita mensajes libres (no plantilla)Marketing, utilidad, autenticación y servicio no se cobran
Fuera de ellaSolo plantillasCobro normal por categoría

La ventana de atención de 24 horas

El cronómetro empieza con el mensaje (o la llamada) del usuario. Si vuelve a escribir antes de que termine, el plazo vuelve a 24 horas. Los mensajes de la empresa no reinician nada: solo el usuario abre y renueva la ventana.

Dos observaciones de la documentación de Meta:

  • La ventana no reemplaza el consentimiento. Sigues necesitando el opt-in para enviar mensajes al usuario.
  • En casos raros, Meta reconoce que un mensaje recibido puede no permitir respuesta dentro de la ventana. Maneja el error en lugar de suponer que la ventana siempre existe.

Qué puedes enviar con la ventana abierta

Con la ventana abierta, puedes enviar cualquier mensaje de servicio, sin aprobación previa:

  • texto, con o sin vista previa de enlace;
  • imagen, video, audio, documento y sticker;
  • ubicación, contactos y reacciones;
  • mensajes interactivos: botones de respuesta, listas, botón de enlace (CTA URL), solicitud de ubicación, solicitud de dirección y Flows;
  • mensajes de catálogo, como producto único y multiproducto.

Las plantillas también se pueden usar como respuesta. Lo contrario no vale: un mensaje libre nunca sirve para iniciar el contacto. Los payloads de cada tipo interactivo están en la guía de mensajes interactivos.

Qué pasa cuando la ventana se cierra

Fuera de la ventana, la API solo acepta mensajes type: "template" con plantilla aprobada. Si envías texto libre, el envío falla con el código 131047, que Meta describe como «han pasado más de 24 horas desde la última respuesta del destinatario». La falla llega por el webhook de estado (fragmento simplificado):

{
  "statuses": [{
    "id": "wamid.HBgLNTU4NDk5OTk5OTk5OQ...",
    "status": "failed",
    "recipient_id": "5584999999999",
    "errors": [{ "code": 131047 }]
  }]
}

La solución es reenviar como plantilla. Por eso, todo flujo que pueda quedar fuera de la ventana necesita una plantilla equivalente aprobada. La guía de plantillas de la API de WhatsApp muestra cómo crearla y por qué importa la categoría.

¿Quieres probar mientras lees? Crea tu cuenta en Vectalk y envía el primer mensaje por la API oficial. Crear cuenta gratis →

Cómo controlar la ventana en tu sistema

La forma más directa es registrar, a partir del webhook, la hora del último mensaje recibido de cada contacto y calcular la ventana localmente.

El webhook de mensaje recibido trae timestamp (Unix, en segundos) y from (el wa_id del usuario). En Vectalk, este payload llega igual al de Meta en las URL que registraste:

// Al procesar el webhook de mensajes recibidos
async function registrarMensajeRecibido(msg) {
  await db.contactos.upsert({
    wa_id: msg.from,
    ultimo_mensaje_en: new Date(Number(msg.timestamp) * 1000),
  });
}

// Antes de enviar
const VENTANA_MS = 24 * 60 * 60 * 1000;
const MARGEN_MS = 5 * 60 * 1000; // holgura para colas y relojes

function ventanaAbierta(contacto, ahora = Date.now()) {
  if (!contacto?.ultimo_mensaje_en) return false;
  return ahora - contacto.ultimo_mensaje_en.getTime() < VENTANA_MS - MARGEN_MS;
}

async function responder(contacto, texto) {
  const cuerpo = ventanaAbierta(contacto)
    ? { type: "text", text: { body: texto } }
    : { type: "template", template: { name: "retomar_atencion", language: { code: "es" } } };

  return fetch("https://apis.vectalk.com.br/api/messages", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.VECTALK_TOKEN}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ messaging_product: "whatsapp", to: contacto.wa_id, ...cuerpo }),
  });
}

Tres cuidados:

  1. Usa la hora del webhook, no la hora en que tu servidor procesó el evento. Las colas atrasadas acortan la ventana real.
  2. Deja margen. Una respuesta que un agente escribe a las 23:58 de la ventana puede salir después del plazo.
  3. Las llamadas también abren la ventana. Si usas la API de llamadas, registra la llamada recibida de la misma forma.

Si tu equipo atiende desde una cola, muestra el tiempo restante de la ventana en la pantalla del agente. Cuando falte poco, puede enviar una pregunta con botones para animar al cliente a responder y renovar el plazo.

La ventana de punto de entrada gratuito (FEP)

La FEP existe para conversaciones que empiezan en anuncios de clic a WhatsApp. El flujo que describe Meta es este:

  1. El usuario toca el anuncio y envía el mensaje desde la app en Android o iOS (escritorio y web no cuentan).
  2. Eso abre la ventana de atención normal.
  3. Si la empresa responde dentro de esa ventana con un mensaje de marketing, utilidad, autenticación o servicio, esa respuesta no se cobra y abre la FEP desde ese momento.
  4. La FEP puede quedar abierta hasta 7 días. En ese período, Meta no cobra marketing, utilidad, autenticación ni servicio.

El punto que genera confusión: la FEP no extiende la ventana de 24 horas. Los mensajes libres siguen permitidos solo con la ventana de atención abierta. Si el usuario deja de responder, después de 24 horas vuelves a necesitar una plantilla, y esa plantilla sale sin cobro mientras la FEP esté abierta.

Otros detalles:

  • La FEP se controla por el par empresa y usuario, no por cuenta. Si varias cuentas de mensajes envían desde el mismo número de la empresa, todas comparten la misma ventana, aunque otra cuenta haya pagado el anuncio.
  • Los mensajes del Meta Business Agent (el agente de IA de la propia Meta) se siguen cobrando dentro de la FEP.
  • En el webhook de estado, el objeto pricing trae type: "free_entry_point" para los mensajes que no se cobraron por estar dentro de esta ventana.
{
  "pricing": {
    "billable": false,
    "pricing_model": "PMP",
    "type": "free_entry_point",
    "category": "marketing"
  }
}

Para relacionar los clics del anuncio con las ventas, consulta cómo rastrear anuncios de clic a WhatsApp.

Qué se cobra en cada situación

El 1/10/2026, Meta volvió a cobrar dos tipos de mensajes que eran gratuitos: los mensajes de servicio (libres) y las plantillas de utilidad enviadas dentro de la ventana de atención. Para servicio, cada número tiene 1.000 mensajes de servicio entregados gratis por mes, sin acumulación; el cobro empieza en el mensaje 1.001. Los detalles del cambio están en mensajes de utilidad dentro de la ventana de atención.

SituaciónQué puedes enviarCobro de Meta
Ventana de 24 horas abierta, sin FEPMensaje libre o plantillaServicio: 1.000 gratis por número/mes, después se cobra. Plantillas: se cobran por categoría, incluida utilidad
Ventana de 24 horas abierta, con FEPMensaje libre o plantillaSin cobro (excepto Meta Business Agent)
Ventana cerrada, FEP abiertaSolo plantillaSin cobro
Ventana cerrada, sin FEPSolo plantillaSe cobra por categoría

Las tarifas por categoría para destinatarios en Brasil están en precio de la API de WhatsApp en Brasil; para otros mercados, consulta precio de la API de WhatsApp por país, porque la tarifa de Meta depende del código de país del destinatario. El webhook de estado indica qué se cobró en pricing.billable y pricing.type (regular para lo cobrado, free_customer_service para servicio dentro de la franquicia mensual, free_entry_point para mensajes dentro de una ventana FEP abierta). Meta anunció que billable se descontinuará en una versión futura, así que básate en pricing.type y pricing.category. Desde el 12/10/2026, el objeto pricing también puede traer un campo subtype con el valor paid_exempt para mensajes de servicio gratuitos de organizaciones gubernamentales y sin fines de lucro elegibles.

Meta también advierte que, sin un método de pago registrado, entrega los mensajes de servicio de la franquicia gratuita y deja de entregar los siguientes. En Vectalk, el cobro funciona con una mensualidad más saldo prepago: Vectalk coloca su propia línea de crédito en tu número y cada mensaje entregado se descuenta del saldo, así que no necesitas registrar una tarjeta en Meta para que las respuestas sigan saliendo después del mensaje mil.

Cómo mantener la conversación dentro de la ventana

Algunas prácticas reducen la cantidad de plantillas que necesitas enviar:

  • Haz que el cliente inicie. Los enlaces wa.me con texto prellenado y los códigos QR en el sitio, la factura o el empaque llevan al usuario a abrir la conversación. Puedes crear esos enlaces con el generador de enlaces de WhatsApp. En Vectalk, los códigos QR con mensaje prellenado se crean con POST /api/qr-codes, que devuelve el enlace corto y la imagen.
  • Pide una respuesta, no un clic hacia afuera. Los botones de respuesta rápida envían un mensaje del usuario cuando se tocan y, con eso, abren o renuevan la ventana. Un botón de enlace solo abre el navegador.
  • Responde rápido. Un bot que responde en segundos aprovecha toda la ventana para resolver el caso. El artículo sobre chatbot con IA en la API de WhatsApp trata esto, y mensajes de bienvenida y ausencia ayuda fuera del horario de atención.
  • Agrupa la información. En vez de tres mensajes separados después de que la ventana se cerró, una sola plantilla con la información principal y un botón para que el cliente continúe.

Errores comunes de integración

Algunos problemas aparecen en casi todo proyecto que maneja la ventana:

  • Calcular la ventana por el último envío de la empresa. Solo cuenta el mensaje del usuario. Un contacto que recibió diez mensajes tuyos hoy pero no respondió ninguno tiene la ventana cerrada.
  • Guardar la hora por conversación y no por contacto y número. Si operas varios números, la ventana vale para el par formado por el número de la empresa y el usuario. Registra ambos.
  • Ignorar el webhook de falla. La API responde con éxito cuando acepta la solicitud; el failed con 131047 llega después, por el webhook. Si no manejas ese evento, el mensaje desaparece sin que el agente se entere.
  • No tener una plantilla para retomar. Ten al menos una plantilla de utilidad aprobada para retomar atenciones abiertas, con texto ligado al caso del cliente (número de caso, pedido) para que no se clasifique como marketing.

Preguntas frecuentes

¿Un mensaje enviado por la empresa reinicia la ventana de 24 horas?

No. Solo los mensajes o llamadas del usuario abren y reinician la ventana de atención.

Si el cliente toca un botón de respuesta rápida de una plantilla, ¿se abre la ventana?

Sí. El toque envía un mensaje del usuario a la empresa, y un mensaje del usuario abre la ventana de atención. La documentación de Meta sobre límites de marketing por usuario confirma que la respuesta del usuario a un mensaje de marketing inicia una ventana de atención de 24 horas.

¿La ventana de punto de entrada gratuito aplica a quien toca el botón de WhatsApp en mi página de Facebook?

La documentación de precios de Meta, actualizada para las reglas de octubre de 2026, describe la FEP solo para anuncios de clic a WhatsApp abiertos en la app de Android o iOS.

¿Puedo enviar texto libre durante los 7 días de la FEP?

Solo mientras la ventana de 24 horas también esté abierta. La FEP cambia el cobro; lo que habilita el mensaje libre es la ventana de atención.

¿La regla cambia con la coexistencia con la app WhatsApp Business?

El artículo sobre coexistencia tiene una sección sobre precios y ventana de atención cuando el mismo número se usa en la app y en la API.

Aprovecha la ventana con Vectalk

Con Vectalk, los webhooks llegan en el formato de la documentación de Meta, así que el timestamp y el objeto pricing que usas para controlar ventana y costo son los mismos. Usas un token para todas tus cuentas, tienes coexistencia con la app WhatsApp Business y pagas con una mensualidad más saldo prepago, sin tarjeta registrada en Meta. Crea tu cuenta en apps.vectalk.com.br/register, consulta los endpoints en docs.vectalk.com.br o resuelve dudas en el Centro de Ayuda.


Fuentes oficiales consultadas el 29/10/2026: Envío de mensajes y ventana de atención, Precios en la plataforma de WhatsApp Business, Actualizaciones de precio para servicio, utilidad y Meta Business Agent, Códigos de error, Referencia del webhook de estado, Límites de plantillas de marketing por usuario.

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.