Saltar al contenido
Chatbots de WhatsApp desde cero
Temario Ir al ejercicio →

Marketing responsable por WhatsApp

  • ⏱ 55 minutos
  • 📶 Nivel: intermedio
  • 🧩 Incluye ejercicio

💡 🎯 Al terminar esta lección podrás…

  • Explicar para qué sirve y para qué no sirve el marketing por WhatsApp, y qué prohíbe la política de Meta.
  • Conseguir y registrar el opt-in por cuatro vías: casilla, palabra clave, QR y formulario.
  • Implementar la baja inmediata (BAJA/STOP) y una regla de frecuencia máxima como funciones puras.
  • Distinguir una promoción útil de spam con ejemplos del minimarket.
  • Interpretar la calidad del número, los límites de envío y las métricas para medir la respuesta.

1.Para qué sirve (y para qué no) el marketing por WhatsApp

WhatsApp es el canal más personal que tiene un negocio: el mensaje llega al mismo lugar donde el cliente habla con su familia. Esa cercanía es una ventaja enorme y, al mismo tiempo, la razón por la que Meta es estricta: si molestas, el cliente te bloquea o te reporta, y tu número paga las consecuencias.

Sirve para:

No sirve para:

⚠️ Importante · No es asesoría legal

Este curso explica las reglas de la plataforma y buenas prácticas. Las leyes de publicidad y de protección de datos dependen de tu país. Si vas a enviar promociones a escala, consulta a un abogado. En la lección 24 verás más sobre datos personales.

2.El opt-in: permiso claro, por categoría y comprobable

El opt-in es el consentimiento del cliente para que le escribas por iniciativa tuya. La política comercial de WhatsApp (WhatsApp Business Messaging Policy) exige que solo contactes a personas que te dieron su número y aceptaron recibir tus mensajes, que pidas el consentimiento por separado para cada tipo de mensaje (por ejemplo, actualizaciones de pedido y ofertas son cosas distintas) y que explicites cómo rechazar. Además, tú eres responsable de obtenerlo conforme a la ley aplicable. Puedes leer el texto original en la política comercial de WhatsApp.

Un buen opt-in cumple cuatro condiciones:

  1. Es explícito: una acción clara del cliente (marcar una casilla vacía, escribir una palabra), nunca una casilla premarcada ni una letra chica.
  2. Dice qué recibirá y con qué frecuencia: «Ofertas de la semana, máximo 2 por semana».
  3. Es separado por categoría: quien acepta «avisos de mi pedido» no aceptó automáticamente «promociones».
  4. Queda registrado: quién, cuándo y por qué canal. Si un cliente reclama, necesitas poder demostrarlo.

Cuatro formas de conseguirlo en el minimarket

Vía Cómo funciona Qué registrar
Casilla en la compra En el formulario de pedido: «Quiero recibir ofertas de La Esquina por WhatsApp (máx. 2 por semana)». Desmarcada de inicio. Teléfono, fecha, canal casilla
Palabra clave El cliente escribe «OFERTAS» al número del bot y este responde pidiendo confirmación. Teléfono, fecha, canal palabra-clave
QR en el local Un cartel en caja con un QR que abre WhatsApp con el texto «Quiero recibir ofertas» ya escrito. El cliente solo toca enviar. Teléfono, fecha, canal qr
Formulario web o de Flows Un formulario con casilla de consentimiento (puede ser un Flow). Teléfono, fecha, canal formulario

El QR y la palabra clave tienen una ventaja extra: como el cliente te escribe primero, se abre la ventana de 24 horas y puedes confirmarle su suscripción con un mensaje libre, sin costo de plantilla.

Un mensaje de confirmación de ejemplo del bot:

Texto
Listo, quedaste suscrito a las ofertas de Minimarket La Esquina.
Te escribiremos como máximo 2 veces por semana.
Para dejar de recibirlas, responde BAJA en cualquier momento.

📌 Nota · Cuenta como opt-in de promociones, no de todo

Si el cliente solo hizo un pedido, puedes escribirle sobre ese pedido (utilidad). Que te haya comprado no significa que aceptó recibir ofertas. Guarda el opt-in por tipo (pedidos, promociones) cuando tu bot crezca.

3.Registrar el opt-in en código

Un registro de opt-in puede ser tan simple como un objeto por cliente. Lo importante es que la función que lo crea valide el canal y limpie cualquier baja anterior (si el cliente se vuelve a suscribir por voluntad propia, vale su decisión más reciente).

promos.js
const CANALES = ["casilla", "palabra-clave", "qr", "formulario"];

function registrarOptIn(cliente, canal, ahora) {
  if (!CANALES.includes(canal)) throw new Error("Canal de opt-in desconocido: " + canal);
  return { ...cliente, optIn: { canal, fecha: ahora }, baja: null };
}

Fíjate en que la función no modifica el cliente original, devuelve uno nuevo. Esto se llama función pura y la hace fácil de probar (lo mismo harás en el ejercicio). En el bot real, el resultado se guardará en KV o en tu hoja de Google Sheets.

4.El opt-out: la baja tiene que funcionar al instante

