Umami Analytics: Guía Completa de Analíticas Auto-Alojadas (2026)

Umami es una plataforma de analíticas web open-source enfocada en la privacidad que proporciona una alternativa limpia a Google Analytics. Con un script de seguimiento de menos de 2KB, cumplimiento GDPR de serie y propiedad total de los datos, Umami se ha convertido en la opción preferida para desarrolladores que quieren insights sin la complejidad o preocupaciones de privacidad de las analíticas tradicionales.

¿Por Qué Umami en Lugar de Google Analytics?

Google Analytics 4 (GA4) es potente pero viene con compromisos significativos que hacen que muchos desarrolladores busquen alternativas:

FactorGoogle Analytics 4Umami
PrivacidadRecopila PII, requiere banners de consentimientoSin cookies, sin PII, compatible con GDPR por defecto
Tamaño del script~45KB~2KB
Curva de aprendizajePronunciada (rediseñado completamente desde UA)Mínima, panel intuitivo
Propiedad de datosServidores de Google, sus términosTu servidor, tus datos
CosteGratis pero tú eres el productoGratis (auto-alojado) o $9/mes (cloud)
Bloqueadores de anunciosBloqueado por la mayoríaFunciona con dominio auto-alojado

Cuándo Elegir Umami

  • Quieres simplicidad: Páginas vistas, referentes, dispositivos—lo esencial sin ahogarte en datos
  • La privacidad importa: Sin banners de cookies, sin complejidad de gestión de consentimiento
  • El rendimiento importa: Script de 2KB vs 45KB tiene impacto real en Core Web Vitals
  • Quieres propiedad de datos: Auto-aloja y mantén todo bajo tu control
  • Sitios enfocados a desarrolladores: Las audiencias técnicas suelen bloquear GA de todos modos

Cuándo GA4 Podría Ser Mejor

  • Se requiere integración profunda con Google Ads
  • Necesitas modelado de atribución avanzado
  • El soporte empresarial es un requisito
  • Ya estás muy invertido en el ecosistema de Google

Características de Umami v3

Umami v3 (lanzado en noviembre de 2025) trajo mejoras significativas:

Analíticas Básicas

Métricas del panel:
├── Visitantes (únicos)
├── Páginas vistas (total)
├── Tasa de rebote
├── Duración de sesión (promedio)
├── Páginas por sesión
└── Visitantes en tiempo real

Fuentes de tráfico:
├── Referentes
├── Parámetros UTM (fuente, medio, campaña)
├── Tráfico directo
└── Plataformas sociales

Desglose técnico:
├── Navegadores
├── Sistemas operativos
├── Dispositivos (escritorio/móvil/tablet)
├── Tamaños de pantalla
└── Países/regiones

Seguimiento de Eventos

Rastrea interacciones personalizadas más allá de las páginas vistas:

<!-- Usando atributos data (sin JavaScript requerido) -->
<button data-umami-event="signup-click">Registrarse</button>

<button data-umami-event="download" data-umami-event-file="whitepaper.pdf">
  Descargar PDF
</button>

<!-- Usando JavaScript para eventos dinámicos -->
<script>
// Rastrear cuando el usuario completa la compra
function completeCheckout(orderId, total) {
  umami.track('checkout-complete', {
    orderId: orderId,
    total: total,
    currency: 'USD'
  });
}

// Rastrear profundidad de scroll
let maxScroll = 0;
window.addEventListener('scroll', () => {
  const scrollPercent = Math.round(
    (window.scrollY / (document.body.scrollHeight - window.innerHeight)) * 100
  );
  if (scrollPercent > maxScroll && scrollPercent % 25 === 0) {
    maxScroll = scrollPercent;
    umami.track('scroll-depth', { depth: scrollPercent });
  }
});
</script>

Embudos (v3)

Rastrea rutas de conversión a través de tu sitio:

Ejemplo de embudo: Checkout de e-commerce

Paso 1: /products (productos vistos)
    ↓ 65% continúan
Paso 2: /cart (añadido al carrito)
    ↓ 48% continúan
