Plausible Analytics para Astro con Cloudflare Workers
Haz proxy de Plausible Analytics a través de Cloudflare Workers en tu sitio Astro. Configuración gratuita con 100.000 solicitudes/día que evita los bloqueadores de anuncios para obtener estadísticas de visitantes reales y precisas.
Actualizado Publicado 29 min de lectura

Plausible Analytics es una alternativa a Google Analytics de código abierto y centrada en la privacidad. Es ligera (script de menos de 1 KB), no usa cookies y no rastrea datos personales. Con más de 19.000 suscriptores de pago y 260.000 millones de páginas vistas registradas, es la herramienta de analítica centrada en la privacidad más popular entre los desarrolladores.
Puedes autoalojar Plausible en tus propios servidores. Consulta Instalar Plausible con un clic para una configuración rápida, o usa uno de los mejores paneles de servidores autoalojados para un despliegue sencillo.
Astro es un framework web construido para la velocidad, y ahora se ejecuta de forma nativa en Cloudflare. Tras la adquisición de Astro por Cloudflare en enero de 2026, el adaptador @astrojs/cloudflare eliminó por completo el soporte para Pages. Desde la v13, los despliegues se hacen exclusivamente en Cloudflare Workers. Puedes desplegar tu sitio Astro en Cloudflare o crear un blog gratis con Astro y Cloudflare para empezar. Para un análisis más profundo de los frameworks disponibles, consulta la comparativa Astro vs Next.js vs TanStack Start.
En esta guía vas a configurar Plausible Analytics para tu sitio Astro usando Cloudflare Workers como proxy. El resultado: analítica precisa que evita los bloqueadores de anuncios, servida desde tu propio dominio y con un plan gratuito.
- Registra datos reales de visitantes sin interferencia de bloqueadores de anuncios
- Sirve los scripts de Plausible a través de tu propio dominio mediante Cloudflare Workers
- Configuración gratuita (100.000 solicitudes/día en el plan gratis de Cloudflare)
- Funciona con Plausible Cloud o con Plausible Community Edition autoalojado
¿Por qué hacer proxy de Plausible Analytics a través de Cloudflare Workers?
Los bloqueadores de anuncios y los navegadores centrados en la privacidad bloquean habitualmente las solicitudes a plausible.io. Esto puede hacerte perder entre el 20 y el 30 % de tus datos de analítica. Si usas herramientas como NextDNS o bloqueadores de anuncios en el navegador en tus propios dispositivos, ya sabes lo agresivos que son bloqueando scripts de analítica.
Un proxy resuelve esto enrutando las solicitudes de Plausible a través de tu propio dominio. Para los navegadores de tus visitantes, el script de analítica parece parte de tu sitio, no un rastreador de terceros. Los bloqueadores de anuncios no pueden distinguirlo del tráfico normal del sitio.
Funciona con cualquier sitio estático
Este enfoque de proxy funciona con cualquier generador de sitios estáticos o framework, no solo con Astro. Hugo, Next.js, Eleventy, HTML puro. Si puedes añadir una etiqueta script en el head, puedes usar esta configuración. El Cloudflare Worker se encarga del proxy independientemente de tu herramienta de build.
Para más información sobre cómo bloquear anuncios y rastreadores a nivel de DNS, consulta cómo bloquear anuncios y rastreo con protección DNS.
¿Por qué usar Cloudflare Workers en lugar de redirecciones?
Si despliegas en Cloudflare Pages, podrías pensar que puedes usar el archivo _redirects para hacer proxy de las solicitudes de Plausible. No puedes. Cloudflare Pages solo admite redirecciones a rutas relativas. No puede hacer proxy hacia URLs externas.
Intentar añadir una redirección de proxy como esta fallará:
Found invalid redirect lines:
09:59:12.187 - #1: /js/script.js https://domain.com/js/plausible.outbound-links.js 200
09:59:12.187 Proxy (200) redirects can only point to relative paths. Got https://domain.com/js/plausible.outbound-links.js
09:59:12.187 - #2: /api/event https://domain.com/api/event 200
09:59:12.187 Proxy (200) redirects can only point to relative paths. Got https://domain.com/api/eventLos Cloudflare Workers no tienen esta limitación. Pueden hacer fetch a cualquier URL externa y devolver la respuesta, lo que los convierte en la herramienta adecuada para hacer proxy de Plausible en Cloudflare.
Hacer proxy de Plausible a través de Cloudflare Workers (paso a paso)
Cloudflare Workers ofrece un plan gratuito con 100.000 solicitudes al día. Es más que suficiente para la mayoría de los sitios. Todo lo que necesitas es una cuenta gratuita de Cloudflare.
El plan gratuito es suficiente
El plan gratuito de Cloudflare Workers incluye 100.000 solicitudes/día. Un sitio típico que carga el script de Plausible una vez por página vista se mantendrá cómodamente dentro de este límite.
Paso 1: Crea un Worker
Ve a la sección Workers & Pages de tu panel de Cloudflare y haz clic en Create application. Luego haz clic en Create Worker en la pestaña Workers. Dale a tu worker un nombre que no sugiera analítica. Algo como theme-assets o cdn-helper funciona bien. Haz clic en Deploy.
Crear Cloudflare Worker:

