Saltar al contenido principal
14 min de lectura

Seguimiento de primera parte con Cloudflare Workers

Configure un proxy de primera parte usando Cloudflare Workers. Esta guía es para usuarios en hosting compartido (Hostinger, GoDaddy, Bluehost, etc.) que no pueden configurar proxies del lado del servidor.

Limitación importante: Firefox ETP no se omite

Esta guía configura un subdominio personalizado (z.tudominio.com). Si bien esto omite algunos bloqueadores de anuncios e ITP de Safari, NO omite la Protección Mejorada de Seguimiento de Firefox (ETP) porque los subdominios se consideran orígenes diferentes.

Si necesita compatibilidad con Firefox ETP, use una de estas opciones de proxy del mismo dominio en su lugar:

Estos usan rutas /api/_z/ que son del mismo origen y realmente omiten toda protección de seguimiento.

Dificultad: Fácil - Toma aproximadamente 10 minutos. No se requiere experiencia en codificación. Solo copiar y pegar.

Nombre del subdominio

Si continúa con este enfoque, use z.tudominio.com (no analytics.*, metrics.*, tracking.* o stats.* que se bloquean adicionalmente por filtros heurísticos).


Antes de comenzar

Asegúrese de tener:

  • Una cuenta de Cloudflare (el nivel gratuito funciona perfectamente) - Regístrese aquí
  • Su dominio agregado a Cloudflare (ver Paso 2)
  • Su código de seguimiento de Zenovay (encontrado en Dominios → su sitio → General)

Formato de su código de seguimiento

Su código de seguimiento se ve así: ZV_XXXXXXXXXX

  • Comienza con ZV_
  • Seguido de 10 caracteres (letras y números)
  • SENSIBLE A MAYÚSCULAS - copie exactamente

Ejemplo: ZV_Q8U0GYD70WR


¿Por qué Cloudflare Workers?

Cloudflare Workers se ejecutan en la red perimetral global de Cloudflare (más de 300 centros de datos). Esto significa:

  • Rápido: Tiempos de respuesta menores a 50ms en todo el mundo
  • Gratuito: 100.000 solicitudes/día en el plan gratuito (más que suficiente para la mayoría de sitios)
  • Simple: Sin servidor que administrar
  • Confiable: Tiempo de actividad del 99,99%

Paso 1: Crear una cuenta de Cloudflare

Si ya tiene una cuenta de Cloudflare, vaya al Paso 2.

  1. Vaya a cloudflare.com
  2. Haga clic en Sign Up (esquina superior derecha)
  3. Ingrese su dirección de correo electrónico
  4. Cree una contraseña (mínimo 8 caracteres)
  5. Haga clic en Create Account
  6. Revise su correo electrónico y haga clic en el enlace de verificación

¿El correo no llega? Revise su carpeta de spam. El correo viene de [email protected].


Paso 2: Agregar su dominio a Cloudflare

Este paso es obligatorio. Sin agregar su dominio a Cloudflare, no puede crear un subdominio personalizado como z.tudominio.com.

  1. Inicie sesión en su panel de control de Cloudflare
  2. Haga clic en Add a Site (botón azul grande)
  3. Ingrese el nombre de su dominio (por ejemplo, tudominio.com)
    • No incluya www. o https://
    • Solo el dominio: tudominio.com
  4. Haga clic en Continue
  5. Seleccione el plan Free y haga clic en Continue
  6. Cloudflare escaneará sus registros DNS existentes - haga clic en Continue
  7. Cloudflare le muestra dos servidores de nombres como:
    • bella.ns.cloudflare.com
    • troy.ns.cloudflare.com
  8. Copie estos servidores de nombres - los necesitará en el siguiente paso

Actualizar los servidores de nombres de su dominio

Ahora debe apuntar su dominio a Cloudflare:

  1. Inicie sesión en su registrador de dominios (donde compró su dominio):
  2. Busque la configuración de DNS o Servidores de nombres de su dominio
  3. Reemplace los servidores de nombres existentes con los servidores de nombres de Cloudflare
  4. Guarde los cambios

Los cambios de servidores de nombres tardan tiempo. Puede tardar desde 5 minutos hasta 48 horas en propagarse. Generalmente se completa en 30 minutos.

Cloudflare le enviará un correo electrónico cuando su dominio esté activo.

¿Usa hosting compartido? Aún puede agregar su dominio a Cloudflare. Su hosting existente continuará funcionando - Cloudflare simplemente se convierte en un proxy frente a él. Su sitio web seguirá funcionando normalmente.


