Seguimiento de Primera Parte con Netlify
Configura un proxy de primera parte en Netlify usando reglas de redirección simples. Funciona con cualquier sitio estático o framework.
Dificultad: Fácil - Solo agrega algunas líneas a un archivo de configuración.
Por qué Funciona (Mismo Origen)
Este enfoque utiliza /api/_z/script.js que está en el mismo origen que tu sitio web. Firefox ETP y otras protecciones de seguimiento solo bloquean solicitudes de origen cruzado.
- El navegador ve:
tudominio.com/api/_z/script.js→ Mismo origen ✅ - Netlify redirige la solicitud al servidor de Zenovay (el navegador nunca ve esto)
- Toda la protección de seguimiento se evita porque la solicitud es de primera parte
Antes de Comenzar
Asegúrate de tener:
- Un proyecto implementado en Netlify
- Tu código de seguimiento de Zenovay (se encuentra en Dominios → tu sitio → General, en la tarjeta de script de seguimiento)
- Acceso a la configuración de compilación de tu proyecto
Formato de tu Código de Seguimiento
Tu código de seguimiento se ve así: ZV_XXXXXXXXXX
- Comienza con
ZV_ - Seguido por 10 caracteres (letras y números)
- SENSIBLE A MAYÚSCULAS - cópialo exactamente
Ejemplo: ZV_Q8U0GYD70WR