Desplegar Cloudflare Worker:

Paso 2: Añade el código del Worker (ES Modules)
Haz clic en Edit Code, borra el código por defecto y sustitúyelo por el código de abajo.
La sintaxis de Service Worker está obsoleta
Cloudflare ha marcado como obsoleta la sintaxis antigua addEventListener('fetch', ...). El código de abajo usa el formato recomendado de ES Modules. Si actualizas desde una configuración anterior, reemplaza todo el script del worker.
Proxy en la nube (Plausible.io)
Usa esta versión si estás en el servicio cloud alojado de Plausible.
// Sustituye 'pa-XXXXX.js' por el ID de script específico de tu sitio
// Lo encuentras en Plausible: Site Settings → General → Data Snippets
const ProxyScript = 'https://plausible.io/js/pa-XXXXX.js';
const ScriptPath = '/theone/script';
const Endpoint = '/theone/event';
export default {
async fetch(request, env, ctx) {
ctx.passThroughOnException();
const url = new URL(request.url);
const pathname = url.pathname;
if (pathname.startsWith(ScriptPath)) {
return getScript(request, ctx);
} else if (pathname === Endpoint) {
return postData(request);
}
return new Response(null, { status: 404 });
}
}
async function getScript(request, ctx) {
let response = await caches.default.match(request);
if (!response) {
response = await fetch(ProxyScript);
ctx.waitUntil(caches.default.put(request, response.clone()));
}
return response;
}
async function postData(request) {
const req = new Request(request);
req.headers.delete('cookie');
return await fetch('https://plausible.io/api/event', req);
}Sustituye pa-XXXXX.js por el ID de script específico de tu sitio. Lo encuentras en tu panel de Plausible en Site Settings → General → Data Snippets. El segmento de ruta theone puede ser lo que quieras. Solo mantenlo igual en ScriptPath y Endpoint.
Autoalojado (Plausible CE)
Usa esta versión si ejecutas Plausible Community Edition en tu propio servidor.
// Sustituye por tu dominio de Plausible autoalojado
const ProxyScript = 'https://plausible.yourdomain.com/js/pa-XXXXX.js';
const ScriptPath = '/theone/script';
const Endpoint = '/theone/event';
export default {
async fetch(request, env, ctx) {
ctx.passThroughOnException();
const url = new URL(request.url);
const pathname = url.pathname;
if (pathname.startsWith(ScriptPath)) {
return getScript(request, ctx);
} else if (pathname === Endpoint) {
return postData(request);
}
return new Response(null, { status: 404 });
}
}
async function getScript(request, ctx) {
let response = await caches.default.match(request);
if (!response) {
response = await fetch(ProxyScript);
ctx.waitUntil(caches.default.put(request, response.clone()));
}
return response;
}
async function postData(request) {
const req = new Request(request);
req.headers.delete('cookie');
return await fetch('https://plausible.yourdomain.com/api/event', req);
}Sustituye plausible.yourdomain.com por tu dominio real de Plausible autoalojado, y pa-XXXXX.js por el ID de script específico de tu sitio.
Optimización de rendimiento (opcional)
Puedes reducir la latencia del proxy de ~140 ms a ~9 ms devolviendo una respuesta 202 inmediata y reenviando el evento de forma asíncrona. En la función postData, sustituye el return final por ctx.waitUntil(fetch(...)) y devuelve un new Response('OK', { status: 202 }). Nota: algunos usuarios han reportado problemas con el acceso al stream de la solicitud después de enviar la respuesta, así que pruébalo con cuidado.
Editar Worker:

Añadir código:

