← Blog/
Meta Ads · Tracking
Guía técnica

Cómo configurar Meta Conversions API (CAPI) en Shopify

Guía completa 2026 para implementar tracking server-side con deduplicación correcta. Recupera el 15-25% de conversiones que estás perdiendo por iOS 14.5+, AdBlock y restricciones de cookies.

WP

José Moreno

Especialistas en Tracking Server-Side

·20 min de lectura·Nivel Intermedio-Avanzado

+25%

conversiones recuperadas

80%+

iOS bloquea tracking

30-40%

users con AdBlock

6.0+

Match Quality objetivo

Por qué tu Pixel de Meta ya no es suficiente

Si estás corriendo campañas de Facebook o Instagram Ads para tu tienda Shopify, hay algo que necesitas saber: el pixel de Meta que tienes instalado en el navegador está perdiendo más de la mitad de tus datos de conversión.

No es tu culpa. Es un problema estructural de la industria:

📱

iOS 14.5+

Permite a los usuarios bloquear el tracking. +80% de iPhone eligieron 'Ask App Not to Track'.

🚫

AdBlockers

AdBlock, uBlock y Brave bloquean directamente el pixel. 30-40% de desktop tiene alguno.

🍪

Cookies 3rd Party

Safari y Firefox limitan la vida de cookies del pixel a 7 días o menos.

📉

Resultado

Datos incompletos → algoritmo ciego → ROAS baja → CPA sube.

La solución

Meta Conversions API (CAPI): conexión directa servidor-a-servidor que envía los datos de conversión desde tu backend a Meta, sin depender del navegador del usuario.

¿Qué es Meta Conversions API?

CAPI es una interfaz que permite enviar eventos de conversión directamente desde tu servidor a los servidores de Meta, sin pasar por el navegador del usuario.

Pixel (Browser) vs CAPI (Server)

Característica
Pixel (Browser)
CAPI (Server)
Donde se ejecuta
Navegador del usuario
Tu servidor
Bloqueado por AdBlock
No
Afectado por iOS 14.5+
No
Cookies de Safari (7 días)
No aplica
Datos de usuario
Limitados
Completos (email, phone, IP, UA)
Latencia
Tiempo real
Casi tiempo real
Control de datos
Bajo
Total

¿Necesito los dos?

Sí, necesitas ambos. Esta es la parte que más confunde a la gente. La configuración óptima es redundante a propósito: el pixel del navegador envía el evento Y el servidor envía el mismo evento. Meta los recibe y los deduplica usando un identificador único (event_id).

  • Si el usuario tiene AdBlock → el pixel falla, pero el servidor sí envía.
  • Si el servidor tiene un error momentáneo → el pixel cubre.
  • Meta se queda con la versión que tenga más datos.

Cómo funciona la deduplicación

Este es el concepto más importante de toda la implementación. Si no lo entiendes bien, vas a contar doble cada conversión y tu algoritmo de Meta va a aprender de datos inflados.

Flujo de deduplicación

👤 Usuario compra en tu tienda

🌐 Pixel Browser

Purchase
event_id: "TXN_12345"

🖥️ Tu Servidor

Purchase
event_id: "TXN_12345"

Meta detecta mismo event_id → deduplica

✅ 1 Purchase registrado

Las 5 reglas de deduplicación

  1. El event_id debe ser idéntico en browser y servidor.
  2. El event_name debe ser el mismo ("Purchase" en ambos, no "purchase").
  3. La ventana de deduplicación es de 48 horas.
  4. Para Purchase: usa el order_id de Shopify como event_id (único por transacción).
  5. Para otros eventos (ViewContent, AddToCart): genera un ID único (timestamp + random) y pásalo a ambos.

⚠️ Si NO deduplicas

Meta cuenta doble. Si vendes 10 productos, Meta reporta 20 "Purchases". Tu Smart Bidding optimiza pensando que todo funciona increíble, gasta más presupuesto, pero tu ROAS real es la mitad de lo que ves. Es uno de los errores más costosos del marketing digital.

Métodos de implementación en Shopify

Hay tres formas principales. Cada una tiene pros y contras. En esta guía nos enfocaremos en la Opción B (GTM Server-Side con Stape) porque ofrece el mejor balance entre control, escalabilidad y mantenibilidad.

A

Integración Nativa de Shopify

Meta Channel App

Pros

  • Configuración en 5 minutos
  • Sin conocimiento técnico
  • Shopify maneja CAPI automáticamente

Contras

  • Poco control sobre datos
  • No personalizable
  • Match rate limitado

Ideal para: Tiendas pequeñas con poco presupuesto

Recomendado
B

GTM Web + Server-Side con Stape

Recomendado

Pros

  • Control total de cada evento
  • Un solo punto de distribución
  • Mejor match rate
  • Funciona con Custom Pixels

Contras

  • Requiere conocimiento de GTM
  • Costo Stape (~$20/mes Pro)

Ideal para: Tiendas con +$1,000/mes en ads

C

Custom Pixel + CAPI vía HTTP

Desarrollo a medida

Pros

  • Máxima flexibilidad
  • Sin dependencia de GTM

