Ir al contenido

Meta Conversions API — atribución ROAS

Si inviertes en anuncios de Meta que llevan a conversación (Click-to-WhatsApp, Click-to-Instagram, Click-to-Messenger), quieres saber qué ad generó qué venta. Brote cierra el loop completo: detecta el ad de entrada, guarda la atribución en el contacto, y cuando ese contacto paga envía un evento Purchase a tu Pixel via Conversions API.

1) Cliente ve tu ad Meta → click "Send Message" / "Enviar mensaje"
└─ Meta agrega el click id en el primer msg del canal
(ctwa_clid en WhatsApp; el equivalente en Instagram / Messenger)
2) Brote recibe el msg por el canal oficial de Meta
└─ extrae el click id del ad + sourceId + título
└─ guarda en contact.metadata.attribution (first-touch)
3) Cliente conversa con tu agente IA → recibe link MP/Flow/Khipu
4) Cliente paga → webhook de la pasarela aprueba el pago
└─ Brote dispara sendConversionForContact()
└─ POST a https://graph.facebook.com/v18.0/{pixel_id}/events
body: { event_name: "Purchase", user_data: { ph: sha256(phone),
ctwa_clid }, custom_data: { value, currency } }
5) Meta matchea el ctwa_clid con el click original y atribuye la
conversión al ad correcto en tu Events Manager.
  1. Ve a Events Manager.
  2. Elige tu Pixel (o crea uno si no tienes).
  3. Pixel ID aparece en la card del pixel (15-16 dígitos).
  4. Configuración → Conversions API → Generar token de acceso. Copialo YA — se muestra una sola vez. Si lo pierdes, generas uno nuevo y revocas el viejo.

Durante el setup, quieres validar que los eventos llegan sin contar como conversiones reales:

  1. En Events Manager → Test Events → genera código tipo TEST12345.
  2. Pegalo en Brote cuando conectes. Los eventos van a aparecer en “Test Events” y no contar en tus reports de ROAS.
  3. Una vez validado, saca el code y los eventos empiezan a contar como conversiones reales.
  1. Settings → Integraciones → Pagos → baja hasta “Meta Conversions API”.
  2. Pega Pixel ID + Access Token + Test Code (opcional).
  3. Click Conectar Meta. Brote hace un ping con un evento Lead para validar que las credenciales funcionan.
EventoCuándoCustom data
PurchaseCuando MP / Flow / Khipu aprueba el pagovalue (CLP), currency, content_name
Lead (futuro)Cuando lifecycle pasa a mql o sql
InitiateCheckout (futuro)Cuando agente manda link de pagovalue, currency

Por ahora solo Purchase está activo automático. El resto los activamos cuando midamos volumen de uso.

Cada evento enviado queda registrado en la tabla meta_conversion_events con:

  • status: sent | failed
  • error_detail si falló
  • payload con custom_data
  • fbtrace_id que Meta asigna (útil para correlacionar con tu Events Manager)

Para ver el log de los últimos eventos, puedes correr una query en Supabase Studio:

select event_name, status, event_value, ctwa_clid, error_detail, sent_at
from public.meta_conversion_events
where organization_id = '<tu_org_id>'
order by sent_at desc
limit 20;

En Events Manager → Test Events vas a ver los eventos llegando casi en tiempo real (10-30 seg de delay).

En la conversación de cualquier contacto que vino por un Meta Ad, el panel lateral muestra un badge azul ”🎯 Vino por Meta Ad” con:

  • Título del ad (si Meta lo mandó)
  • Fecha de captura

Útil para que los humanos del equipo sepan que ese cliente costó plata de Ads y priorizar la respuesta.

  • Meta Conversions API es gratis — no cobran por evento.
  • Rate limit: 200 events/second por Pixel ID (más que suficiente para PYMEs LATAM).
  • Brote trackea events_sent_this_month en meta_integrations para visibilidad (no es cap, solo info).
PlataformaMeta CAPI integrado
Brote✅ click id (WhatsApp/IG/Messenger) + Purchase auto desde MP/Flow/Khipu
respond.io✅ “Send Conversions API Event” step (manual en workflow)
Wati🟡 Solo Pixel client-side (no CAPI server)
SleekFlow

Brote y respond.io son hoy las únicas con CAPI server-side en LATAM-relevant. Diff: respond.io requiere configurar el evento por workflow; Brote lo dispara automático cuando hay pago, sin que toques nada después de conectar.

Etapas del ciclo (Lead/MQL)

Próximamente: eventos automáticos al cambiar lifecycle