← Blog/
Google Ads · Tracking
+30% conversiones

Cómo configurar Conversiones Mejoradas de Google Ads en Shopify

Guía completa con 3 métodos de implementación (App de Google, GTM y Custom Pixel directo) para recuperar hasta un 30% de conversiones perdidas y darle más datos a Smart Bidding.

WP

José Moreno

Especialistas en Google Ads + Shopify

Actualizado: Abril 2026·15 min de lectura·Nivel Intermedio

+30%

conversiones recuperadas

3 métodos

App, GTM y Custom Pixel

Email

cubre ~80% del match

72h

para verse en Diagnostics

¿Qué son las Conversiones Mejoradas?

Cuando alguien compra en tu tienda Shopify y Google Ads registra esa conversión, Google necesita saber quién hizo esa compra para atribuirla al click correcto del anuncio.

El problema: con cookies limitadas, ad blockers y restricciones de privacidad, Google pierde la conexión entre el click y la compra en un porcentaje significativo de casos. Enhanced Conversions resuelven esto enviando datos del comprador (email, teléfono, dirección) hasheados con SHA-256 junto con el evento de conversión. Google los compara con su base de usuarios logueados (Gmail, YouTube, Chrome) y atribuye la conversión incluso si la cookie se perdió.

❌ SIN Enhanced Conversions

Click en anuncio
cookie
[usuario borra cookies]
compra

Google: "No sé quién compró" ❌

✅ CON Enhanced Conversions

Click en anuncio
cookie
[usuario borra cookies]
compra + email hasheado

Google: "El email coincide con el click" ✅

Impacto real en tu cuenta

+30%

Conversiones atribuidas

Hasta un 30% más de conversiones que antes se perdían ahora se recuperan.

🎯

Smart Bidding más inteligente

Con más datos de conversión, Maximize Conversions y Target ROAS funcionan mejor.

📈

ROAS reportado más real

No vendes más — ves las ventas que ya estabas generando pero Google no atribuía.

Tipos de Enhanced Conversions

USA ESTA

Tipo 1

Enhanced Conversions for Web

Envías datos de usuario con el evento de conversión web (cuando el usuario llega al thank-you).

Ideal para: cualquier tienda con tag de Google Ads.

Tipo 2

Enhanced Conversions for Leads

Conversión offline para cuando un lead se convierte en venta más adelante.

No aplica para ecommerce directo.

Requisitos previos y aceptar términos

Antes de empezar, necesitás:

1

Cuenta de Google Ads activa con al menos una acción de conversión de Purchase configurada

2

Tag de Google Ads funcionando en tu tienda (Custom Pixel, GTM o app de Google & YouTube)

3

Aceptar los términos de Enhanced Conversions en Google Ads (te muestro abajo)

Aceptar los términos (paso a paso)

1

Google Ads → Goals → Conversions → Settings (engranaje arriba a la derecha)

2

Expandí la sección 'Enhanced conversions'

3

Marca la casilla 'Turn on enhanced conversions for web'

4

Acepta los términos (Google Customer Data Terms)

5

