Saltar al contenido
nvíame
Capítulo 1 de 410 min10 sep 2026

Filtrado de contenido y opt-out

Por qué los operadores bloquean mensajes y cómo gestionar bajas de forma confiable.

Los operadores filtran tráfico A2P para proteger a sus usuarios del spam y el fraude. Los filtros miran URLs, palabras clave, volumen repentino y remitentes no registrados.

Cómo no caer en filtros

  • Usa dominios propios en los enlaces; evita acortadores públicos.
  • Calienta el volumen gradualmente al lanzar un remitente nuevo.
  • Mantén coherencia entre remitente, marca y contenido.

Opt-out confiable

Una baja debe procesarse en todos tus sistemas, de inmediato y para siempre. Mantén una lista de supresión central consultada antes de cada envío promocional, no solo en el segmento de la campaña.

async function sendPromo(to, text) {
  if (await suppression.has(to)) return { skipped: "opt_out" };
  return mx.sms.send({ to, text: text + " Responde BAJA para no recibir más." });
}

El opt-out no es una cortesía: en la mayoría de los mercados es una obligación, y los operadores filtran el tráfico de remitentes que la ignoran. Procesar palabras como BAJA, STOP o NO en cualquier combinación de mayúsculas debe ser automático e inmediato.

Mantén una lista de supresión central, consultada por todos los sistemas que envían, antes de cada envío. Una baja registrada en el canal de marketing que no llega al sistema de cobranza sigue siendo un incumplimiento a ojos del usuario.

Pruébalo

// Opt-out keywords update a central suppression list
const supresion = new Set();
const PALABRAS = ["baja", "stop", "no", "salir", "cancelar"];

async function enviar(to, text) {
  if (supresion.has(to)) return console.warn("omitido (dado de baja):", to);
  await mx.sms.send({ to, text });
}

mx.bot.onMessage(async ({ text, from }) => {
  if (PALABRAS.includes(text.trim().toLowerCase())) {
    supresion.add(from);
    mx.bot.reply("Listo, no recibirás más mensajes promocionales.");
    await enviar(from, "Oferta: 20% en tu próxima compra");
    return;
  }
  mx.bot.reply("Escribe BAJA para dejar de recibir mensajes.");
});

await enviar("+56900000000", "Oferta: 20% en tu próxima compra");
Se completa automáticamente al leer el 80%.

Comentarios (3)

Camila Rojas10 sep 2026

Un usuario respondió 'BAJA' a un remitente alfanumérico. ¿Cómo me entero?

Equipo nvíameAutor10 sep 2026

No puedes: el alfanumérico es unidireccional. Por eso cada mensaje promocional debe incluir una vía de baja alternativa (enlace corto o número bidireccional).

Matías Herrera10 sep 2026

Lo apliqué en el proyecto del trabajo. La sección «Filtrado de contenido y opt-out» me ahorró una discusión larga con el equipo: ahora tenemos un criterio compartido.

Diego Fernández10 sep 2026

¿Hay alguna diferencia importante si lo implemento en un servicio con varias instancias detrás de un balanceador?

Equipo nvíameAutor10 sep 2026

Sí: todo estado que hoy vive en memoria (contadores, sesiones, claves vistas) debe moverse a un almacén compartido con TTL, como Redis. Si no, cada instancia ve solo una parte de la historia.

Los comentarios se guardan solo en este navegador.