WooCommerce
Conversión de pedido sin doble conteo y qué no se puede testear.
WooCommerce es WordPress, así que la instalación de la etiqueta es la de WordPress. Lo específico de Woo es la conversión.
Registrar la compra
WooCommerce dispara woocommerce_thankyou en la página de pedido recibido. Es el único punto donde el pedido existe y está confirmado:
add_action('woocommerce_thankyou', function ($order_id) {
if (!$order_id) {
return;
}
$order = wc_get_order($order_id);
if (!$order) {
return;
}
// El pedido ya se contabilizó en una carga anterior de esta misma página.
if ($order->get_meta('_growthlab_tracked') === 'yes') {
return;
}
$order->update_meta_data('_growthlab_tracked', 'yes');
$order->save();
$payload = wp_json_encode([
'revenue' => (float) $order->get_total(),
'currency' => $order->get_currency(),
'orderId' => (string) $order->get_order_number(),
'items' => $order->get_item_count(),
]);
?>
<script>
window.GrowthLab?.conversion('purchase', <?php echo $payload; ?>);
</script>
<?php
}, 10, 1);
Dos protecciones, y las dos hacen falta:
- El meta
_growthlab_trackedevita el doble conteo cuando el cliente recarga la página de gracias, que es lo más común. orderIddeduplica en el servidor. Aunque el meta fallara, el colector descarta una segunda conversión con el mismo identificador de pedido dentro de la ventana de retención.
Importe con o sin impuestos
get_total() incluye impuestos y envío. Si quieres medir el ingreso neto de producto:
'revenue' => (float) $order->get_subtotal(),
Elige uno y no lo cambies a mitad de un experimento: cambiar la definición del ingreso invalida la comparación entre variantes que ya tienen datos.
Añadir al carrito
Woo dispara added_to_cart en el fragmento AJAX:
<script>
jQuery(document.body).on('added_to_cart', function (event, fragments, hash, button) {
window.GrowthLab?.track('add_to_cart', {
productId: button?.data('product_id'),
quantity: button?.data('quantity') || 1,
});
});
</script>
Qué no se puede testear
Precios. Woo calcula precio, impuestos y envío en el servidor. Cambiarlos con JavaScript sería cosmético: el cliente vería un importe y se le cobraría otro. Las pruebas de precio real requieren un experimento de servidor con feature flags, no una variante del editor visual.
Grabación en el checkout
El checkout de Woo está excluido de la grabación por defecto, junto con /mi-cuenta y /finalizar-compra. Es deliberado: esas páginas contienen dirección, teléfono y datos de pago.
Si necesitas grabar el checkout para diagnosticar un abandono, actívalo en Ajustes → Privacidad, sabiendo que el enmascarado de campos sigue aplicándose y que los campos de pago se bloquean siempre, sin excepción y sin ajuste que lo permita.