11 — WhatsApp Business API + Números + Calentamiento
Índice de la página
- 01Cliente: Martín Rieznik / LevantArte
- Área: Stack de WhatsApp (provider + número + templates + calentamiento)
- 020. Definición de "done" para esta checklist
- 031. Pre-requisitos
- 042. Tareas
- 2.1 Comparativa de providers (BLOQUEANTE)
- 2.2 Cuenta WhatsApp Business API + verificación Meta
- 2.3 Compra del número
- 2.4 Números — mínimo 2 (principal + backup)
- 2.4b CRM de atención al cliente humana (separado del bot)
- 2.5 Plantillas de mensajes (templates aprobados por Meta)
- 2.6 Calentamiento gradual del número
- 2.7 Webhook entrante a Railway worker
- 2.8 Política de opt-out + cumplimiento
- 2.9 Costos por mensaje + monitoreo
- 2.10 Identidad visual del perfil WA Business
- 2.11 Documentación
- 053. Variables y posibilidades a anticipar
- 064. Multi-tenant: cómo se replica al cliente #2
- 075. Recursos y archivos relacionados
- 086. Notas y aprendizajes (post-mortem)
- 09CHANGELOG
Cliente: Martín Rieznik / LevantArte
Área: Stack de WhatsApp (provider + número + templates + calentamiento)
CHECKLIST FUNDACIONAL — bloquea estrictamente 10 (bot 1:1) y 12 (grupos WA). Decidir provider de WhatsApp Business API, contratar mínimo 2 números (1 principal + 1 backup), aprobar plantillas de mensajes con Meta, calentar el número primario gradualmente para evitar ban, dejar webhook conectado a Railway, e instalar CRM de atención al cliente humana sobre el mismo número (clarificado 2026-05-05: prioridad WA = números primero → bot 1:1 + CRM atención humana después). Sin esto, ni el bot ni los grupos ni el CRM funcionan.
Última actualización: 2026-05-05
Responsable principal (R): Eric
Aprobador (A): Jesús
Deadline: 24 may 2026 (calentamiento del 24 may al 7 jun = 14 días, suficiente para arrancar el 8 jun con número confiable)
Depende de: 01_INFRA_TECNICA.md (Railway worker para webhook)
Bloquea a: 10_BOT_WHATSAPP_1A1.md, 12_GRUPOS_WHATSAPP.md, 07_WEBINAR.md, 19_GO_LIVE_8_JUNIO.md
0. Definición de "done" para esta checklist
- Provider de WhatsApp Business API decidido y contratado, comparativa documentada.
- Cuenta WhatsApp Business API verificada con Meta Business + display name aprobado.
- Mínimo 2 números activos: 1 principal calentado + 1 backup parqueado. Plan de añadir 3er secundario si volumen lo justifica (> 5000 conversaciones/semana).
- CRM de atención al cliente humana decidido + integrado al mismo número WA (3 candidatos: Wati, Respond.io, Front).
- Mínimo 5 plantillas de mensajes aprobadas por Meta (recordatorio pre-webinar, post-compra, etc.).
- Calentamiento gradual ejecutado durante 14 días (días 1-7 conversaciones bajas, semana 2 escalado), métricas registradas.
- Webhook entrante apuntando a Railway worker, recibe mensajes correctamente.
- Política de opt-out documentada y operativa.
- Documento de costos por mensaje (template vs sesión) en
_CONFIG.md > whatsapp.
1. Pre-requisitos
| # | Pre-requisito | Provisto por | Estado |
|---|---|---|---|
| 1 | Meta Business Manager de TooAudience activo | Jesús | ✅ asumido |
| 2 | Tarjeta de crédito para pagar provider | Jesús | ✅ |
| 3 | Railway worker para webhook entrante | Eric (checklist 01) | ⚠️ |
| 4 | Decisión de país del número (AR vs US vs paraguas) | Jesús | ⚠️ |
| 5 | Brand name "LevantArte" disponible en Meta para display | Jesús | ⚠️ verificar |
| 6 | Logo + descripción + URL de LevantArte para perfil de WA Business | Martín | ⚠️ |
2. Tareas
2.1 Comparativa de providers (BLOQUEANTE)
- Tabla comparativa de 5 providers con pros/contras/costos. R: Eric + Cortex. Done cuando: tabla en
_CONFIG.md > whatsapp_provider_comparison.
| Provider | Pros | Contras | Costo aprox |
|---|---|---|---|
| WhatsApp Cloud API (oficial Meta) | Sin intermediarios, costo más bajo (paga solo a Meta), rate limits altos, soporte directo Meta. Mejor para escala multi-tenant. | Setup más técnico (Eric tiene que armar webhook + media handling). Sin features de UI. | $0.005-$0.075 por conversación (varía por país, AR ~$0.04). Sin fee del provider. Más barato a escala. |
| Twilio WhatsApp API | Stack maduro, SDK Node/Python, docs excelentes, dashboard, fácil multi-tenant via subaccounts. | Markup de Twilio sobre Meta (suele ser 2x). Algunos features tarde vs Cloud API. | $0.005 markup + costo Meta. ~$0.08-0.10/msg AR. |
| 360dialog | BSP focado en LATAM, soporte español, calentamiento incluido en onboarding, buena UX para gestión de plantillas. | Markup notable. Dependencia de un BSP intermedio. Setup demora días por verificación. | ~€49/mes base + €0.05-0.10/msg. |
| Wati | Inbox UI lista para closers humanos (handoff fácil), bots no-code (no nos sirve, ya tenemos bot propio). | Caro a escala, UI lock-in. Multi-tenant no nativo. | ~$49-99/mes/número + costos por msg. |
| MessageBird | Plataforma enterprise omnichannel (WA + SMS + email), buena para multi-tenant. | Overkill para nuestro caso, costoso, contratos enterprise. | Custom pricing, generalmente caro. |
- DECISIÓN ASUMIDA RECOMENDADA: WhatsApp Cloud API (oficial Meta). Razones: (a) escala multi-tenant futura sin markups, (b) Eric tiene capacidad de armar el webhook, (c) costo 30-50% menor a Twilio a volumen, (d) sin lock-in con BSP. Backup mental: si Eric encuentra blocker técnico, switch a Twilio se hace en < 1 día (mismo modelo de templates, solo cambia el SDK). R: Jesús + Eric. Done cuando: decisión firmada en
_CONFIG.md > whatsapp_provider. - Validar que el provider elegido soporta: webhooks entrantes, media (audio/imagen), templates, opt-out, billing detallado por conversación. R: Eric. Done cuando: checklist de features OK.
2.2 Cuenta WhatsApp Business API + verificación Meta
- Crear/verificar Meta Business Manager de TooAudience. R: Jesús. Done cuando: BM verificado con domain + tax info.
- Crear WhatsApp Business Account (WABA) dentro del BM. R: Eric + Jesús. Done cuando: WABA creada + visible en BM.
- Verificación del business con documentos legales (CUIT TooAudience + recibo de servicios + URL del sitio). R: Jesús. Done cuando: status "Verified" en Meta Business.
- Display name "LevantArte" solicitado a Meta. NOTE: Meta tarda 1-3 días en aprobar y a veces rechaza si el nombre no coincide con marca pública verificable. R: Eric. Done cuando: display name aprobado o alternativa elegida ("LevantArte by Martín" / "Martín Rieznik").
- Foto de perfil + descripción + email + URL del perfil WA Business. R: Cortex (assets) + Eric (carga). Done cuando: perfil completo visible en WA.
2.3 Compra del número
- Decisión de país del número: R: Jesús + Eric. Done cuando: decidido + documentado.
- Opción A — AR (+54 9 11 …): pros: cercanía con audiencia, mayoría argentina; contras: costo por mensaje más alto en AR (~$0.04 conversación), DNI argentino necesario para portar/comprar.
- Opción B — US (+1 …): pros: costos más bajos, fácil aprovisionar via Twilio/Cloud API; contras: leads pueden ver "número de USA" raro, posible desconfianza.
- Opción C — Paraguas internacional / virtual (+44 / +52): pros: anonimato del país, fácil aprovisionar; contras: la audiencia argentina puede sospechar.
- Recomendación asumida: AR (+54) por trust del avatar argentino. Si no hay DNI disponible, fallback a US.
- Provisionar número vía Cloud API (link a un número físico/SIM) o vía Twilio (compra digital). R: Eric. Done cuando: número activo en WABA + recibe SMS de verificación.
- Asociar número con WABA: pasar OTP, asignar PIN, configurar 2FA. R: Eric. Done cuando: número asociado.
- Test de envío inicial: mandar mensaje desde el número a un personal de prueba. R: Eric. Done cuando: mensaje recibido OK.
2.4 Números — mínimo 2 (principal + backup)
- Provisionar número PRINCIPAL + arrancar calentamiento (ver § 2.6). R: Eric. Done cuando: número activo + tier sube a GREEN en 14 días.
- Provisionar número de RESPALDO del mismo país. NO calentar agresivo. Mantener "lazy warmup" con 2-5 mensajes/semana a contactos de prueba. R: Eric. Done cuando: número activo en WABA + parqueado + tier mantenido.
- Documentar protocolo de failover: si número primario es baneado/limitado, en X minutos se cambia config + bot empieza a operar con número 2. R: Eric. Done cuando: runbook
failover_wa_number.mdlisto. - Política de 3er número: agregar secundario activo si volumen sostenido > 5000 conversaciones/semana, o si el principal entra repetidamente en YELLOW. R: Eric. Done cuando: política decidida + documentada.
2.4b CRM de atención al cliente humana (separado del bot)
Clarificación 2026-05-05: hay 3 vías de atención que comparten el mismo número WA:
- Bot 1:1 (responde automático con LLM) — checklist 10
- CRM atención al cliente humana (humano del equipo TooAudience responde personalmente desde inbox bonito, NO es handoff de cierre) — esta sección
- Closer humano (handoff de venta) — checklist 15El CRM es para soporte/atención (ej: "no llegó mi acceso", "tengo un problema con el pago", "puedo cambiar la fecha"). Es ortogonal al closer.
- Decidir CRM de atención al cliente entre 3 opciones. R: Eric + Jesús. Done cuando: decisión firmada en
_CONFIG.md > crm_atencion. - Opción 1 — Wati: pros: inbox UI lista, multi-agent, snippets, tagging, reportes; integra Meta Cloud API + Twilio. Contras: pricing por número de agente; lock-in suave; nicho LATAM medio.
- Opción 2 — Respond.io: pros: omnichannel (WA + IG + email + SMS), workflow builder, AI assist; multi-tenant amigable. Contras: caro a escala, curva más empinada.
- Opción 3 — Front: pros: experiencia "email pero para WA", colaboración tipo Slack, asignación clara, reportes maduros. Contras: caro, más enterprise; integración WA via partner.
- Recomendación inicial: probar Respond.io o Wati en piloto (free trial) → decidir mes 2.
- Integrar CRM al mismo número WA (no número paralelo). El CRM lee/escribe sobre el mismo
phone_number_idque el bot 1:1. Política de turnos: si el bot entrega al CRM atención, el bot SE SILENCIA en esa conversación; cuando humano cierra ticket, bot puede retomar. R: Eric. Done cuando: integración probada con un caso real. - Workflow de atención humana paralelo al bot: definir intents que disparan handoff al CRM (no al closer): "no llegó mi acceso", "problema técnico", "quiero refund/devolución", "preguntas sobre cuenta/factura", "actualización de datos", "queja". R: Cortex. Done cuando: lista en
recursos/handoff_crm_atencion.md. - Routing de tres vías desde el bot 1:1: cada turno el bot evalúa: ¿responde el bot? ¿manda al CRM atención? ¿manda al closer? Documentar en
recursos/routing_3_vias.md. R: Cortex + Eric. Done cuando: lógica clarificada en sistema. - Asignar humanos al CRM atención: definir quién atiende soporte (rol distinto del closer — puede ser TooAudience interno, Cortex como first-line, escalation a Jesús). R: Jesús. Done cuando: 1 persona principal asignada + horarios + SLA documentados.
- SLA de atención al cliente: respuesta humana ≤ 2 hrs en horario activo, ≤ 8 hrs fuera. Bot mantiene la conversación con respuestas pre-aprobadas mientras tanto. R: Jesús + Eric. Done cuando: SLA documentado + alertas activas.
- Reportes del CRM: tickets abiertos/cerrados, CSAT post-atención, tiempo medio de resolución, top issues. Semanal a grupo interno. R: Cortex. Done cuando: report semanal sábado AM.
2.5 Plantillas de mensajes (templates aprobados por Meta)
Meta requiere que mensajes "outbound iniciados por business" usen templates pre-aprobados. Mensajes dentro de "ventana de servicio" (24hs después de que el lead escribió) son libres.
-
Catálogo de templates a crear (mínimo 5): R: Cortex. Done cuando: lista en
R/WhatsApp/templates_catalogo.md.
| Template ID | Categoría Meta | Propósito | Variables | Estado aprob. |
|-------------|----------------|-----------|-----------|---------------|
|recordatorio_webinar_lunes| UTILITY | Mandar lunes 14:00 a registrados |{{1}}=nombre,{{2}}=hora,{{3}}=link| ⚠️ pending |
|link_webinar_pre_show| UTILITY | Mandar lunes 19:30 con link al webinar |{{1}}=nombre,{{2}}=link| ⚠️ |
|pitch_taller_post_webinar| MARKETING | Mandar lunes 21:30 con link al/martin/taller|{{1}}=nombre,{{2}}=precio_actual,{{3}}=link,{{4}}=hora_corte| ⚠️ |
|confirmacion_compra_taller| UTILITY | Post-pago |{{1}}=nombre,{{2}}=sku,{{3}}=link_grupo| ⚠️ |
|recordatorio_clase_taller| UTILITY | Mié/jue/vie 19:30 a compradores |{{1}}=nombre,{{2}}=clase_n,{{3}}=link| ⚠️ |
|replay_disponible| MARKETING | Martes a registrados que no asistieron |{{1}}=nombre,{{2}}=link_replay| ⚠️ |
|apertura_membresia_jueves| MARKETING | Jueves 21:00 a compradores taller |{{1}}=nombre,{{2}}=precio,{{3}}=link| ⚠️ |
|ultima_chance_viernes| MARKETING | Viernes 22:00 cierre ventana |{{1}}=nombre,{{2}}=link,{{3}}=hora_cierre| ⚠️ | -
Crear templates en Meta WA Manager con texto + variables + categoría correcta. R: Eric. Done cuando: 8 templates submitted.
- Esperar aprobación Meta (24-72h típicas). R: Meta. Done cuando: ≥ 5 templates con status "Approved" (mínimo viable para launch).
- Re-trabajar templates rechazados: causas comunes: (a) categoría errónea (UTILITY vs MARKETING), (b) urls de tracking no permitidas en MARKETING fuera de ventana 24h, (c) lenguaje promocional excesivo en UTILITY. R: Cortex (rewrite) + Eric (resubmit). Done cuando: 8/8 aprobados.
- Versionar templates en Git (
templates/wa/*.json). R: Eric. Done cuando: archivos en repo. - Tabla de costos por template (Meta cobra distinto por categoría + país): R: Eric. Done cuando: tabla en
_CONFIG.md > whatsapp_costs. - UTILITY conversation AR: ~$0.0224
- MARKETING conversation AR: ~$0.0379
- SERVICE conversation AR: $0 (lead inicia)
- AUTHENTICATION AR: ~$0.0150
2.6 Calentamiento gradual del número
Meta penaliza números nuevos que envían mucho de golpe. Curva recomendada para evitar rate limit / ban.
- Día 0 (24 may, prov del número): cero envíos masivos. Solo 5-10 mensajes manuales con cuentas conocidas (Eric, Jesús, Cortex test, Martín). R: Eric. Done cuando: respuestas recibidas (tier de calidad sube).
- Días 1-3 (25-27 may): 20-50 conversaciones reales/día. Mensajes 1:1 con leads de prueba (cuentas amigas). Buscar respuestas (engagement positivo). R: Eric + Cortex. Done cuando: rate sostenido sin warnings de Meta.
- Días 4-7 (28-31 may): 100-250 conversaciones/día. Empezar a integrar bot 1:1 con leads orgánicos del scraping de IG (con consentimiento). R: Eric. Done cuando: tier de calidad "GREEN".
- Días 8-14 (1-7 jun): 500-1000 conversaciones/día. Empezar a usar templates aprobados con leads que ya optaron in. R: Eric. Done cuando: tier "GREEN" sostenido + 0 spam reports significativos.
- Día 15 (8 jun) — LAUNCH: volumen pleno con ~1500-3000 conversaciones del primer webinar. R: Todos. Done cuando: webinar live + WA respondiendo sin throttling.
- Métricas a registrar diariamente durante calentamiento: R: Eric. Done cuando: dashboard
wa_warmup_dashboardcon tabla. - Mensajes enviados / recibidos
- Tier de calidad Meta (GREEN / YELLOW / RED)
- Spam reports
- Tasa de respuesta (% de outbound que reciben reply)
- Latencia de envío (ms)
- Política anti-ban: NUNCA enviar a números no opted-in. NUNCA enviar idéntico copy a > 100 personas (variar templates/variables). RESPETAR opt-outs inmediatamente. R: Eric + Cortex. Done cuando: política en
_CONFIG.md > wa_compliance.
2.7 Webhook entrante a Railway worker
- Endpoint en Railway worker
/wa/webhookque recibe POST de Meta/Twilio. R: Eric. Done cuando: endpoint deployado + verificable con curl. - Verificación del webhook con Meta: token de challenge GET. R: Eric. Done cuando: Meta marca webhook como "Verified".
- Subscribir a eventos necesarios:
messages,message_status(delivered/read/failed),account_update. R: Eric. Done cuando: subscriptions activas. - Validación de signature (HMAC) en cada webhook recibido (anti-spoofing). R: Eric. Done cuando: requests sin signature válida son rechazados con 403.
- Procesamiento idempotente (si Meta reenvía un msg, no duplicar). Usar
wa_message_id. R: Eric. Done cuando: test de duplicado pasa. - Persistencia inmediata en
mensajes_wa(incluso antes de procesar lógica del bot). R: Eric. Done cuando: mensaje queda guardado < 100ms. - Throughput target ≥ 50 msg/seg sostenido. R: Eric. Done cuando: load test pasa.
- Alertas si webhook devuelve > 1% errores en 5 min. R: Eric. Done cuando: alerta configurada.
2.8 Política de opt-out + cumplimiento
- Palabras opt-out: "STOP", "BAJA", "BORRAME", "NO MAS", "UNSUBSCRIBE". R: Cortex. Done cuando: lista en config.
- Acción al detectar opt-out: bot responde "Listo, no te escribo más. Si querés volver, mandame START." + marca lead
opted_out=true+ remueve de grupos. R: Eric + Cortex. Done cuando: flow probado. - NO mandar templates marketing a leads opted_out (filtro pre-envío). R: Eric. Done cuando: regla aplicada en sender.
- Re-opt-in con "START": lead manda "START" → bot responde + marca
opted_out=false. R: Eric. Done cuando: flow probado. - Footer de opt-out en templates marketing: "Para no recibir más, escribí STOP". R: Cortex. Done cuando: incluido en templates.
- Compliance RGPD-ish: política de privacidad publicada en sales pages + endpoint admin para borrar lead a pedido. R: Cortex (texto) + Eric (impl). Done cuando: ambos listos.
- Logging de opt-outs auditable. R: Eric. Done cuando: tabla
opt_out_logcon timestamp + razón.
2.9 Costos por mensaje + monitoreo
- Tabla de costos AR por categoría (UTILITY/MARKETING/AUTH/SERVICE) cargada en
_CONFIG.md > whatsapp_costs. R: Eric. Done cuando: tabla actualizada. - Estimación de gasto mensual del piloto: 4 webinars × 1500 leads × 8 mensajes promedio = 48k mensajes/mes × $0.03 promedio = ~$1440/mes. R: Eric. Done cuando: estimación documentada + reportada a Jesús (entra en gastos compartidos 50/50).
- Alerta de gasto si supera $X/día (umbral configurable, default $100/día). R: Eric. Done cuando: alerta a Slack/WA del equipo.
- Reporte mensual de costos WA parte del balance 50/50 con Martín. R: Eric + Jesús. Done cuando: tabla en reporte.
2.10 Identidad visual del perfil WA Business
- Foto de perfil: logo LevantArte 640x640 PNG. R: Cortex. Done cuando: foto cargada.
- Nombre de display: "LevantArte" (o aprobado). R: Eric. Done cuando: visible.
- Descripción (139 chars max): "La Ciencia de la Seducción. Webinars en vivo lunes 20hs ARG. Hablá con nosotros para reservar tu lugar." R: Cortex. Done cuando: cargada.
- Email + URL: contacto@levantarte.com (o equivalente) + https://deacademia.com/martin/. R: Cortex + Eric. Done cuando: cargados.
- Categoría de business: "Education" o "Coach". R: Eric. Done cuando: seleccionada.
- Horarios de atención: Lun-Vie 9-21 ARG. R: Cortex. Done cuando: cargado.
2.11 Documentación
- Runbook
wa_operations.mdcon: cómo agregar template, cómo bumpear tier, cómo manejar warning de Meta, cómo failover a número 2. R: Eric. Done cuando: runbook en repo. - Diagrama de arquitectura WA → Cloud API → Webhook → Railway → Bot → Supabase. R: Eric. Done cuando: diagrama en
docs/wa_architecture.md. - Cheat sheet para Cortex sobre cómo se redactan templates aprobables (lenguaje neutro, variables permitidas, no spammy). R: Cortex. Done cuando: doc.
3. Variables y posibilidades a anticipar
| Escenario | Plan B |
|---|---|
| Meta rechaza display name "LevantArte" | Probar variantes: "LevantArte by Martín Rieznik", "Martín Rieznik". Si todas rechazadas, usar "TooAudience" + comunicar al lead "te escribimos desde TooAudience, partner de LevantArte". |
| Meta tarda > 5 días en verificar el business | Backup BSP via 360dialog (más rápido en LATAM por verificación local). Asumir 2 semanas en peor caso. |
| Provider Cloud API tiene blocker técnico inesperado | Switch a Twilio en < 1 día. Mismo modelo de templates. Markup vale por escapar del blocker. |
| Meta rechaza > 50% de templates | Re-escribir con lenguaje más neutral (tono UTILITY incluso para algunos MARKETING). Categorizar todo como UTILITY donde se pueda. Usar SERVICE conversations (lead inicia) cuando posible. |
| Calentamiento muestra tier YELLOW/RED día 7 | Pausar envíos masivos 48h. Solo conversaciones manuales con engagement alto. Re-escalar más lento (multiplicar por 1.5x en vez de 2x). |
| Número primario baneado en plena semana de webinar | Failover en < 30 min: cambiar config WABA al número 2, reenviar último template aprobado a leads activos comunicando "nuevo número, agendá", el bot 1:1 sigue desde número 2. Pérdida estimada: 2-4 horas + algunos leads que no actualizan contacto. |
| Spam reports > 5% en primera semana | Auditar copies (Cortex). Reducir frecuencia de envío. Agregar más variabilidad. Re-leer compliance. Si persiste, parar y rehacer estrategia. |
| Costos WA superan $100/día estimado | Reducir frecuencia de templates marketing (priorizar UTILITY que es 40% más barato). Usar más SERVICE conversations (free). Negociar volumen con Meta (no realista en piloto). |
| WhatsApp Cloud API down (rare pero pasa) | Status page de Meta + comunicar a leads via IG/Email mientras dura. SLA de Meta: 99.9%. |
| Webhook de Railway recibe burst (1000/seg) en pico de webinar | Auto-scaling Railway + queue (BullMQ/Redis). Backpressure controlado. |
| Templates expiran sin renovar (Meta limpia inactivos) | Cron mensual: re-validar templates en uso. Re-submit si caen. |
| Lead reporta nuestro número como spam a Meta | Detectar via webhook account_update evento "quality drop". Pausar envíos a ese segmento + auditar. |
| Número de respaldo no se calienta | Calentar de modo "lazy": aunque parqueado, mandar 2-5 mensajes/semana a contactos de prueba para mantener tier. |
| Leads escriben fuera de ventana 24h y bot quiere responder con marketing | Bot detecta ventana cerrada → manda template UTILITY pre-aprobado ("hola {{1}}, vi tu mensaje, contame en qué te ayudo") → reabre ventana de servicio. |
| Cliente nuevo (multi-tenant) requiere número AR pero no tiene DNI | Provisionar via Twilio AR (no requiere DNI físico, business verification suficiente). |
| Costos por país varían (cliente expande a México/España) | Tabla de costos por país en _CONFIG.md. Estimación pre-launch por cliente nuevo. |
4. Multi-tenant: cómo se replica al cliente #2
Qué hay que parametrizar para que esto sea reusable. Esta sección alimenta el SOP
sop/lanzar-cliente/.
- Variables a externalizar (en
clients.config_json > whatsapp): whatsapp.provider(cloud_api|twilio|360dialog)whatsapp.waba_id(WhatsApp Business Account ID)whatsapp.phone_number_id(ID de Meta del número)whatsapp.phone_number_display(E.164 ej +5491178954321)whatsapp.backup_phone_number_idwhatsapp.display_name,whatsapp.profile_url,whatsapp.profile_pic_url,whatsapp.profile_email,whatsapp.profile_descriptionwhatsapp.templates[](array de{ template_id, name, category, language, variables[] })whatsapp.opt_out_keywords[],whatsapp.opt_in_keywords[]whatsapp.cost_per_msg.{country, utility, marketing, service, auth}whatsapp.warmup_status(cold|warming|warm|hot)whatsapp.daily_volume_targetwhatsapp.alert_thresholds.{spend_per_day, spam_rate_pct, latency_ms}- Tabla
wa_numbersen Supabase ya documentada en checklist 10 (1 número → 1 cliente). - Templates a guardar en
sop/lanzar-cliente/templates/whatsapp/: provider_decision_matrix.md(la comparativa de § 2.1)templates_catalogo.md.template(los 8 templates universales con placeholders)meta_business_verification_checklist.mdwarmup_curve_14_dias.md(curva escalonada de calentamiento)opt_out_compliance.md(política base)failover_runbook.md(cómo cambiar a número de respaldo)wa_architecture_diagram.md- Sustituciones automáticas (
clone_client.py): - Provisionar nuevo WABA + número en Cloud API (semi-automatizado, requiere confirmación humana por verificación Meta)
- Submit los 8 templates universales con nombre/marca del cliente nuevo (vía Cloud API REST)
- Inicializar
whatsapp.warmup_status='cold'+ cron de calentamiento - Generar
failover_runbook.mdcon números del cliente - Asociar
wa_numbersrow conclient_iddel cliente nuevo - Lo que NO se replica (cliente-específico): número físico (cada cliente tiene el suyo), display_name (marca propia), profile assets (logo/foto), curva de calentamiento real (cada cliente arranca de cold).
- Riesgo crítico multi-tenant: si un cliente del paraguas TooAudience tiene tier RED por mal uso, NO afecta directo a otros clientes (cada WABA es independiente), pero Meta puede revisar el BM completo. Política: si un cliente entra en RED, suspender sus envíos hasta resolver. Documentar como kill-switch.
5. Recursos y archivos relacionados
10_BOT_WHATSAPP_1A1.md— Bot consume el número WA + templates.12_GRUPOS_WHATSAPP.md— Grupos viven en el mismo número WA.01_INFRA_TECNICA.md— Railway worker + Supabase tablas.07_WEBINAR.md— Templates de recordatorio + post-CTA.13_PIXEL_TRACKING.md— Eventos de WA disparan CAPI.../02_PLAN_INTERNO_EQUIPO.md— Plan macro § 1.5 + § 12 riesgo "Bot WhatsApp rate-limited" mitigación.- WhatsApp Cloud API docs: https://developers.facebook.com/docs/whatsapp/cloud-api
- Twilio WhatsApp docs: https://www.twilio.com/docs/whatsapp
- 360dialog docs: https://docs.360dialog.com/
- Best practices Meta: https://developers.facebook.com/docs/whatsapp/messaging-limits
6. Notas y aprendizajes (post-mortem)
Llenar después del primer ciclo. Estos aprendizajes son los que se llevan al SOP.
- Vacío hasta primera ejecución (calentamiento del 24 may al 7 jun + go-live 8 jun).
CHANGELOG
- 2026-05-05 — JT/Cortex — Creación inicial. Comparativa 5 providers, decisión Cloud API, calentamiento 14 días, 8 templates iniciales, opt-out, costos AR.
- 2026-05-05 — JT — Refuerzo de prioridad: NÚMEROS PRIMERO, después bot + CRM. Sumada § 2.4b — CRM de atención al cliente humana (Wati/Respond.io/Front) integrado al mismo número WA, distinto del bot y del closer. Routing de 3 vías documentado.