Contras

  • Requiere desarrollo backend
  • Más difícil de mantener

Ideal para: Equipos con devs dedicados

Implementación completa paso a paso

1

Crear tu Custom Pixel en Shopify (Browser)

Shopify usa "Customer Events" para manejar pixels de terceros. Necesitas crear un Custom Pixel que dispare los eventos de Meta.

Ir a: Shopify Admin → Settings → Customer Events → Add Custom Pixel

Custom Pixel — Meta Pixel Browser

// Inicializar Meta Pixel
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){
  n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};
  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
  n.queue=[];t=b.createElement(e);t.async=!0;
  t.src=v;s=b.getElementsByTagName(e)[0];
  s.parentNode.insertBefore(t,s)}(window,document,'script',
  'https://connect.facebook.net/en_US/fbevents.js');

fbq('init', 'TU_PIXEL_ID_AQUI');
fbq('track', 'PageView');

// Producto visto
analytics.subscribe('product_viewed', (event) => {
  const product = event.data.productVariant;
  fbq('track', 'ViewContent', {
    content_ids: [product.id.toString()],
    content_type: 'product',
    value: parseFloat(product.price.amount),
    currency: product.price.currencyCode
  }, { eventID: 'vc_' + product.id + '_' + Date.now() });
});

// Compra completada (Purchase)
analytics.subscribe('checkout_completed', (event) => {
  const checkout = event.data.checkout;
  const orderId = checkout.order?.id || checkout.token;
  fbq('track', 'Purchase', {
    content_ids: checkout.lineItems.map(i => i.variant.id.toString()),
    value: parseFloat(checkout.totalPrice.amount),
    currency: checkout.totalPrice.currencyCode,
    order_id: orderId
  }, { eventID: orderId });
});

💡 Nota crítica

El eventID del Purchase usa el orderId directamente. Este mismo ID se debe enviar desde el servidor para que Meta deduplique correctamente.

2

Obtener tu Access Token de Meta

El Access Token es la llave que permite a tu servidor hablar con Meta.

  1. Ve a Meta Events Manager (business.facebook.com → Events Manager)
  2. Selecciona tu Pixel en el menú lateral
  3. Click en Settings → baja hasta Conversions API
  4. Click en Generate Access Token
  5. Copia el token (es largo, empieza con EAA...)
  6. Guárdalo en un lugar seguro — nunca lo expongas en código del navegador
3

Configurar tag de Meta CAPI en GTM Server

En tu GTM Server Container (hospedado en Stape), instala el template "Facebook Conversions API" de stape.io desde Templates → Search Gallery.

Configuración del tag

API Access Token
Tu token EAA... del paso anterior
Pixel ID
Tu ID de pixel (ej: 123456789012345)
Action Source
website
Event Name
{{Event Name}} (variable del server container)
Event ID
{{Event ID}} — CRÍTICO para deduplicación
Event Source URL
{{Page URL}}

Mapeo de datos de usuario (User Data)

Estos campos mejoran el Match Rate — mientras más datos envíes, mejor puede Meta atribuir.

Email
{{User Email}}
SHA-256, lowercase
Phone
{{User Phone}}
SHA-256, con código de país
IP Address
{{Client IP}}
Sin hash
User Agent
{{Client User Agent}}
Sin hash
fbp
{{Cookie: _fbp}}
Sin hash
fbc
{{Cookie: _fbc}} o fbclid del URL
Sin hash
External ID
{{Customer ID}}
SHA-256

¿Qué son fbp y fbc?

_fbp (Facebook Browser Parameter): cookie que identifica el navegador.

_fbc (Facebook Click ID): se genera cuando alguien llega desde un anuncio de Facebook. Permite atribuir la conversión al click exacto. Sin estos, Meta tiene que adivinar quién compró.

4

Configurar el Trigger

El tag de Meta CAPI debe disparar en los eventos que llegan desde tu Web Container. Crea un Custom Event Trigger con regex:

page_view|view_item|add_to_cart|begin_checkout|purchase

O usa una Lookup Table Variable para mapear nombres entre tus eventos del server y los nombres oficiales de Meta.

Mapeo completo: eventos Shopify → Meta

Evento Shopify
Evento Meta
Parámetros clave
page_viewed
PageView
URL de la página
product_viewed
ViewContent
content_ids, content_name, value, currency
product_added_to_cart
AddToCart
content_ids, value, currency, contents
checkout_started
InitiateCheckout
content_ids, value, currency, num_items
checkout_completed
Purchase
content_ids, value, currency, order_id, contents
search_submitted
Search
search_string
collection_viewed
ViewCategory
content_category

Verificación y testing

1. Meta Events Manager → Test Events

  1. Events Manager → tu Pixel → Test Events
  2. Copia el Test Event Code (ej: TEST12345)
  3. En tu tag de GTM Server, hay un campo "Test Event Code" — pégalo ahí
  4. Navega por tu tienda: ve un producto, agrega al carrito, simula checkout
  5. Verifica que aparezca el badge "Server" junto a cada evento

2. Verificar deduplicación

✅ Correcto

Browser Purchase: 10
Server Purchase: 10
Total: 10 (deduplicado)