Paso 3: Crear el Worker

  1. En la barra lateral del panel de control de Cloudflare, haga clic en Workers & Pages
  2. Haga clic en el botón azul Create
  3. Haga clic en Create Worker
  4. Dale a tu worker un nombre: zenovay-proxy
    • Use solo letras minúsculas, números y guiones
    • No se permiten espacios
  5. Haga clic en Deploy

Verá un mensaje de éxito. Ahora necesitamos agregar el código del proxy.


Paso 4: Agregar el código del proxy

¡No se salte ningún paso! Copie el código exactamente como se muestra. Un carácter faltante romperá todo.

  1. Después de implementar, haga clic en Edit code (o vaya a su Worker y haga clic en "Edit code")
  2. Verá un editor de código con algo de código predeterminado
  3. Seleccione TODO el código existente (Cmd+A en Mac, Ctrl+A en Windows)
  4. Elimínelo (presione Delete o Backspace)
  5. Copie y pegue el siguiente código:
Zenovay Proxy Worker - Copie Todo Este CódigoJavaScript
// Zenovay First-Party Proxy Worker
// This proxies tracking requests through your domain to bypass ad blockers

export default {
async fetch(request) {
  const url = new URL(request.url);

  // Get the real visitor IP address (for accurate geolocation)
  const clientIP = request.headers.get('CF-Connecting-IP') || '';

  // Determine the target URL based on the request path
  let targetUrl;
  if (url.pathname === '/script.js' || url.pathname === '/z.js') {
    // Script requests go to the regular endpoint
    targetUrl = `https://api.zenovay.com/z.js${url.search}`;
  } else {
    // All other requests (events, settings) go through first-party endpoint
    targetUrl = `https://api.zenovay.com/fp${url.pathname}${url.search}`;
  }

  // Copy the original request headers
  const headers = new Headers(request.headers);

  // IMPORTANT: Forward the real visitor IP for accurate geolocation
  headers.set('X-Zenovay-Real-IP', clientIP);

  // Remove the Host header (we're proxying to a different domain)
  headers.delete('Host');

  // Handle CORS preflight requests
  if (request.method === 'OPTIONS') {
    return new Response(null, {
      status: 204,
      headers: {
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
        'Access-Control-Allow-Headers': 'Content-Type',
      },
    });
  }

  try {
    // Forward the request to Zenovay API
    const response = await fetch(targetUrl, {
      method: request.method,
      headers: headers,
      body: request.body,
    });

    // Add CORS headers to the response
    const responseHeaders = new Headers(response.headers);
    responseHeaders.set('Access-Control-Allow-Origin', '*');

    // Return the response to the visitor's browser
    return new Response(response.body, {
      status: response.status,
      headers: responseHeaders,
    });
  } catch (error) {
    // If something goes wrong, return an error
    return new Response(JSON.stringify({ error: 'Proxy error' }), {
      status: 502,
      headers: { 'Content-Type': 'application/json' },
    });
  }
}
}
  1. Haga clic en Save and Deploy (esquina superior derecha)
  2. Espere el mensaje "Worker deployed successfully"

¿Se copió el código correctamente? Debería ver "Worker deployed successfully" en la parte superior. Si ve algún error, asegúrese de haber copiado TODO el código incluyendo la apertura export default { y el cierre }.


Paso 5: Agregar su dominio personalizado

CRÍTICO: DEBE usar z.tudominio.com

Firefox y Edge bloquean automáticamente estos subdominios:

  • analytics.tudominio.com — BLOQUEADO
  • metrics.tudominio.com — BLOQUEADO
  • tracking.tudominio.com — BLOQUEADO
  • stats.tudominio.com — BLOQUEADO
  • telemetry.tudominio.com — BLOQUEADO
  • pixel.tudominio.com — BLOQUEADO

El ÚNICO subdominio recomendado es: z.tudominio.com

Este es un subdominio de una sola letra neutral que los navegadores no bloquean.

Ahora conectemos su Worker a su dominio:

  1. Vaya a su Worker en el panel de control de Cloudflare
  2. Haga clic en la pestaña Settings (no "Triggers" - se trasladó a Settings)
  3. Desplácese hacia abajo para encontrar la sección Domains & Routes
  4. Haga clic en AddCustom Domain
  5. Ingrese su subdominio: z.tudominio.com
    • Reemplace tudominio.com con su dominio real
    • Mantenga el prefijo z. exactamente como se muestra
  6. Haga clic en Add Custom Domain
  7. Cloudflare automáticamente:
    • Creará un registro DNS para z.tudominio.com
    • Aprovisionará un certificado SSL (HTTPS)
    • Esto toma 1-2 minutos

Espere la marca de verificación verde. Su dominio personalizado mostrará "Initializing" y luego cambiará a "Active" con una marca de verificación verde. No continúe hasta que vea la marca de verificación verde.