Dar de baja debe ser más fácil que suscribirse. La política de Meta pide respetar toda solicitud de bloquear, silenciar o darse de baja, también si se hace fuera de WhatsApp. En un bot esto significa:

El reconocimiento debe tolerar mayúsculas, tildes, espacios y signos (" Stop. ", "BAJA", "baja!"), pero no debe confundir frases largas («dame la baja de precio»):

promos.js
function normalizar(texto) {
  return String(texto ?? "")
    .normalize("NFD").replace(/[̀-ͯ]/g, "")   // quita tildes
    .toLowerCase().replace(/[^a-z0-9 ]/g, " ").replace(/\s+/g, " ").trim();
}

const PALABRAS_BAJA = ["baja", "stop", "cancelar", "no mas", "no quiero mas mensajes"];

function procesarBaja(texto) {
  return PALABRAS_BAJA.includes(normalizar(texto));
}

Compara el texto completo, no si «contiene» la palabra. Si buscaras «baja» dentro del mensaje, el cliente que escribe «¿me pueden bajar el precio?» quedaría dado de baja por error (o al revés, ignoraríamos «STOP por favor» si fuéramos demasiado estrictos: decide una política y pruébala, como harás en el ejercicio).

💡 Mejor equivocarse hacia la baja

Ante la duda, un cliente que pidió parar y sigue recibiendo mensajes te cuesta mucho más (reporte, bloqueo, calidad) que un cliente al que le preguntas «¿Quieres dejar de recibir ofertas? Responde BAJA para confirmar».

5.Segmentación y frecuencia

Segmentar es enviar cada oferta solo a quien puede interesarle. No necesitas inteligencia artificial: con una etiqueta o dos ya mejora todo.

Segmento simple Cómo se arma Mensaje de ejemplo
Compra lácteos y desayuno Etiqueta según los productos del pedido «Esta semana: leche y avena con descuento»
Compra en fin de semana Día de sus pedidos «Viernes de ofertas: llévalo hoy»
Pidió delivery Tipo de entrega «Delivery gratis desde S/ 40 este mes»
Hace 30+ días sin comprar Fecha del último pedido «Te extrañamos: pasa por tu pan» (solo si dio opt-in)

La frecuencia es la otra palanca. Una regla sencilla y defendible: máximo 1 o 2 promociones por semana por cliente, y menos si no responde. Esa regla se puede programar, y debe vivir en el código, no en la memoria del dueño:

promos.js
const DIA = 24 * 60 * 60 * 1000;

function puedeRecibirPromo(cliente, ahora, maxPorSemana = 2) {
  if (!cliente.optIn || cliente.baja) return false;
  const recientes = (cliente.promosEnviadas ?? []).filter(t => ahora - t < 7 * DIA);
  return recientes.length < maxPorSemana;
}

Probemos con cuatro clientes de ejemplo (teléfonos falsos): Ana aceptó por casilla hace 10 días; Beto nunca dio opt-in; Carla ya recibió 2 promociones esta semana; Dino aceptó por palabra clave y luego escribió STOP.

probar.js
const ahora = Date.UTC(2026, 9, 7, 15, 0);
let ana = registrarOptIn({ telefono: "51999000111", promosEnviadas: [] }, "casilla", ahora - 10 * DIA);
const beto = { telefono: "51999000222", promosEnviadas: [] };
let carla = registrarOptIn({ telefono: "51999000333", promosEnviadas: [ahora - 2 * DIA, ahora - DIA] }, "qr", ahora - 30 * DIA);
let dino = registrarOptIn({ telefono: "51999000444", promosEnviadas: [] }, "palabra-clave", ahora - 5 * DIA);

for (const t of ["BAJA", " Stop. ", "Cancelar", "dame la baja de precio", "hola"]) {
  console.log(JSON.stringify(t), "->", procesarBaja(t));
}
if (procesarBaja("STOP")) dino = { ...dino, baja: ahora - 1000 };

for (const c of [ana, beto, carla, dino]) {
  console.log(c.telefono, puedeRecibirPromo(c, ahora) ? "enviar" : "NO enviar");
}
Salida esperada
"BAJA" -> true
" Stop. " -> true
"Cancelar" -> true
"dame la baja de precio" -> false
"hola" -> false
51999000111 enviar
51999000222 NO enviar
51999000333 NO enviar
51999000444 NO enviar

Antes de enviar cualquier promoción, cada cliente pasa por puedeRecibirPromo. Solo Ana recibe el mensaje. Y tras enviar, el bot añade la hora a promosEnviadas, para que la regla semanal funcione.

6.Plantillas de marketing

Las promociones casi siempre se envían fuera de la ventana de 24 horas, así que necesitan una plantilla de la categoría marketing aprobada por Meta (la mecánica de crearlas está en la lección 17). Tres cosas a recordar:

Ejemplo de plantilla de marketing para el minimarket, con variables y baja incluidas:

Texto
Hola {{1}}, esta semana en La Esquina: {{2}} a S/ {{3}}.
Vigente hasta el {{4}}. Para dejar de recibir ofertas, responde BAJA.

7.Calidad del número y límites de envío