Una vez añadido el código, haz clic en Save and Deploy arriba a la derecha.
Paso 3: Verifica que el Worker funciona
Prueba tu worker accediendo a él directamente:
https://your-worker-name.your-cloudflare-username.workers.dev/theone/scriptDeberías ver código JavaScript como respuesta (el script de Plausible). Si obtienes un 404, comprueba que la variable ScriptPath de tu worker coincide con la ruta de URL que estás probando.
Paso 4: Ejecuta el proxy como un subdirectorio
Ejecutar el proxy bajo un subdirectorio de tu dominio principal (p. ej., example.com/theone/) es mejor que usar un subdominio separado. Mantiene las solicitudes como first-party, lo que evita restricciones de cookies y se ve más limpio en los logs de red.
Para configurarlo, añade una ruta de Worker en la sección Routes de los ajustes de tu Worker:
Route: *example.com/theone/*
Sustituye theone por el segmento de ruta que elegiste en el código del worker. Selecciona tu dominio en el desplegable de zona.

Paso 5: Añade el snippet de Plausible a tu sitio Astro
El formato del snippet ha cambiado
El antiguo formato data-domain / data-api está obsoleto. Plausible ahora usa un script específico por sitio (pa-XXXXX.js) con una llamada plausible.init() para el endpoint. Usa el formato de abajo.
Añade este snippet al <head> de tu sitio Astro. En Astro, puedes colocarlo en tu archivo de layout principal (p. ej., src/layouts/Layout.astro):
<script async src="https://yourdomain.com/theone/pa-XXXXX.js"></script>
<script>
window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)};
plausible.init=plausible.init||function(i){plausible.o=i||{}};
plausible.init({
endpoint: "https://yourdomain.com/theone/event"
})
</script>Sustituye lo siguiente:
yourdomain.com: el dominio real de tu sitiotheone: la ruta del subdirectorio que configuraste en los pasos 2 y 4pa-XXXXX.js: el ID de script específico de tu sitio en Plausible (Site Settings → General → Data Snippets)
La URL de endpoint debe coincidir con la variable Endpoint de tu Worker, y el src del script debe coincidir con ScriptPath. La URL del script pasa por tu Worker (que sirve el script de Plausible en caché), y la URL del endpoint enruta los eventos de analítica a través de tu Worker hacia la API de Plausible.
Ya deberías tener Plausible Analytics funcionando a través de Cloudflare Workers, servido desde tu propio dominio.
Precios de Plausible (2025)
Plausible ofrece varios niveles en la nube. Todos los planes incluyen las funciones de analítica principales: páginas vistas, visitantes, tasa de rebote, duración de la visita, fuentes de referencia y más.
| Plan | Precio | Páginas vistas | Sitios | Funciones destacadas |
|---|---|---|---|---|
| Starter | $9/mes | 10.000 | 1 | Analítica básica |
| Growth | $14/mes | 10.000 | 3 | 3 miembros de equipo |
| Business | $19/mes | 10.000 | 10 | Embudos, objetivos de ingresos, Stats API |
| Enterprise | Personalizado | Personalizado | Personalizado | SSO, Sites API, Managed Proxy |
Hay niveles de páginas vistas superiores disponibles en cada plan. El plan Enterprise incluye un Managed Proxy donde Plausible gestiona el proxy por ti mediante un registro CNAME. No necesitas Worker.
Si quieres evitar por completo los precios de la nube, la Community Edition es gratuita.
Plausible Community Edition vs Cloud
Plausible Community Edition (CE) es una versión gratuita y autoalojada bajo licencia AGPL. Sigue un modelo open-core. CE incluye el motor de analítica principal, pero algunas funciones avanzadas son exclusivas de los planes Business y Enterprise de la nube.
Plausible Cloud
Ventajas:
- Totalmente gestionado, sin servidor que mantener
- Todas las funciones, incluidos embudos, objetivos de ingresos y SSO
- Opción de Managed Proxy (plan Enterprise)
- Actualizaciones y parches de seguridad automáticos
- Stats API V2 para integraciones personalizadas
Desventajas:
- Coste mensual desde $9/mes
- Datos almacenados en la infraestructura de Plausible
Plausible Community Edition
Ventajas:
- Completamente gratis, autoalojado
- Control total sobre tus datos
- Licencia AGPL, código abierto
- Funciones de analítica principales incluidas
Desventajas:
- Sin embudos, objetivos de ingresos ni SSO
- Requiere un servidor autogestionado
- Actualizaciones y mantenimiento manuales
- Sin opción de Managed Proxy
Si autoalojas Plausible CE, proveedores de VPS asequibles como Hetzner Cloud o Hostinger VPS ofrecen un rendimiento sólido para ejecutar tu instancia. Consulta Instalar Plausible con un clic para las instrucciones de despliegue.
Los precios de los VPS subieron en general en 2026: si estás reconsiderando un servidor alquilado, mira qué cambió y cuándo gana un mini PC.
¿Puedo usar este proxy de Cloudflare Worker con Plausible CE?
Sí. El código del Worker es el mismo. Solo cambias la URL de ProxyScript y la URL del fetch en postData para que apunten a tu dominio de Plausible autoalojado en lugar de plausible.io. Usa la pestaña “Autoalojado (Plausible CE)” del paso 2 para el código correcto.
Solución de problemas comunes
Los datos de analítica no aparecen
Abre las herramientas de desarrollo de tu navegador (pestaña Red) y recarga tu sitio. Busca solicitudes a tu ruta de subdirectorio (p. ej., /theone/script y /theone/event). Si la solicitud del script devuelve 200 pero la del evento falla, comprueba que la URL de endpoint de tu snippet coincide exactamente con la variable Endpoint del Worker. Si no aparece ninguna de las dos solicitudes, verifica que el snippet está en el <head> y que no lo bloquean las cabeceras Content-Security-Policy.
El Worker devuelve 404
Verifica que el patrón de ruta del Worker coincide con tu subdirectorio. La ruta debe ser *example.com/theone/* (fíjate en el /* final). Comprueba también que las variables ScriptPath y Endpoint del código del Worker coinciden con las rutas de tu snippet. Asegúrate de que el Worker está desplegado (no solo guardado como borrador).
Errores de CORS en la consola
Como el proxy se ejecuta en tu propio dominio, las solicitudes deberían ser same-origin y CORS no debería activarse. Si ves errores de CORS, lo más probable es que la ruta del Worker esté mal configurada. Puede que las solicitudes lleguen a Plausible directamente en lugar de pasar por el Worker. Revisa el patrón de ruta y asegúrate de que las URLs del snippet apuntan a tu dominio, no a plausible.io.
El panel de Plausible muestra 0 visitantes
Primero, verifica que estás mirando el sitio correcto en tu panel de Plausible. Si cambiaste recientemente al nuevo formato de snippet, asegúrate de que el antiguo snippet data-domain está completamente eliminado. Tener ambos puede causar conflictos. Comprueba también que tu propio navegador no esté bloqueando las solicitudes durante las pruebas (desactiva el bloqueador de anuncios para tu propio dominio).
Novedades de Plausible desde 2023
Plausible ha lanzado muchas funciones desde que se publicó este artículo. Estas son las más destacadas:
- Seguimiento automático de la profundidad de scroll (sin configuración)
- Canal de tráfico de asistentes de IA: registra visitas desde ChatGPT, Claude, Gemini y Perplexity
- User Journeys: visualiza cómo navegan los visitantes por tu sitio
- Seguimiento automático de envíos de formularios (activable)
- Objetivos de ingresos y atribución de ecommerce (plan Business)
- Embudos para análisis de conversión de varios pasos (plan Business)
- Stats API V2 con consultas más sencillas y soporte multidimensional
- Integración con Search Console: datos de palabras clave en tu panel
- Importación desde Google Analytics (tanto UA como GA4)
- Alertas de caída de tráfico por email o Slack
- Mejoras de seguridad con 2FA y SSO
- Métrica “Tiempo en la página” mejorada, basada en señales de interacción
- Formato de script específico por sitio (
pa-XXXXX.js) que reemplaza al genéricoscript.js
Si también estás trabajando en el rendimiento de tu sitio Astro, consulta cómo optimizar la velocidad de build de Astro o migra Astro a Bun en Cloudflare para builds más rápidos.
Ver el changelog completo de PlausiblePreguntas frecuentes
¿Funciona esto con frameworks distintos de Astro?
Sí. El proxy con Cloudflare Worker es completamente agnóstico al framework. Funciona con cualquier generador de sitios estáticos (Hugo, Eleventy, Next.js, Gatsby) o incluso con HTML puro. El único requisito es poder añadir una etiqueta script en el <head> de tu sitio. El Worker se encarga de todo el proxy independientemente de lo que haya generado el HTML.
¿Qué es el Managed Proxy de Plausible?
El Managed Proxy de Plausible es una función exclusiva del plan Enterprise. En lugar de configurar y mantener tu propio Cloudflare Worker, añades un registro CNAME que apunta a la infraestructura de proxy de Plausible. Ellos se encargan del resto. Es una buena opción para equipos que quieren la ventaja del proxy sin gestionar Workers, pero requiere un plan Enterprise.
¿Cuánto tráfico admite el plan gratuito de Workers?
El plan gratuito de Cloudflare Workers permite 100.000 solicitudes al día. Como el script de Plausible queda en caché en el Worker, la mayoría de las páginas vistas solo cuentan como una solicitud (el POST del evento). Para un sitio con tráfico medio, 100.000 solicitudes se traducen en unas 80.000 a 100.000 páginas vistas al día. Eso cubre a la gran mayoría de los sitios. Si necesitas más, el plan de pago de Cloudflare ($5/mes) incluye 10 millones de solicitudes al mes.
¿Puedo usar Cloudflare Zaraz en su lugar?
Cloudflare Zaraz es un gestor de etiquetas que carga scripts de terceros a través de la infraestructura de Cloudflare. De momento, Plausible no está soportado oficialmente como integración de Zaraz. El enfoque de proxy con Worker descrito en este artículo sigue siendo la forma recomendada de hacer proxy de Plausible en Cloudflare. Si Zaraz añade soporte para Plausible en el futuro, podría simplificar la configuración.