Paso 6: Probar su Worker

Antes de agregar el script de seguimiento, asegurémonos de que el Worker esté funcionando:

  1. Abra una nueva pestaña del navegador
  2. Vaya a: https://z.tudominio.com/script.js
    • Reemplace tudominio.com con su dominio real
  3. Debería ver código JavaScript (un montón de código minificado)

¿Ve código JavaScript? Su Worker está funcionando correctamente. Continúe al Paso 7.

¿Ve un error o página en blanco?

  • Verifique que su dominio personalizado muestre "Active" en Cloudflare
  • Espere 2-3 minutos e intente de nuevo
  • Asegúrese de haber escrito la URL correctamente

Paso 7: Agregar el script de seguimiento a su sitio web

IMPORTANTE: Debe usar el método de script en línea que se muestra a continuación.

El simple método <script src="..."> NO funciona de manera confiable con Cloudflare Workers porque:

  1. Cloudflare Rocket Loader puede interferir con la carga del script
  2. La configuración debe establecerse ANTES de que se cargue el script

Use el método de script en línea que se muestra a continuación.

Agregue este código a la sección <head> de su sitio web. Puede encontrar su código de seguimiento en Dominios → su sitio → General en la aplicación Zenovay.

Tarjeta de script de seguimiento que muestra el fragmento de script con pestañas HTML, React, Next.js y First-Party
Su código de seguimiento y fragmento de script están en la página General de la configuración de su dominio.
Agregue esto a la sección <head> de su HTMLHTML
<script data-cfasync="false">
window.ZENOVAY_TRACKER_CONFIG = {
trackingCode: 'YOUR_TRACKING_CODE',
apiUrl: 'https://z.tudominio.com',
settingsEndpoint: '/settings'
};
var script = document.createElement('script');
script.src = 'https://z.tudominio.com/script.js';
script.defer = true;
document.head.appendChild(script);
</script>

Qué reemplazar:

Marcador de posiciónReemplazar conEjemplo
YOUR_TRACKING_CODESu código de seguimiento desde el panel de ZenovayZV_Q8U0GYD70WR
z.tudominio.com (aparece 2 veces)Su dominio personalizado realz.misitio.com

¡Reemplace AMBAS apariciones de z.tudominio.com! Hay dos lugares en el código donde debe poner su dominio.

Ejemplo con valores reales:

Ejemplo con valores reales completosHTML
<script data-cfasync="false">
window.ZENOVAY_TRACKER_CONFIG = {
trackingCode: 'ZV_Q8U0GYD70WR',
apiUrl: 'https://z.misitio.com',
settingsEndpoint: '/settings'
};
var script = document.createElement('script');
script.src = 'https://z.misitio.com/script.js';
script.defer = true;
document.head.appendChild(script);
</script>

Dónde agregar este código:

  • WordPress: Use un complemento como "Insert Headers and Footers" o agregue a su tema header.php
  • Wix: Settings → Custom Code → Head Code
  • Squarespace: Settings → Advanced → Code Injection → Header
  • Shopify: Online Store → Themes → Edit Code → theme.liquid (en la sección <head>)
  • Archivos HTML: Entre las etiquetas <head> y </head>
  • Cualquier CMS: Busque "Custom Code" o "Header Scripts" en su configuración

Paso 8: Verificar que funciona

Verificación 1: Pestaña Network (Cualquier navegador)

  1. Abra su sitio web en Chrome, Firefox o Edge
  2. Presione F12 (o Cmd+Option+I en Mac) para abrir DevTools
  3. Haga clic en la pestaña Network
  4. Actualice su sitio web (Cmd+R o Ctrl+R)
  5. En el cuadro de filtro/búsqueda, escriba script.js
  6. Busque una solicitud a z.tudominio.com/script.js

Lo que debería ver:

  • Status: 200 (OK)
  • Domain: z.tudominio.com (su dominio, no api.zenovay.com)

Verificación 2: Modo estricto de Firefox (¡Lo más importante!)

Firefox tiene la protección de seguimiento más estricta. Si funciona en Firefox, funciona en todos lados.

  1. Abra el navegador Firefox
  2. Haga clic en el menú (☰) → Settings
  3. Haga clic en Privacy & Security en la barra lateral izquierda
  4. En "Enhanced Tracking Protection", seleccione Strict
  5. Cierre Settings y visite su sitio web
  6. Abra DevTools (F12) → pestaña Network
  7. Actualice la página
  8. Busque script.js - debería cargarse con estado 200

¿Funciona en modo estricto de Firefox? ¡Felicidades! Su seguimiento de primera parte está configurado correctamente y funcionará en TODOS los navegadores.