Paso 3: /checkout (checkout iniciado)
    ↓ 72% continúan
Paso 4: /confirmation (compra completada)

Conversión total: 22.5%
Mayor abandono: Carrito → Checkout (investigar fricción)

Auto-Alojamiento con Docker

La forma más fácil de desplegar Umami es con Docker Compose.

Requisitos

  • Servidor con Docker y Docker Compose
  • PostgreSQL 12+ (v3 eliminó soporte para MySQL)
  • Dominio con SSL (usa Caddy, nginx, o túnel de Cloudflare)

Configuración de Docker Compose

# docker-compose.yml
version: '3'
services:
  umami:
    image: ghcr.io/umami-software/umami:postgresql-latest
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgresql://umami:${POSTGRES_PASSWORD}@db:5432/umami
      DATABASE_TYPE: postgresql
      APP_SECRET: ${APP_SECRET}
    depends_on:
      db:
        condition: service_healthy
    restart: unless-stopped

  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: umami
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - umami-db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U umami"]
      interval: 5s
      timeout: 5s
      retries: 5
    restart: unless-stopped

volumes:
  umami-db:

Pasos de Despliegue

# 1. Crear directorio y archivos
mkdir umami && cd umami
# Crear docker-compose.yml y .env como se muestra arriba

# 2. Generar app secret
echo "APP_SECRET=$(openssl rand -base64 32)" >> .env

# 3. Iniciar servicios
docker compose up -d

# 4. Verificar logs
docker compose logs -f umami

# 5. Acceder en http://localhost:3000
# Login por defecto: admin / umami
# ¡CAMBIA ESTO INMEDIATAMENTE!

Añadir Seguimiento a Tu Sitio

Instalación Básica

<!-- Añadir antes de cerrar </head> -->
<script
  defer
  src="https://analytics.tudominio.com/script.js"
  data-website-id="tu-website-id"
></script>

Integración con Next.js

// app/layout.tsx (App Router)
import Script from 'next/script';

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html lang="es">
      <head>
        <Script
          src="https://analytics.tudominio.com/script.js"
          data-website-id="tu-website-id"
          strategy="afterInteractive"
        />
      </head>
      <body>{children}</body>
    </html>
  );
}

API REST de Umami

Umami proporciona una API REST para acceso programático a tus datos de analíticas.

Autenticación

// Obtener token de autenticación
async function getUmamiToken(username: string, password: string): Promise<string> {
  const response = await fetch('https://analytics.tudominio.com/api/auth/login', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ username, password })
  });

  const { token } = await response.json();
  return token;
}

Evitar Bloqueadores de Anuncios

Al auto-alojar, puedes configurar Umami para evitar bloqueadores de anuncios que apuntan a scripts de analíticas.

Estrategia 1: Ruta de Script Personalizada

# configuración nginx
location /stats/script.js {
    proxy_pass http://localhost:3000/script.js;
    proxy_set_header Host $host;
}

Migración desde Google Analytics

Cambiar de GA4 a Umami es sencillo ya que son aditivos—puedes ejecutar ambos durante la transición.

Pasos de Migración

  1. Despliega Umami junto a GA4 existente
  2. Ejecuta seguimiento paralelo durante 2-4 semanas para comparar datos
  3. Configura seguimiento de eventos para coincidir con tus eventos de GA4
  4. Crea paneles que repliquen tus informes clave de GA4
  5. Elimina GA4 una vez confiado en los datos de Umami

Lo Que Perderás

  • Datos históricos de GA (exporta antes de eliminar)
  • Integración con Google Ads
  • Modelos de atribución avanzados
  • Métricas predictivas

Lo Que Ganarás

  • Sitio más rápido (script más pequeño)
  • Sin necesidad de banners de consentimiento
  • Propiedad total de los datos
  • Interfaz más limpia y simple
  • Datos más precisos (menos bloqueo)

Umami proporciona las analíticas esenciales que la mayoría de sitios realmente necesitan sin la complejidad y preocupaciones de privacidad de las soluciones empresariales. Para desarrolladores y propietarios de sitios conscientes de la privacidad, suele ser la elección correcta.