Volver al blog

Blog

Etiquetado del lado del servidor para una tienda Shopify o WooCommerce: qué se dispara, qué no, y qué instalar

Publicado · 5 min de lectura

Un contenedor de servidor no hace que una tienda informe de compras. Reenvía lo que el navegador envía, desde tu propio nombre de host en lugar del de Google, y eso merece la pena: entre los bloqueadores de anuncios y Safari se pierde una parte significativa de las conversiones de una tienda. Pero la compra tiene que enviarse primero, y en las dos plataformas en las que corren la mayoría de las tiendas, nada la envía de serie. Este es el artículo que nos habría gustado poder dar a cada cliente el primer día.

Los siete eventos, y lo único que tienen en común

GA4 define siete eventos para un embudo de compra: view_item_list, view_item, add_to_cart, remove_from_cart, begin_checkout, add_payment_info y purchase. Los nombres son de GA4, no de ninguna plataforma: los mismos siete funcionan para Shopify, WooCommerce y una tienda que hayas construido tú.

Lo que comparten es un mecanismo. Cada uno es un envío al dataLayer de la página, exactamente con ese nombre, con un objeto ecommerce en la forma de GA4. Un activador de Tag Manager escucha el nombre; una etiqueta de evento de GA4 lee el objeto ecommerce y lo envía. Escribe mal el nombre, anida el objeto un nivel de más o envíalo en la página equivocada, y la etiqueta se queda ahí para siempre sin un error. Así es un envío de compra:

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({ ecommerce: null });
window.dataLayer.push({
  event: 'purchase',
  ecommerce: {
    transaction_id: 'ORD-10442',
    value: 89.90,
    currency: 'EUR',
    items: [
      { item_id: 'SKU-118', item_name: 'Trail jacket', price: 89.90, quantity: 1 }
    ]
  }
});

El envío previo de ecommerce: null no es decorativo. Sin él, los artículos del evento anterior pueden colarse en el siguiente, y un view_item de hace tres páginas aparece dentro de un purchase.

Shopify: el tema no ve el checkout

Un contenedor instalado en un tema de Shopify carga en el escaparate: páginas de producto, colecciones, el carrito. No carga en el checkout ni en la página de agradecimiento, que Shopify sirve desde su propio dominio y con sus propias plantillas. Así que un contenedor instalado en el tema puede enviar view_item y add_to_cart y nunca, con ninguna configuración, enviará begin_checkout, add_payment_info o purchase.

Esos tres salen de un Custom Pixel. El sandbox de píxeles de Shopify expone los eventos del checkout (checkout_started, payment_info_submitted, checkout_completed) y permite a un píxel enviar a un dataLayer propio; un pequeño script asigna cada uno al nombre y la forma del evento de GA4 de arriba. Los eventos del escaparate siguen saliendo del tema, así que una configuración completa tiene las dos partes: una aplicación de dataLayer o un fragmento en el tema para la mitad de navegación, y un Custom Pixel para la mitad del checkout.

Una decisión más. El canal Google y YouTube de Shopify puede enviar eventos de GA4 directamente, fuera de cualquier contenedor. Si conectas allí una propiedad de GA4 Y enrutas la misma propiedad por tu contenedor, cada compra se cuenta dos veces. Elige un camino. Si lo que buscas es la recogida de primera parte, el contenedor es el camino, y la conexión de Analytics del canal se queda apagada.

WooCommerce: el núcleo no envía nada

WooCommerce por sí mismo no escribe ningún dataLayer. Lo hace un plugin —GTM4WP es al que recurre la mayoría—, y su opción de comercio electrónico de GA4 produce los siete eventos con la forma correcta en las páginas correctas: view_item en un producto, add_to_cart en el botón, begin_checkout en la página de pago, purchase en la página de pedido recibido.

El fallo clásico de WooCommerce es una compra duplicada, y tiene una causa concreta: la página de pedido recibido se recarga. Un visitante la actualiza, vuelve a ella desde un proveedor de pago, o el tema redirige por ella dos veces, y purchase se envía otra vez con el mismo transaction_id. GA4 deduplica las compras por transaction_id dentro de una sesión, lo que atrapa la mayoría de los casos, pero no una recarga al día siguiente. Merece la pena activar el ajuste del plugin «disparar solo una vez por pedido»; mantiene la marca en el servidor, donde una recarga no puede reiniciarla.

Qué construye SignalHost por ti

Dile al asistente que el sitio es una tienda y añadirá a tu contenedor web un activador de evento personalizado y una etiqueta de evento de GA4 para cada uno de los siete eventos: catorce entidades, todas con el prefijo SH para que nunca choquen con nada que ya tengas. Cada etiqueta envía el objeto ecommerce directamente desde el dataLayer, así que items, value, currency y transaction_id pasan sin una variable por campo, y cada una nombra tu ID de medición explícitamente en lugar de heredarlo.

En tu tienda no se instala nada. Los activadores escuchan; los envíos son del plugin o del píxel. Elegir «sin tienda online» deja fuera las catorce entidades y no cambia nada más: las páginas vistas, el scroll y el resto de eventos estándar pasan por el contenedor igualmente.

En el lado del servidor no hay nada por evento. La etiqueta de GA4 del contenedor de servidor reenvía cada evento que recibe, se llame como se llame, así que un evento nuevo en tu sitio no necesita ningún cambio en el nuestro. Los destinos Meta Conversions API y TikTok Events API, si los conectas, asignan los mismos siete nombres por sí mismos; un purchase se convierte en un Purchase para Meta y un CompletePayment para TikTok, desde el mismo envío.

Comprobarlo con un pedido de prueba

Haz un pedido real en modo de prueba, o uno barato que luego reembolses, y observa la lista de eventos de la página del contenedor. En secuencia deberías ver view_item, add_to_cart, begin_checkout, add_payment_info y purchase, cada uno una vez. Un purchase ausente en Shopify significa que el Custom Pixel no está instalado o no envía; un begin_checkout ausente en WooCommerce suele significar que el evento de checkout del plugin está desactivado.

Si pasas las conversiones de Google Ads por el contenedor, purchase es el evento de conversión, y su valor, moneda e ID de transacción se leen de ese mismo objeto ecommerce. Un envío de compra sin value registra una conversión que vale nada, lo cual es un número real en un informe, y el equivocado.

Deja de perder datos por los bloqueadores

Diez mil solicitudes al mes, gratis, todo el tiempo que quieras. Cuatro minutos para saber si te ayuda.