Meta puntúa la calidad de tus mensajes según cómo reaccionan los clientes: reportes, bloqueos, tasa de lectura. Los estados de calidad de las plantillas son Quality pending, High, Medium y Low; una plantilla en Medium o Low aún puede enviarse pero está en riesgo de pausa, y una plantilla pausada o desactivada ya no se puede usar.

Los límites de mensajería son el tope de clientes distintos a los que puedes escribir fuera de una ventana de atención, en un período móvil de 24 horas. Según la documentación oficial vigente al preparar esta lección, el nivel inicial de un portafolio nuevo es de 250 y los siguientes niveles son 2.000, 10.000, 100.000 e ilimitado. Se sube verificando el negocio o enviando 2.000 mensajes entregados con plantillas de alta calidad en 30 días; desde 2.000 el escalado es automático si usas al menos la mitad de tu límite durante 7 días con buena calidad.

⚠️ Importante · Verifica este dato

Contrastado con la página oficial (actualizada el 21 de mayo de 2026): el límite se calcula por portafolio comercial y se comparte entre todos tus números, de modo que un número puede agotar la capacidad de los demás. Para consultarlo por API, el campo messaging_limit_tier quedó obsoleto: usa whatsapp_business_manager_messaging_limit. Los niveles y los requisitos de escalado han cambiado varias veces. Revisa la página oficial de límites de mensajería y tu propio límite en WhatsApp Manager antes de planificar una campaña.

Para un minimarket de barrio con 300 clientes suscritos, 250 al día alcanza si repartes los envíos en varios días. La lección práctica: no envíes todo de golpe. Dividir la lista en tandas por día es más seguro para la calidad y respeta el límite.

8.Qué prohíbe la política

Resumen de lo que la política comercial de WhatsApp establece (léela completa antes de vender un servicio a un cliente):

Un minimarket que vende alcohol, por ejemplo, debe revisar con cuidado qué productos promociona por este canal.

9.Promociones buenas frente a spam

Situación en La Esquina Buena práctica Spam
Oferta semanal Martes, a quien aceptó «ofertas»: «Esta semana: leche entera 1 L a S/ 4.50» Todos los días «¡¡¡OFERTAS!!!» a una lista que nunca dio permiso
Producto de temporada A quien compró antes productos relacionados: «Llegó panetón. Reserva el tuyo» Aviso de panetón a quien pidió «solo avisos de mi pedido»
«Llega temprano» «Tu pedido #123 está listo. Recógelo hoy hasta las 8 pm» (utilidad, de su pedido real) «Ven hoy y llévate descuento» disfrazado como aviso de pedido
Reactivación Un solo mensaje a quien compró hace 40 días y aceptó ofertas, con baja visible Cinco recordatorios seguidos «¿dónde estás?»
Respuesta a «BAJA» Confirmar una vez y no volver a escribir «Lamentamos que te vayas, mira esta oferta especial»

Observa que el aviso «recoge tu pedido» no es marketing: es información sobre algo que el cliente pidió. Esa distinción importa para la categoría de la plantilla y para su costo, pero nunca la uses para colar una promoción.

10.Medir la respuesta

Marketing sin medición es adivinar. Con pocos datos tienes bastante:

Un buen hábito: antes de una campaña grande, pruébala con un grupo pequeño (20 clientes). Si el resultado es bueno, amplía; si hay bajas, corrige. En la lección 21 verás cómo calcular el costo de cada campaña y registrar estas métricas.

11.Errores frecuentes

12.Apuntes para llevar

13.Glosario

Término Significado
Opt-in Consentimiento explícito del cliente para recibir mensajes del negocio.
Opt-out / baja Solicitud del cliente de dejar de recibir mensajes; debe respetarse de inmediato.
Plantilla de marketing Plantilla aprobada de categoría promocional, enviable fuera de la ventana y cobrada por mensaje.
Calidad Puntuación que Meta asigna según la reacción de los clientes (lecturas, bloqueos, reportes).
Límite de mensajería Máximo de clientes distintos a los que puedes escribir fuera de la ventana en 24 h.
Segmentación Dividir a los clientes en grupos para enviar a cada uno lo que le interesa.
Función pura Función que depende solo de sus argumentos y no modifica nada fuera de ella.

🧠 Comprueba lo aprendido

Elige una respuesta en cada pregunta. Verás al instante si acertaste y por qué.

Un cliente compró tres veces en tu minimarket pero nunca aceptó recibir promociones. ¿Puedes enviarle la oferta semanal?

¿Cuál de estas opciones es una forma válida y registrable de conseguir opt-in?

Un cliente responde «STOP». ¿Qué debe hacer el bot?

¿Qué hace tu cuenta si muchos clientes reportan o bloquean tus mensajes?

¿Por qué conviene dividir una campaña en tandas diarias?

📚 Para profundizar (fuentes oficiales)

Este material lo hace un estudiante con ayuda de IA: ante cualquier duda, manda la documentación oficial.

Tu progreso se guarda en este navegador y se refleja en el índice del curso.

💡 🚀 ¡Ahora te toca!

La práctica fija lo aprendido. Pasa al ejercicio de esta lección.

Ir al ejercicio