| name | umami |
| description | Deploy, configure, and manage Umami — open-source privacy-focused web analytics with API client, tracker functions, event tracking, website statistics, reports, and team management. Includes umami-cli Rust CLI tool for terminal-based management. Use when setting up web analytics, tracking pageviews, or working with Umami. Triggers on mentions of Umami, umami-cli, web analytics, pageviews, event tracking, privacy analytics, Google Analytics alternative. |
| allowed-tools | Read, Write, Edit, Glob, Grep, Bash, WebFetch |
Umami
Expert at deploying and managing Umami, a privacy-focused open-source web analytics platform.
Overview
- Self-hosted analytics — GDPR-compliant, no cookies, lightweight tracker (~2KB)
- API Client —
@umami/api-client TypeScript package for all API endpoints
- Node Client —
@umami/node for server-side event tracking
- Tracker — Client-side
umami.track() and umami.identify() functions
- Reports — Attribution, funnel, retention, journey, revenue, and UTM analysis
- Realtime — Live visitor data with 30-minute rolling window
CLI Tool (umami-cli)
A Rust CLI for managing self-hosted Umami instances from the terminal. Covers auth, websites, stats, events, sessions, reports, realtime, teams, users, admin, shares, links, and pixels.
Install globally
cargo install --path .
cargo install --git https://github.com/zot24/umami-cli.git
After install, umami-cli is available globally via ~/.cargo/bin/.
CLI subcommands
umami-cli auth # Login, logout, verify
umami-cli websites # Manage websites
umami-cli stats # View website statistics
umami-cli events # Manage and track events
umami-cli sessions # View session data
umami-cli reports # Run and manage reports
umami-cli realtime # View realtime analytics
umami-cli teams # Manage teams
umami-cli users # User management
umami-cli admin # Admin operations (self-hosted only)
umami-cli shares # Manage share pages
umami-cli links # Manage tracked links
umami-cli pixels # Manage tracking pixels
Quick Start
git clone https://github.com/umami-software/umami.git
cd umami
docker-compose up -d
import { getClient } from '@umami/api-client';
const client = getClient();
const { ok, data } = await client.getWebsites();
Core Concepts
Authentication — Self-hosted uses POST /api/auth/login for bearer tokens. Cloud uses API keys. The API client handles auth via environment variables.
Tracking — Add <script src="/script.js" data-website-id="..."> to pages. Use umami.track() for pageviews and custom events, umami.identify() for session data.
API Client Config — Set UMAMI_API_CLIENT_USER_ID, UMAMI_API_CLIENT_SECRET, and UMAMI_API_CLIENT_ENDPOINT for self-hosted. Set UMAMI_API_KEY and UMAMI_API_CLIENT_ENDPOINT for Cloud.
Documentation Index
Setup & Configuration
Client Libraries
- API Client —
@umami/api-client TypeScript client with all methods
- Node Client —
@umami/node server-side tracking
Tracking & Events
Analytics & Optimization
- Funnel Design — B2C, B2B, SaaS, e-commerce, onboarding funnel templates with benchmarks
- Journey Analysis — User journey archetypes, geographic/language variations, multi-visit patterns
API Reference
Common Workflows
Get website stats for last 7 days
const client = getClient();
const now = Date.now();
const weekAgo = now - 7 * 24 * 60 * 60 * 1000;
const { data } = await client.getWebsiteStats('website-id', {
startAt: weekAgo, endAt: now
});
Track custom event from server
import umami from '@umami/node';
umami.init({ websiteId: 'your-id', hostUrl: 'https://your-umami.com' });
umami.track({ url: '/api/checkout', name: 'purchase', data: { amount: 99 } });
Create a funnel report
const { data } = await client.createReport({
websiteId: 'id', type: 'funnel',
parameters: { startDate: '...', endDate: '...', urls: ['/signup', '/onboard', '/activate'] }
});
Upstream Sources
Sync & Update
When user runs sync: fetch latest from upstream, update docs/.
When user runs diff: compare current vs upstream, report changes.