❌ Incorrecto

Browser Purchase: 10
Server Purchase: 10
Total: 20 ← PROBLEMA

3. Event Match Quality (EMQ)

Score de 0 a 10 que mide qué tan bien Meta puede hacer match con un usuario de Facebook.

0-3
Pobre
Urgente: agregar más parámetros de usuario
4-5
Aceptable
Mejorar: agregar fbp, fbc, external_id
6-7
Bueno
Bien, mejora con teléfono
8-10
Excelente
Óptimo, mantener así

Errores comunes y cómo evitarlos

Error #1No enviar event_id → Doble conteo

Síntoma: Los Purchases en Events Manager son el doble de tus ventas reales.

Solución: Asegúrate de que tanto el pixel del browser como el tag CAPI envíen el mismo event_id. Para Purchase, usa el order_id de Shopify.

Error #2Datos de usuario sin hash → Rechazo

Síntoma: Los eventos llegan a Meta pero el Match Quality es 0.

Solución: Email y teléfono deben estar hasheados con SHA-256. En GTM Server, el template de Stape hashea automáticamente si configuras los campos correctamente.

Error #3Access Token mal configurado → Eventos silenciosos

Síntoma: No ves eventos del servidor en Events Manager, sin error visible.

Solución: Verifica el token en Events Manager → Settings. Regenera si es necesario. Usa Test Events para confirmar.

Error #4Content IDs no coinciden con el Catálogo

Síntoma: Meta muestra los eventos pero no hace match con productos para Dynamic Ads.

Solución: Los content_ids deben ser exactamente iguales a los IDs en tu catálogo de Meta. Formato típico: shopify_US_{product_id}_{variant_id}.

Error #5Purchase se dispara en reload del thank-you

Síntoma: Un mismo pedido se registra como múltiples purchases.

Solución: Guarda el último order_id enviado en sessionStorage y bloquea el evento si ya se envió para ese pedido.

Error #6No incluir fbp/fbc → Match Rate bajo

Síntoma: Event Match Quality por debajo de 5.

Solución: Asegúrate de que tu server container lea las cookies _fbp y _fbc del request. Usar dominio CNAME a Stape ayuda a que se envíen automáticamente.

Error #7Configurar CAPI sin pixel del browser

Síntoma: Solo ves eventos 'Server' en Events Manager, nunca 'Browser'.

Solución: Necesitas ambos. El pixel captura datos que el server no puede (scroll, tiempo en página). Meta optimiza mejor con ambas señales.

Solución al Error #5 — Reload del thank-you

const orderId = checkout.order?.id || checkout.token;
const lastOrder = sessionStorage.getItem('last_fb_purchase');
if (lastOrder === orderId) return; // Ya se envió
sessionStorage.setItem('last_fb_purchase', orderId);
fbq('track', 'Purchase', {/* ... */}, {eventID: orderId});

Resultados que puedes esperar

Después de una implementación correcta de CAPI + browser pixel con deduplicación:

📈

+15-25% conversiones atribuidas

Las que se perdían por AdBlock o iOS ahora llegan por el servidor.

🎯

Event Match Quality 6.0+

Meta puede atribuir correctamente quién compró.

🚀

Mejor Advantage+ Shopping

El algoritmo optimiza con datos reales, no parciales.

👥

Audiencias de remarketing más grandes

Cientos o miles en vez de decenas en cada evento.

🎨

Lookalikes más precisas

Construidas con datos reales de compradores.

💰

ROAS real visible

Puedes confiar en los números que ves en Ads Manager.

Checklist final de implementación

Custom Pixel en Shopify con Meta Pixel (browser) configurado

Eventos: PageView, ViewContent, AddToCart, InitiateCheckout, Purchase

event_id generado y enviado en cada evento del browser

Access Token generado en Events Manager

Tag de Meta CAPI en GTM Server configurado

Datos de usuario mapeados: email, phone, IP, user agent, fbp, fbc

event_id en CAPI coincide con el del browser

Purchase usa order_id como event_id

Verificación en Test Events: eventos llegan con badge 'Server'

Deduplicación verificada: total no es doble de browser

Event Match Quality apuntando a 6.0+

Protección contra reload de thank-you page implementada

Conclusión

Implementar Meta Conversions API en Shopify no es opcional en 2026 - es un requisito para cualquier tienda que invierta en Facebook o Instagram Ads. Sin CAPI, estás literalmente tirando dinero: pagando por campañas que no pueden optimizarse porque no reciben los datos de conversión.

Lo más importante: la deduplicación. Sin un event_id correcto compartido entre browser y servidor, vas a contar doble cada conversión y tu algoritmo va a optimizar con datos falsos. Eso es peor que no tener CAPI.

Compartir este articulo

WhatsAppX

Artículos relacionados

Más sobre tracking y analytics

Tracking server-side

¿Tu Shopify pierde datos de Meta?

Configuramos Meta CAPI + GTM Server-Side + deduplicación completa. Auditoría inicial gratuita, implementación lista en 7 días.

Solicitar Auditoría Gratuita →Ver Tracking Server-Side
WhatsApp