Zymplo · CRM · Auditoría en vivo

Conectar redes sociales al CRM — estado real, medido hoy

Meta, Instagram, Facebook, TikTok y WhatsApp → captura de leads → aviso al dueño MEI → Oracle. Todo lo de abajo se volvió a medir en este turno (crm-api, bot openclaw, Postgres, GitHub, 360dialog) — nada es de memoria vieja.
medido 2026-07-27 · 20:04–20:20Z crm-api.zymplo.com · 200 OK · redeploy hace 46 min bot openclaw · zymplo-agents-prod · healthy · redeploy hace 5h 0 leads nuevos en 6 semanas
7
piezas construidas y verificadas vivas
6
gaps confirmados que frenan el pipeline
1 / ?
MEIs con canal social mapeado (empresa 8 solamente)
06-15
fecha del último lead capturado (2026)

Cómo viaja hoy un lead

tramo vivo en verde · tramo apagado en gris
📱 Anuncio CTWA (Meta/TikTok)
clic → abre WhatsApp
360dialog / WABA
adjunta referral + ctwa_clid
Bot openclaw
parsea referral, llama al CRM
crm-api /v2/lead-intake
crea lead en Postgres
Aviso WhatsApp al dueño
token de auth ausente → no sale
Aviso a Meta (CAPI)
no existe todavía

Qué funciona vs. qué falta

✅ Construido y comprobado en vivo
  • Captura CTWA por WhatsAppreferral + ctwa_clid se parsean y crean el leadPOST /v2/lead-intake/from-ad → 401 gated, montado
  • OAuth-por-red (Meta FB/IG)PR #2373 vivo en prod, antes no existía esta rutaGET /api/v2/social-connections/meta/status → 401
  • Campañas y atribucióndejó de ser stub 501GET /api/v2/campaigns → 401 (antes 501)
  • Llave interna crm-api ↔ botcambio real desde el 26-jul: pasó de "sin configurar" a "configurada"INTERNAL_SERVICE_KEY seteada en ambos lados
  • Plantilla WhatsApp de avisonovo_lead_rede_v1 aprobada por Metaes / pt_BR / en → status: approved
  • Resolver canal → MEIya no es un stub que devuelve nullempresa_channel_map · Prisma real
  • 5 PRs de esta pieza, todos mergeados#2372 #2373 #2374 #2375 #2411 #2412 #2415gh pr list → MERGED
🔴 Confirmado roto o ausente hoy
  • 🔴
    Aviso al dueño no saleal bot le falta el token que valida el pedido de crm-apiLEAD_NOTIFY_SERVICE_TOKEN ausente en el bot
  • 🔴
    DM directo IG/FB y TikTok Lead Adslos webhooks nativos no están montadosGET /webhooks/meta/whatsapp → 404 · faltan 3 secretos
  • 🔴
    Meta nunca se entera del negocio realel ctwa_clid se guarda pero nunca se le devuelve a Meta0 llamadas a graph.facebook.com/.../events
  • 🔴
    Botón del celular no habla con el backend nuevoconexoes.tsx sigue mandando solo un link de WhatsApp0 referencias a /api/v2/social-connections en mobile
  • 🔴
    No hay a qué número avisarel handler que busca el teléfono del dueño aún no corrió en Oraclecódigo sigue marcado "TODO DBA" pese al script del 22-jul
  • 🔴
    Solo 1 MEI mapeadocualquier otro dueño con tráfico de redes hoy no se pierde, pero tampoco se capturaempresa_channel_map = 1 fila (empresa 8)

Los 2 riesgos que más importan

El código está listo pero nadie lo está usando
Impacto alto
6 semanas sin un lead nuevo. No es un bug — es que no hay ningún anuncio CTWA corriendo y solo 1 de todos los MEIs tiene su número mapeado. Perfeccionar el código no sirve de nada si esto no se prende.
La plantilla de aviso salió como "Marketing", no "Utilidad"
Impacto medio
Meta aprobó novo_lead_rede_v1 en categoría MARKETING. Los mensajes de marketing tienen reglas de entrega más estrictas (ventanas de envío, opt-in) que los de utilidad — el aviso al dueño podría no entregarse siempre, aunque todo el resto del cableado funcione.

