Fundaia

Entrar Empezar

Analítica web

Cada servicio con dirección pública tiene analítica desde el primer día, sin instalar nada. Toda petición pasa por la pasarela de la plataforma antes de llegar a tu servicio, así que es ella la que cuenta las visitas: no hay script que cargar, ni cookies, ni banner de consentimiento, ni un tercero que vea a tus visitantes. Se abre en la pestaña Analítica del servicio.

Qué se cuenta

Una página vista es una petición GET que tu servicio contestó con un 2xx o un 304 y que el navegador pidió como página: lo dice la cabecera Sec-Fetch-Dest: document (todos los navegadores actuales la envían) o, si falta, que la respuesta sea HTML. Por eso no cuentan las imágenes, el CSS, las llamadas fetch de tu propia página ni las precargas (Sec-Purpose: prefetch).

Nunca cuentan:

  • los bots: buscadores, rastreadores de IA, vistas previas de enlaces (Slack, WhatsApp, Discord…), navegadores sin cabeza, curl y cualquier cliente que no se presente como un navegador;
  • los monitores de la propia plataforma, que se identifican como Fundaia-Monitor;
  • lo que la pasarela contestó ella misma: una IP fuera de la lista, el modo mantenimiento, la contraseña, el límite de peticiones o una redirección.

De cada página vista se guarda:

DimensiónDe dónde sale
PáginaLa ruta, sin la consulta (/precios?plan=pro cuenta como /precios)
Fuenteutm_source (o ref) si viene en la dirección; si no, el dominio de Referer. Navegar dentro del propio sitio no es una fuente, y sin nada se cuenta como Directo
Campañautm_campaign
PaísCF-IPCountry, la cabecera que pone Cloudflare. Con el ingress propio no hay geolocalización y sale Desconocido
Navegador, sistema y dispositivoDel User-Agent, leído en la plataforma: ordenador, móvil o tableta

Además, Respuestas cuenta todas las peticiones que contestó el servicio (páginas o no) por clase: 2xx, 3xx, 4xx y 5xx.

Visitantes únicos sin guardar a nadie

Para saber que dos páginas son de la misma persona, la pasarela calcula un resumen de la dirección IP y del navegador mezclados con un secreto aleatorio que cambia cada día a medianoche UTC y solo vive en memoria. Ese secreto no se escribe nunca, así que el resumen de ayer no se puede volver a calcular, ni por nosotros ni por nadie que se lleve la base de datos. Ni la IP, ni el navegador, ni el resumen se guardan: lo único que llega a la base de datos es cuántos visitantes distintos hubo.

Hasta unos miles de visitantes al día se cuentan exactamente; por encima, con un estimador (HyperLogLog) que se equivoca menos de un 2 % y ocupa siempre lo mismo.

Consecuencias que conviene saber:

  • un visitante que vuelve otro día cuenta otra vez, igual que en Plausible: en 7 días, los visitantes son la suma de los de cada día;
  • en la vista de 24 horas, cada visitante aparece en la hora en que llegó por primera vez ese día;
  • si la plataforma se reinicia, el secreto cambia y quien vuelva ese mismo día cuenta como nuevo;
  • no hay visitas ni rebote: sin sesiones ni cookies no se pueden calcular sin inventárselos.

Cómo se guarda

Nada se escribe por cada petición. La pasarela suma en memoria por servicio, hora y valor, y cada minuto escribe todo de una vez; por eso lo que ves incluye el minuto en curso aunque aún no esté en disco. Para que la memoria no crezca, cada servicio guarda al día hasta 300 páginas distintas, 100 fuentes y 50 campañas: el resto se agrupa como Otras.

Las horas se guardan 8 días y los días 400; se borran solas.

Los periodos

La pestaña compara siempre con el periodo anterior de la misma longitud: últimas 24 horas (por horas), 7, 30 y 90 días y 12 meses (por días, en UTC).

Apagarla

Es un ajuste del servicio, en Ajustes › Analítica, y deja de contar al momento, sin reiniciar nada. Lo ya contado se queda.

fundaia settings tienda web --analytics off
fundaia analytics tienda web --range 30d
fundaia analytics tienda --json        # todo el proyecto

Por MCP, read_web_analytics lee lo mismo (con service o sin él) y update_service_settings con analytics: false la apaga. Por la API: GET /api/infra/projects/:project/services/:service/analytics?range=7d&environment= y GET /api/infra/projects/:project/analytics?range=7d.