Tutoriales 10 min de lectura

Cómo configurar Conversions API server-side para Meta Ads

Qué vas a lograr

Un setup donde las conversiones críticas (compras, leads, registros) se envían a Meta desde tu servidor, independientemente de si el usuario tiene iOS, ad blockers, o cookies rechazadas. Esto mejora el match rate de conversiones, la optimización de campañas Advantage+ y el ROAS real vs reportado.

Requisitos previos

  • Cuenta Meta Business Manager verificada con cuenta publicitaria activa
  • Meta Pixel instalado en tu sitio (CAPI complementa, no reemplaza al Pixel)
  • Servidor web con soporte de lenguaje backend: PHP, Node.js, Python o Ruby
  • Acceso a los datos de conversión en tu backend (ej. cuando se procesa un pedido)

Paso 1 — Crear Dataset y obtener Access Token

  1. Meta Business Manager → Events Manager
  2. Selecciona tu Pixel existente → Settings → Conversions API
  3. Genera Access Token: Generate Access Token (token permanente, no expira)
  4. Copia el Access Token y guárdalo como variable de entorno en tu servidor (nunca en el código)
  5. Copia también tu Pixel ID (Dataset ID) visible en Events Manager

Paso 2 — Configurar envío de eventos desde PHP

<?php
// Ejemplo: evento Purchase al completar pedido

$pixel_id = getenv('META_PIXEL_ID');
$access_token = getenv('META_ACCESS_TOKEN');

$data = [
  'data' => [[
    'event_name' => 'Purchase',
    'event_time' => time(),
    'action_source' => 'website',
    'event_id' => uniqid('purchase_'),  // Para deduplicacion con Pixel
    'user_data' => [
      'em' => hash('sha256', strtolower(trim($customer_email))),
      'ph' => hash('sha256', $customer_phone),
      'client_ip_address' => $_SERVER['REMOTE_ADDR'],
    ],
    'custom_data' => [
      'currency' => 'MXN',
      'value' => floatval($order_total),
      'order_id' => $order_id,
    ]
  ]]
];

$url = "https://graph.facebook.com/v19.0/{$pixel_id}/events?access_token={$access_token}";
// Enviar via curl o file_get_contents
?>

Paso 3 — Implementar deduplicación

  1. Cuando tanto el Pixel (browser) como CAPI (server) envían el mismo evento, Meta los deduplica si tienen el mismo event_id
  2. En el Pixel (via GTM o gtag.js): agrega eventID al disparo del evento: fbq con parametro eventID
  3. En CAPI: usa el mismo event_id en el campo event_id del envío al servidor
  4. El event_id debe ser único por evento pero idéntico entre el Pixel y CAPI para la misma conversión
  5. Verifica en Events Manager: los eventos deben mostrar "1 out of 2 matched" indicando deduplicación exitosa

Paso 4 — Configurar via GTM Server-Side (alternativa sin código)

  1. Si ya tienes GTM Server-Side configurado (ver tutorial configurar-server-side-tracking-ga4): agrega tag de Meta Conversions API en el server container
  2. Meta tiene template oficial en el GTM Server-Side Template Gallery
  3. Configura con tu Pixel ID y Access Token como variables de GTM
  4. Trigger: GA4 client events que quieras enviar también a Meta CAPI

Verificación y troubleshooting

  • Events Manager → Test Events: pega tu URL y realiza una conversión de prueba para verificar que el evento llega
  • Match rate bajo (menor al 70%): mejorar los user_data enviados. Incluir email, teléfono e IP mejora significativamente el match rate
  • Eventos duplicados sin deduplicación: verifica que event_id es idéntico entre Pixel y CAPI
  • Error 400 Invalid parameter: el email y teléfono deben estar hasheados con SHA-256 antes de enviar

Próximos pasos y optimización

  • Advanced Matching: incluye tantos campos de user_data como puedas (email, teléfono, nombre, ciudad, código postal) para maximizar el match rate
  • Custom Events: envía eventos custom como ViewContent y Lead además de Purchase para datos más ricos de optimización
  • Verification: Meta ofrece herramienta de verificación de CAPI en Events Manager para confirmar configuración correcta

En Weblindrome ofrecemos Google Ads y Meta Ads para ayudarte con esta y otras implementaciones. Solicita una cotización personalizada.

Preguntas frecuentes

¿CAPI reemplaza al Meta Pixel o debo tener ambos?

Deben coexistir, no se reemplazan. El Pixel captura señales del navegador (page views, botones, tiempo en página). CAPI captura conversiones desde el servidor con mayor precisión. Juntos con deduplicación dan la cobertura máxima. Solo Pixel: pierdes 40-60% de conversiones post-iOS 14.5. Solo CAPI: pierdes señales de navegación que alimentan la optimización de audiencias.

¿Cuánto mejora el ROAS con CAPI bien implementado?

Depende de tu audiencia. Para empresas con audiencia mayoritariamente Apple (iOS) o usuarios de ad blockers: mejoras de ROAS de 20-40% reportadas al recuperar conversiones perdidas. La mejora en ROAS viene de dos vías: más conversiones atribuidas correctamente (lo que mejora las decisiones de puja) y mejor optimización de audiencias de Meta al tener señales más completas.

¿Necesito un developer para implementar CAPI?

Para la implementación directa via API (como en el Paso 2 del tutorial): sí necesitas un developer PHP, Python o Node.js. Para implementación via GTM Server-Side: un marketero técnico puede configurarlo sin escribir código. Shopify tiene integración oficial que no requiere developer. Para WooCommerce: hay plugins como PixelYourSite que implementan CAPI sin código.

¿Cómo hashear correctamente el email y teléfono para CAPI?

Meta requiere SHA-256 sin salt. Para email: convertir a minúsculas, quitar espacios al inicio/final, luego hash SHA-256. Para teléfono: incluir código de país sin el signo + (ej. 5215512345678 para México), quitar espacios y guiones, luego hash SHA-256. En PHP: hash('sha256', strtolower(trim($email))). En Python: hashlib.sha256(email.lower().strip().encode()).hexdigest().

¿CAPI funciona para conversiones offline (visitas a tienda física)?

Sí. Meta CAPI tiene action_source: physical_store para conversiones offline. Puedes enviar conversiones ocurridas en tienda física (ventas en POS, llamadas telefónicas) conectando tu sistema POS o CRM con la API. Esto permite cerrar el loop de atribución: un cliente vio un anuncio en Meta y compró en tienda física.