URL to check: tu URL de thank-you (ej: https://tutienda.com/checkouts/*)

6

Selecciona tu método: Google Tag, GTM o API

7

Guarda — listo para empezar a enviar datos

Más simple

Método 1: Google & YouTube App

Si usas la app oficial de Google & YouTube de Shopify, Enhanced Conversions se activan casi automáticamente.

1

Shopify Admin → Sales Channels → Google & YouTube

2

Settings dentro de la app

3

Buscá la sección 'Enhanced Conversions' o 'Conversiones mejoradas'

4

Actívala (toggle ON)

5

Listo — la app envía email y dirección hasheados con cada conversión

✅ Pros

  • Setup en 30 segundos
  • Sin código que mantener
  • Hashing automático

⚠️ Contras

  • No controlás qué datos se envían
  • No podés agregar campos extra
  • Si desinstalás la app, lo perdés
Más control

Método 2: GTM Web + Server-Side

Si usás Google Tag Manager (Web o Server-Side) tenés control total sobre los datos que enviás.

2A — Enhanced Conversions en GTM Web

Paso 1: Crear una variable de User-Provided Data en GTM (Variables → New → User-Provided Data) y mapear estos campos:

Campo en GTM
Data Layer Variable
Prioridad
Email
userEmail
Esencial
Phone
userPhone
Alto
First Name
userFirstName
Medio
Last Name
userLastName
Medio
Street
userStreet
Bajo
City
userCity
Bajo
Region/State
userState
Bajo
Postal Code
userZip
Bajo
Country
userCountry
Bajo

💡 No necesitás todos los campos. Email solo cubre ~80% del match. Email + teléfono cubren ~95%. El resto es bonus marginal.

Paso 2: Enviar los datos al data layer desde tu Custom Pixel de Shopify:

custom-pixel.js — push al dataLayer con datos de usuario

javascript
// En tu Custom Pixel de Shopify (checkout_completed)
analytics.subscribe('checkout_completed', (event) => {
  const c = event.data.checkout;
  
  window.dataLayer = window.dataLayer || [];
  window.dataLayer.push({
    event: 'purchase',
    transaction_id: cleanOrderId(c.order?.id) || c.token,
    value: parseFloat(c.totalPrice.amount),
    currency: c.totalPrice.currencyCode,
    
    // Datos de usuario para Enhanced Conversions
    userEmail: c.email || '',
    userPhone: c.phone || '',
    userFirstName: c.shippingAddress?.firstName || '',
    userLastName: c.shippingAddress?.lastName || '',
    userStreet: c.shippingAddress?.address1 || '',
    userCity: c.shippingAddress?.city || '',
    userState: c.shippingAddress?.province || '',
    userZip: c.shippingAddress?.zip || '',
    userCountry: c.shippingAddress?.country || ''
  });
});

Paso 3: Configurar el tag de Google Ads Conversion en GTM:

1

GTM Web → Tags → tu tag de Google Ads Conversion

2

Buscá la opción 'Include user-provided data from your website'

3

Activala y seleccioná la variable de User-Provided Data del Paso 1

4

Save → Submit → Publish

2B — Enhanced Conversions en GTM Server-Side

Si ya tenés GTM Server-Side con Stape, podés enviar Enhanced Conversions desde el servidor. Ventaja: los datos viajan por tu servidor y nunca se exponen en el browser.

GA4 Web Container → user_data al servidor

javascript
// En tu tag de GA4 dentro del Web Container
// (el que envía datos al servidor vía transport_url)

user_data.email_address = {{DLV - userEmail}}
user_data.phone_number = {{DLV - userPhone}}
user_data.address.first_name = {{DLV - userFirstName}}
user_data.address.last_name  = {{DLV - userLastName}}
user_data.address.street     = {{DLV - userStreet}}
user_data.address.city       = {{DLV - userCity}}
user_data.address.region     = {{DLV - userState}}
user_data.address.postal_code = {{DLV - userZip}}
user_data.address.country    = {{DLV - userCountry}}

Después en tu Server Container, abrí el tag de Google Ads Conversion y mapeá la sección "User-Provided Data" con las variables del request: {{User Email}}, {{User Phone}}, etc.

Sin GTM

Método 3: Custom Pixel directo

Si no usás GTM y querés implementar Enhanced Conversions directamente en un Custom Pixel de Shopify, este código está listo para copiar y pegar.

google-ads-enhanced-conversions.js — listo para producción

javascript
// =============================================
// GOOGLE ADS + ENHANCED CONVERSIONS
// CUSTOM PIXEL PARA SHOPIFY
// =============================================
const AW_ID = 'AW-XXXXXXXXX';
const PURCHASE_LABEL = 'XXXXXXXXXXXXX';

// Cargar gtag.js
const script = document.createElement('script');
script.src = 'https://www.googletagmanager.com/gtag/js?id=' + AW_ID;
script.async = true;
document.head.appendChild(script);

window.dataLayer = window.dataLayer || [];
function gtag(){ dataLayer.push(arguments); }
gtag('js', new Date());

// CLAVE: activar Enhanced Conversions en el config
gtag('config', AW_ID, { 'allow_enhanced_conversions': true });

function cleanOrderId(gid) {
  if (!gid) return '';
  return gid.split('/').pop();
}

// PURCHASE con Enhanced Conversions
analytics.subscribe('checkout_completed', (event) => {
  const c = event.data.checkout;
  const orderId = cleanOrderId(c.order?.id) || c.token;
  
  // Protección contra duplicados (reload del thank-you)
  const last = sessionStorage.getItem('_gads_last');
  if (last === orderId) return;
  sessionStorage.setItem('_gads_last', orderId);
  
  // ⚡ ENHANCED CONVERSIONS  -  gtag hashea con SHA-256 antes de enviar
  // ESTO VA ANTES de gtag('event', 'conversion')
  gtag('set', 'user_data', {
    'email': c.email || '',
    'phone_number': c.phone || '',
    'address': {
      'first_name': c.shippingAddress?.firstName || '',
      'last_name':  c.shippingAddress?.lastName || '',
      'street':     c.shippingAddress?.address1 || '',
      'city':       c.shippingAddress?.city || '',
      'region':     c.shippingAddress?.province || '',
      'postal_code': c.shippingAddress?.zip || '',
      'country':    c.shippingAddress?.countryCode || ''
    }
  });
  
  // Conversión
  gtag('event', 'conversion', {
    'send_to': AW_ID + '/' + PURCHASE_LABEL,
    'value': parseFloat(c.totalPrice.amount),
    'currency': c.totalPrice.currencyCode,
    'transaction_id': orderId
  });
});

⚠️ Importante: orden de ejecución

gtag('set', 'user_data', {...}) debe ir ANTES de gtag('event', 'conversion', {...}). Si va después, Google no tendrá los datos al procesar la conversión.

Qué datos enviar — prioridad de impacto

No necesitás enviar todos los campos. Acá los tenés ordenados por impacto en el match rate:

#
Campo
Match Rate
Disponible en Shopify
Nivel
1
Email
~80%
checkout.email
Esencial
2
Phone
~15% adicional
checkout.phone
Alto
3
First + Last Name
~3% adicional
checkout.shippingAddress.firstName / lastName
Medio
4
Address completa
~2% adicional
checkout.shippingAddress.*
Bajo

🎯 Recomendación mínima

Enviá al menos email + teléfono. Con esos dos cubrís ~95% del matching posible. El resto suma poco.

El hash: ¿necesito hashear yo?

Depende del método que uses:

Método
¿Hasheo manual?
Notas
Google & YouTube App de Shopify
NO
La app hashea automáticamente
gtag.js (Custom Pixel)
NO
gtag hashea automáticamente antes de enviar
GTM Web (User-Provided Data variable)
NO
GTM hashea automáticamente
GTM Server-Side (Stape template)
NO
El template de Stape hashea solo
API directa (HTTP request)
Debes hashear con SHA-256 antes de enviar

Si necesitás hashear manualmente:

hash-sha256.js — utility para hashear datos

javascript
// Hashear un email con SHA-256
async function hashSHA256(str) {
  const normalized = str.trim().toLowerCase();
  const encoder = new TextEncoder();
  const data = encoder.encode(normalized);
  const hashBuffer = await crypto.subtle.digest('SHA-256', data);
  const hashArray = Array.from(new Uint8Array(hashBuffer));
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
}

// Uso:
const hashedEmail = await hashSHA256('usuario@email.com');
// -> "b4c9a289323b21a01c3e940f150eb9b8c542587f1abfd8f0e1cc1ffc5e475514"

Reglas de normalización ANTES de hashear

  • Email: minúsculas, sin espacios al inicio/final
  • Teléfono: formato E.164 con código de país (ej: +12125551234), sin espacios, guiones o paréntesis
  • Nombre/Apellido: minúsculas, sin espacios extra
  • Dirección: minúsculas

Verificación: ¿están funcionando?

1

Google Ads → Diagnostics

Goals → Conversions → tu Purchase → tab 'Diagnostics' → buscá 'Enhanced conversions'. Debe decir 'Recording enhanced conversions' ✅. Toma 48-72h después de la primera conversión con datos.

2

Google Tag Assistant

Instalá Tag Assistant Companion en Chrome → tagassistant.google.com → ingresá tu URL → completá una compra → buscá el evento de conversión y verificá que muestre 'User-Provided Data' con datos hasheados.

3

Google Ads API (avanzado)

Si tenés acceso a la API de Google Ads, podés query a conversion_action.status para verificar el estado de cada conversión activa.

4

Señales en tus reportes

Más conversiones reportadas, mejor Conversion Rate en Smart Bidding y menos conversiones 'Other' en el reporte de atribución.

5 errores comunes y soluciones

Error #1Enhanced Conversions muestra "Not recording"

Causa: No han pasado 72h desde la primera conversión, datos no se envían correctamente, falta `allow_enhanced_conversions: true` o no aceptaste los términos.

Solución: Verifica cada punto. Usa Tag Assistant para confirmar que `user_data` viaja con el evento de conversión.

Error #2gtag('set', 'user_data') se llama DESPUÉS de la conversión

Causa: La conversión se registra pero sin Enhanced Conversions activas.

Solución: El `set user_data` SIEMPRE va antes del `event conversion`. Revisa el orden en tu código.

Error #3Datos no normalizados

Causa: Match rate bajo a pesar de enviar email correctamente.

Solución: Email en minúsculas y sin espacios: " Usuario@Email.COM " → "usuario@email.com". gtag normaliza solo. Si hasheas tú, normaliza ANTES.

Error #4Enviar datos en texto plano vía API

Causa: Posible rechazo de datos o violación de políticas de Google.

Solución: Si envías vía API directa (no gtag ni GTM), DEBES hashear con SHA-256. gtag y GTM lo hacen automáticamente.

Error #5Transaction ID duplicado o vacío

Causa: Google no puede deduplicar conversiones correctamente y aparecen ventas duplicadas.

Solución: Siempre incluí un `transaction_id` único en cada conversión. Usá el order ID de Shopify.

Server-Side: la combinación óptima

Si ya tenés GTM Server-Side con Stape, Enhanced Conversions se potencian. El servidor recibe TODOS los datos del usuario y los distribuye a cada plataforma en su formato.

1. Origen

Custom Pixel de Shopify

email · phone · order_id · value

2. GTM Server (Stape)

Distribuidor Central de Datos

Google Ads

Enhanced Conv. (email, phone, name, address)

Meta CAPI

Server-side event (email, phone, fbp, fbc)

GA4

User properties enriquecidas

Checklist final

Términos de Enhanced Conversions aceptados en Google Ads → Conversions → Settings

Acción de conversión de Purchase configurada y activa

Datos de usuario enviados con cada conversión (mínimo: email)

gtag('set', 'user_data') va ANTES de gtag('event', 'conversion')

allow_enhanced_conversions: true en la configuración de gtag

Transaction ID único incluido en cada conversión

Verificado con Tag Assistant que user_data se envía hasheado

Status en Diagnostics: "Recording enhanced conversions" (esperar 72h)

Protección contra purchase duplicados implementada (sessionStorage)

Compartir este articulo

WhatsAppX
José Moreno, Fundador de Web Premiere

José Moreno

Fundador · Web Premiere

Fundador de Web Premiere y Signal Lab. Especialista en publicidad digital con 13 años de experiencia en Google Ads, Meta Ads y marketing de resultados para empresas en LATAM y USA. Invitado al programa Google Partners LEAD en Silicon Valley.

Agencia Digital

Llevemos tu marketing al siguiente nivel

Auditamos tu estrategia digital de forma gratuita. Sin compromiso.

WhatsApp