Añada las analíticas de Zenovay a su sitio WordPress con una simple etiqueta de script.
Solo configuración manual. Zenovay no ofrece actualmente un plugin oficial de WordPress ni una extensión de WooCommerce. Las instrucciones a continuación muestran cómo añadir el seguimiento de Zenovay a un sitio WordPress usando el script de seguimiento estándar y fragmentos en header.php / functions.php (que funcionan de forma fiable). Las referencias más abajo a un «plugin», a una «integración con WooCommerce» o a un «seguimiento automático» describen lo que es posible con el código manual de este artículo, no un plugin instalable separado.
Instalación
Opción 1: Añadir al encabezado del tema (Recomendado)
Añada al header.php de su tema antes de </head>:
<script
defer
data-tracking-code="YOUR_TRACKING_CODE"
src="https://api.zenovay.com/z.js">
</script>
Opción 2: Añadir mediante functions.php
Añada al functions.php de su tema:
function zenovay_tracking_script() {
?>
<script
defer
data-tracking-code="YOUR_TRACKING_CODE"
src="https://api.zenovay.com/z.js">
</script>
<?php
}
add_action('wp_head', 'zenovay_tracking_script');
Integración con WooCommerce
Seguimiento de WooCommerce (configuración manual)
Con los fragmentos a continuación:
- Vistas de producto rastreadas automáticamente
- Eventos de añadir al carrito
- Pasos del checkout
- Completación de compra
- Atribución de ingresos
Configuración manual de WooCommerce
Añada al functions.php de su tema:
// Rastrear vistas de producto
add_action('woocommerce_after_single_product', 'zenovay_track_product_view');
function zenovay_track_product_view() {
global $product;
?>
<script>
if (window.zenovay) {
zenovay('track', 'view_product', {
product_id: '<?php echo esc_js($product->get_id()); ?>',
product_name: '<?php echo esc_js($product->get_name()); ?>',
price: <?php echo $product->get_price(); ?>,
category: '<?php echo esc_js(wp_get_post_terms($product->get_id(), 'product_cat')[0]->name ?? ''); ?>'
});
}
</script>
<?php
}
// Rastrear añadir al carrito
add_action('woocommerce_add_to_cart', 'zenovay_track_add_to_cart', 10, 6);
function zenovay_track_add_to_cart($cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data) {
$product = wc_get_product($product_id);
?>
<script>
if (window.zenovay) {
zenovay('track', 'add_to_cart', {
product_id: '<?php echo esc_js($product_id); ?>',
product_name: '<?php echo esc_js($product->get_name()); ?>',
price: <?php echo $product->get_price(); ?>,
quantity: <?php echo $quantity; ?>
});
}
</script>
<?php
}
// Rastrear compra
add_action('woocommerce_thankyou', 'zenovay_track_purchase');
function zenovay_track_purchase($order_id) {
if (!$order_id) return;
$order = wc_get_order($order_id);
// Verificar si ya fue rastreado
if ($order->get_meta('_zenovay_tracked')) return;
$items = array();
foreach ($order->get_items() as $item) {
$product = $item->get_product();
$items[] = array(
'id' => $product->get_id(),
'name' => $item->get_name(),
'price' => $product->get_price(),
'quantity' => $item->get_quantity()
);
}
?>
<script>
if (window.zenovay) {
zenovay('revenue', <?php echo $order->get_total(); ?>, '<?php echo esc_js($order->get_currency()); ?>', {
order_id: '<?php echo esc_js($order_id); ?>',
items: <?php echo json_encode($items); ?>
});
}
</script>
<?php
$order->update_meta_data('_zenovay_tracked', true);
$order->save();
}
Seguimiento de objetivos
Objetivos de envío de formularios
Rastrear Contact Form 7:
add_action('wp_footer', 'zenovay_cf7_tracking');
function zenovay_cf7_tracking() {
?>
<script>
document.addEventListener('wpcf7mailsent', function(event) {
if (window.zenovay) {
zenovay('goal', 'contact_form', {
form_id: event.detail.contactFormId
});
}
});
</script>
<?php
}
Rastrear Gravity Forms:
add_action('gform_after_submission', 'zenovay_gf_tracking', 10, 2);
function zenovay_gf_tracking($entry, $form) {
?>
<script>
if (window.zenovay) {
zenovay('goal', 'form_submission', {
form_id: '<?php echo $form['id']; ?>',
form_name: '<?php echo esc_js($form['title']); ?>'
});
}
</script>
<?php
}
Suscripciones al boletín
Rastrear MailChimp para WordPress:
add_action('mc4wp_form_success', 'zenovay_mc4wp_tracking');
function zenovay_mc4wp_tracking() {
?>
<script>
if (window.zenovay) {
zenovay('goal', 'newsletter_signup');
}
</script>
<?php
}
Identificación de usuarios
Rastrear usuarios con sesión iniciada
add_action('wp_footer', 'zenovay_identify_user');
function zenovay_identify_user() {
if (!is_user_logged_in()) return;
$user = wp_get_current_user();
?>
<script>
if (window.zenovay) {
zenovay('identify', '<?php echo esc_js($user->ID); ?>', {
email: '<?php echo esc_js($user->user_email); ?>',
name: '<?php echo esc_js($user->display_name); ?>',
role: '<?php echo esc_js($user->roles[0]); ?>'
});
}
</script>
<?php
}
Excluir usuarios administradores
Excluir administradores mediante configuración
Configure su lista de roles a excluir (p. ej., mediante un plugin de gestión de roles o código personalizado):
- Administrador
- Editor
Mediante código
add_action('wp_head', 'zenovay_conditional_tracking');
function zenovay_conditional_tracking() {
// No rastrear administradores
if (current_user_can('manage_options')) {
return;
}
?>
<script
defer
data-tracking-code="YOUR_TRACKING_CODE"
src="https://api.zenovay.com/z.js">
</script>
<?php
}
Soporte para Multisitio
En una red multisitio de WordPress, cada sitio es una propiedad separada en Zenovay, por lo que cada uno necesita su propio código de seguimiento. Cree un sitio web separado en Zenovay para cada sitio en la red, luego coloque el código de seguimiento correspondiente por sitio.
Configuración por sitio
Si añade el fragmento desde un complemento mu-network activado (o un tema compartido en la red), asigne cada ID de blog a su propio código de seguimiento:
add_action('wp_head', 'zenovay_multisite_tracking');
function zenovay_multisite_tracking() {
$codes = array(
1 => 'TRACKING_CODE_FOR_SITE_1',
2 => 'TRACKING_CODE_FOR_SITE_2',
// Añada una entrada por ID de blog
);
$blog_id = get_current_blog_id();
if (empty($codes[$blog_id])) {
return;
}
?>
<script
defer
data-tracking-code="<?php echo esc_attr($codes[$blog_id]); ?>"
src="https://api.zenovay.com/z.js">
</script>
<?php
}
Eventos personalizados
Seguimiento de clics en botones
<button onclick="zenovay('track', 'cta_click', {button: 'hero'})">
Comenzar
</button>
Profundidad de desplazamiento
add_action('wp_footer', 'zenovay_scroll_tracking');
function zenovay_scroll_tracking() {
?>
<script>
let maxScroll = 0;
window.addEventListener('scroll', function() {
const scrollPercent = Math.round(
(window.scrollY / (document.body.scrollHeight - window.innerHeight)) * 100
);
if (scrollPercent > maxScroll && scrollPercent % 25 === 0) {
maxScroll = scrollPercent;
if (window.zenovay) {
zenovay('track', 'scroll_depth', { depth: scrollPercent });
}
}
});
</script>
<?php
}
Compatibilidad con caché
Plugins de caché populares
Funciona con:
- WP Super Cache
- W3 Total Cache
- WP Rocket
- LiteSpeed Cache
- Cloudflare
Exclusiones de caché
Si el seguimiento no funciona:
- Excluya el script de Zenovay de la optimización
- No lo combine ni difiera si hay problemas
Para WP Rocket:
add_filter('rocket_exclude_js', function($excluded) {
$excluded[] = 'api.zenovay.com';
return $excluded;
});
Resolución de problemas
El seguimiento no funciona
Verifique:
- El script de seguimiento está presente en su tema (
header.phpofunctions.php) - El valor
data-tracking-codecoincide con el código de seguimiento de su sitio web en Zenovay - No está excluido por su propio código de exclusión de roles
- La consola del navegador para errores de script o de red
WooCommerce no rastrea
Confirme:
- Los fragmentos de WooCommerce están añadidos al
functions.phpde su tema - La página de agradecimiento (pedido recibido) se carga correctamente
- El script no está bloqueado ni eliminado por un plugin de caché
Conflictos con otros plugins
Si hay conflictos:
- Desactive otros plugins de analítica
- Compruebe si hay errores de JavaScript
- Pruebe con el tema predeterminado
Compatibilidad con constructores de páginas
Funciona con:
- Elementor
- Divi
- Beaver Builder
- Gutenberg
- WPBakery
Rendimiento
Carga del script
El script de Zenovay:
- Se carga de forma asíncrona (defer)
- Pesa menos de 5 KB
- No bloquea el renderizado
- Se entrega a través de CDN
Consejos de optimización
- No duplique el script
- Habilite el caché