Verificación 3: Panel de Zenovay

  1. Vaya a app.zenovay.com e inicie sesión
  2. Haga clic en su sitio web
  3. Visite su sitio web en otra pestaña
  4. En 1-2 minutos, debería ver la visita aparecer en su panel de control

Lista de verificación final

Antes de terminar, verifique TODOS estos puntos:

  • Worker implementado en z.tudominio.com (respondiendo con código JavaScript)
  • El dominio personalizado usa el prefijo z. (NO analytics., metrics., etc.)
  • La etiqueta de script incluye el atributo data-cfasync="false"
  • window.ZENOVAY_TRACKER_CONFIG está establecido con el trackingCode correcto
  • Ambas URLs en el script usan su dominio personalizado z.tudominio.com
  • Probado en Firefox con Protección Mejorada de Seguimiento establecida en Strict
  • Las visitas aparecen en el panel de Zenovay

Solución de problemas

El Worker devuelve el error 522 o 524

Causa: Agotamiento del tiempo de conexión a la API de Zenovay.

Solución:

  1. Verifique que api.zenovay.com sea accesible (visite en su navegador)
  2. Verifique que no haya errores tipográficos en el código del proxy
  3. Intente reimplementar el worker (Edit code → Save and Deploy)

El dominio personalizado muestra error de SSL

Causa: Certificado SSL no se ha aprovisionado aún.

Solución: Espere 1-5 minutos. Cloudflare provisiona automáticamente certificados SSL. Si tarda más de 10 minutos, verifique que los servidores de nombres de su dominio apunten correctamente a Cloudflare.

El script se carga pero no hay datos en el panel de control

Causa: Generalmente una falta de coincidencia del código de seguimiento.

Solución:

  1. Abra la Consola DevTools de su navegador (F12 → pestaña Console)
  2. Busque mensajes de error en rojo
  3. Verifique que su trackingCode coincida exactamente con lo que está en su panel de Zenovay (¡sensible a mayúsculas!)
  4. Asegúrese de que el dominio del sitio web esté registrado en Zenovay

"El script se ejecuta" Pero nada sucede

Causa: El apiUrl en su configuración es incorrecto.

Solución: Asegúrese de que su window.ZENOVAY_TRACKER_CONFIG tenga el apiUrl correcto:

apiUrl: 'https://z.tudominio.com',  // Su dominio personalizado real

La geolocalización muestra la ubicación incorrecta

Causa: La IP real no se está reenviando a Zenovay.

Solución: Asegúrese de que su código de worker incluya esta línea:

headers.set('X-Zenovay-Real-IP', clientIP);

Firefox/Edge sigue bloqueando

Causa: Está usando un subdominio bloqueado como analytics.* o metrics.*.

Solución: Cambie su dominio personalizado a z.tudominio.com. Necesitará:

  1. Vaya a Workers & Pages → Su Worker → Settings
  2. Elimine el dominio personalizado anterior
  3. Agregue nuevo dominio personalizado: z.tudominio.com
  4. Actualice ambas URLs en su script de seguimiento

Avanzado: Múltiples sitios web

Si tiene múltiples sitios web, puede usar un worker para todos ellos:

  1. Agregue múltiples dominios personalizados al mismo worker:

    • z.website1.com
    • z.website2.com
    • z.website3.com
  2. Cada sitio web usa su propio código de seguimiento:

Website 1HTML
<script data-cfasync="false">
window.ZENOVAY_TRACKER_CONFIG = {
  trackingCode: 'ZV_SITE1CODE',
  apiUrl: 'https://z.website1.com',
  settingsEndpoint: '/settings'
};
var s = document.createElement('script');
s.src = 'https://z.website1.com/script.js';
s.defer = true;
document.head.appendChild(s);
</script>
Website 2HTML
<script data-cfasync="false">
window.ZENOVAY_TRACKER_CONFIG = {
  trackingCode: 'ZV_SITE2CODE',
  apiUrl: 'https://z.website2.com',
  settingsEndpoint: '/settings'
};
var s = document.createElement('script');
s.src = 'https://z.website2.com/script.js';
s.defer = true;
document.head.appendChild(s);
</script>

Siguientes pasos


¿Necesita ayuda?

Si está atrapado:

  1. Verifique dos veces cada paso anterior
  2. Asegúrese de estar usando z.tudominio.com (no analytics.* o metrics.*)
  3. Pruebe en modo estricto de Firefox
  4. Verifique la consola del navegador para errores (F12 → pestaña Console)

¿Aún atrapado? Póngase en contacto con el soporte en [email protected] con:

  • Su nombre de dominio
  • Captura de pantalla de la pestaña Network
  • Cualquier mensaje de error de la pestaña Console
¿Fue útil esta página?