Opción 1: Usando Archivo _redirects (Lo Más Simple)
La forma más fácil de configurar el proxy es usar el archivo _redirects de Netlify.
Paso 1: Crear el Archivo de Redirecciones
Crea un archivo _redirects en tu carpeta public/ (o donde sea que vayan tus activos estáticos):
# Proxy de seguimiento de primera parte de Zenovay
/api/_z/* https://api.zenovay.com/fp/:splat 200Cómo funciona: El código de estado 200 hace que esto sea una reescritura (proxy) en lugar de una redirección. El navegador ve tu dominio, pero Netlify obtiene datos del API de Zenovay detrás de escenas.
Paso 2: Agregar el Script de Seguimiento
<script defer
data-tracking-code="TU_CODIGO_DE_SEGUIMIENTO"
src="/api/_z/script.js">
</script>Paso 3: Implementar
netlify deploy --prodO empuja a tu repositorio de Git si tienes implementación continua configurada.
Opción 2: Usando netlify.toml (Más Explícito)
Para configuraciones más complejas, usa netlify.toml:
Paso 1: Crear o Actualizar netlify.toml
Agrega la regla de redirección a tu netlify.toml en la raíz de tu proyecto:
# Proxy de seguimiento de primera parte de Zenovay
[[redirects]]
from = "/api/_z/*"
to = "https://api.zenovay.com/fp/:splat"
status = 200
force = trueSi ya tienes un netlify.toml, agrega la redirección a tu archivo existente:
[build]
command = "npm run build"
publish = "dist"
# Proxy de seguimiento de primera parte de Zenovay
[[redirects]]
from = "/api/_z/*"
to = "https://api.zenovay.com/fp/:splat"
status = 200
force = true
# Tus otras redirecciones...
[[redirects]]
from = "/*"
to = "/index.html"
status = 200¡El orden importa! Pon la redirección de Zenovay ANTES de cualquier redirección general (como alternativas SPA). Netlify procesa las redirecciones en orden.
Paso 2: Agregar el Script de Seguimiento
<script defer
data-tracking-code="TU_CODIGO_DE_SEGUIMIENTO"
src="/api/_z/script.js">
</script>Paso 3: Implementar
netlify deploy --prodEjemplos Específicos del Framework
React (Create React App)
/api/_z/* https://api.zenovay.com/fp/:splat 200<!DOCTYPE html>
<html lang="en">
<head>
<script defer data-tracking-code="TU_CODIGO_DE_SEGUIMIENTO" src="/api/_z/script.js"></script>
<!-- otros elementos head -->
</head>
<body>
<div id="root"></div>
</body>
</html>Vue.js (Vite)
/api/_z/* https://api.zenovay.com/fp/:splat 200<!DOCTYPE html>
<html lang="en">
<head>
<script defer data-tracking-code="TU_CODIGO_DE_SEGUIMIENTO" src="/api/_z/script.js"></script>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>Gatsby
[build]
command = "gatsby build"
publish = "public"
[[redirects]]
from = "/api/_z/*"
to = "https://api.zenovay.com/fp/:splat"
status = 200
force = trueimport React from 'react'
export const onRenderBody = ({ setHeadComponents }) => {
setHeadComponents([
<script
key="zenovay"
defer
data-tracking-code="TU_CODIGO_DE_SEGUIMIENTO"
src="/api/_z/script.js"
/>
])
}Hugo
/api/_z/* https://api.zenovay.com/fp/:splat 200<script defer data-tracking-code="TU_CODIGO_DE_SEGUIMIENTO" src="/api/_z/script.js"></script>11ty (Eleventy)
/api/_z/* https://api.zenovay.com/fp/:splat 200Asegúrate de que _redirects se copie a la salida agregando a tu .eleventy.js:
module.exports = function(eleventyConfig) {
eleventyConfig.addPassthroughCopy("src/_redirects");
// ... resto de la configuración
}Verificar que Funcione
Verificar en el Panel de Netlify
- Ve a tu sitio en el Panel de Netlify
- Haz clic en Configuración del sitio → Redirecciones
- Deberías ver tu redirección
/api/_z/*listada
Verificar la Pestaña de Red
- Visita tu sitio implementado
- Abre DevTools (F12)
- Ve a la pestaña Network
- Recarga la página
- Busca
/api/_z/script.js
Deberías ver:
- Estado: 200
- Dominio: Tu dominio de Netlify
- Respuesta: Código JavaScript
Probar en Modo Estricto de Firefox
- Abre Firefox
- Configuración → Privacidad y Seguridad → Protección de Seguimiento Mejorada: Estricto
- Visita tu sitio
- Verifica que el script se cargue correctamente
Solución de Problemas
La Redirección Devuelve 404
Causa: El archivo _redirects no se está publicando o está en el lugar equivocado.
Solución:
- Asegúrate de que
_redirectsesté en tu directorio de publicación (generalmentepublic/odist/) - Para herramientas de compilación, asegúrate de que el archivo se copie durante la compilación
- Revisa el Panel de Netlify → Redirecciones para ver si se reconoce
La Redirección Causa un Bucle
Causa: Otra redirección está interfiriendo.
Solución:
- Usa
force = trueennetlify.tomlpara anular otras reglas - Asegúrate de que la redirección de Zenovay venga ANTES de las reglas generales
- Busca reglas conflictivas en
_redirectsynetlify.toml
El Script se Carga Pero Devuelve HTML
Causa: Una redirección general de SPA está interceptando la solicitud.
Solución: Pon la redirección de Zenovay ANTES de tu alternativa SPA:
# Esto DEBE venir primero
[[redirects]]
from = "/api/_z/*"
to = "https://api.zenovay.com/fp/:splat"
status = 200
force = true
# La alternativa SPA viene después
[[redirects]]
from = "/*"
to = "/index.html"
status = 200La Geolocalización Muestra una Ubicación Incorrecta
Causa: El proxy de Netlify no reenvía automáticamente la IP del cliente.
Solución: Desafortunadamente, las redirecciones simples de Netlify no admiten encabezados personalizados. La geolocalización se basará en la ubicación del servidor edge de Netlify. Para una geolocalización precisa, considera:
- Usar Netlify Functions (Edge Functions) - configuración más compleja
- Usar Cloudflare Workers frente a Netlify
Avanzado: Usando Netlify Edge Functions
Para más control (incluido el reenvío de IP), puedes usar Netlify Edge Functions:
import type { Context } from '@netlify/edge-functions'
export default async (request: Request, context: Context) => {
const url = new URL(request.url)
const path = url.pathname.replace('/api/_z/', '')
const targetUrl = `https://api.zenovay.com/fp/${path}${url.search}`
// Obtener IP del cliente
const clientIP = context.ip || ''
const headers = new Headers(request.headers)
headers.set('X-Zenovay-Real-IP', clientIP)
headers.delete('Host')
const response = await fetch(targetUrl, {
method: request.method,
headers: headers,
body: request.body,
})
const responseHeaders = new Headers(response.headers)
responseHeaders.set('Access-Control-Allow-Origin', '*')
return new Response(response.body, {
status: response.status,
headers: responseHeaders,
})
}
export const config = {
path: '/api/_z/*',
}Ejemplo Completo
my-netlify-site/
├── netlify.toml
├── public/
│ ├── _redirects
│ └── index.html
├── src/
│ └── ...
└── package.json[build]
command = "npm run build"
publish = "dist"
[[redirects]]
from = "/api/_z/*"
to = "https://api.zenovay.com/fp/:splat"
status = 200
force = true<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>My Site</title>
<script defer data-tracking-code="TU_CODIGO_DE_SEGUIMIENTO" src="/api/_z/script.js"></script>
</head>
<body>
<div id="app"></div>
</body>
</html>Lista de Verificación Final
Antes de terminar, verifica TODO esto:
-
_redirectsonetlify.tomltiene la regla de redirección de Zenovay - La regla de redirección viene ANTES de cualquier regla general de SPA
- La etiqueta de script usa
/api/_z/script.js(no la URL directa de Zenovay) - El atributo
data-tracking-codecontiene tu código de seguimiento correcto - El proyecto está implementado (no solo ejecutándose localmente)
- Probado en Firefox con la Protección de Seguimiento Mejorada establecida en Estricto
- Las visitas aparecen en el panel de Zenovay
Próximos Pasos
- Eventos Personalizados - Seguimiento de interacciones de usuarios
- Identificación de Visitantes - Vincula análisis a usuarios
- Solución de Problemas - Más ayuda con problemas