Paso a paso para dejarlo espectacular

orden real de ejecución · por dueño
códigoClaude / Cowork AI — lo hago yo, PR a develop
1
Cablear el aviso al dueño en la vía normal de leadshoy /v2/leads/capture usa un notificador vacío; solo la vía de anuncios tiene el real — igualarlas
chico
2
Construir el aviso de vuelta a Meta (CAPI)guardar el ctwa_clid y mandarle a Meta cuando el lead se convierte en cliente real — así el anuncio deja de correr a ciegas
mediano
3
Conectar el botón del celular al backend realque "Conectar Meta / TikTok" en la app llame al módulo OAuth que ya existe, no solo abra WhatsApp
mediano
infraBot + crm-api — coordinar el mismo valor en los 2 lados
4
Generar y setear LEAD_NOTIFY_SERVICE_TOKENmismo valor en crm-api y en el bot openclaw — sin esto el aviso al dueño queda mudo aunque el código esté perfecto
chico
DBARolón — Oracle
5
Aplicar el handler owner-contact ya escritoel script SQL existe desde el 22-jul, falta que alguien con acceso al Oracle real lo corra
chico
externoCarlos — Meta / TikTok / 360dialog
6
Sacar los 3 secretos de Meta y TikTokMETA_WEBHOOK_VERIFY_TOKEN + META_APP_SECRET + TIKTOK_WEBHOOK_SECRET — habilita DM directo de Instagram/Facebook y Lead Ads nativos de TikTok
externo
7
Revisar la categoría del template con Metapedir que novo_lead_rede_v1 pase de MARKETING a UTILITY, o aceptar la restricción de opt-in
externo
8
Confirmar "Ads Attribution" ON en el Hub de 360dialogno se puede chequear por API — hay que entrar al panel
chico
9
Prender un anuncio CTWA realel paso que de verdad mueve el contador de leads de 2 a algo — todo lo anterior es solo la cañería
negocio
productoCarlos + Luz — decisión de modelo
10
Definir: ¿número WhatsApp propio por MEI, o compartido?define si empresa_channel_map se siembra solo (auto, 1:1) o hay que desambiguar a mano cada vez
decisión
11
Sembrar empresa_channel_map para el resto de los MEIshoy solo la empresa 8 existe — cualquier otro dueño no captura nada de redes todavía
operativo

Evidencia medida — no de memoria

comandos reales corridos hoy, 20:04–20:20Z
$ curl -s -o /dev/null -w "%{http_code}" https://crm-api.zymplo.com/health
200 → provider:oracle · uptime 2754s (redeploy ~46min antes)
$ curl -X POST https://crm-api.zymplo.com/v2/lead-intake/from-ad
401 → gated, montado (correcto)
$ curl https://crm-api.zymplo.com/webhooks/meta/whatsapp
404 → NO montado, confirma faltan META_* secrets
$ curl https://crm-api.zymplo.com/api/v2/social-connections/meta/status
401 → montado (nuevo desde 21-jul, antes no existía)
$ curl -H "x-internal-key: dummy" https://crm-api.zymplo.com/api/v2/plans/expiring
401 AUTH_FAILED → antes (26-jul) era 503 NOT_CONFIGURED: la llave YA se configuró
$ ssh openclaw · docker exec zymplo-agents-prod env | grep LEAD_NOTIFY_SERVICE_TOKEN
(vacío) → confirmado ausente, 0 matches sobre 185 env vars
$ psql → select * from empresa_channel_map; select count(*) from leads;
1 fila (empresa 8) · leads=2 · último 2026-06-15
$ 360dialog API → template novo_lead_rede_v1
approved × 3 idiomas · categoría: MARKETING
$ gh pr list --search "merged:>=2026-07-25" | grep -iE "crm|lead|meta|tiktok"
0 resultados → nada de este pipeline cambió en los últimos 2 días