Introduction: Why Umami Analytics Stands Out
Privacy-focused analytics platforms have become a necessity, not a luxury. Google Analytics feels bloated, intrusive, and increasingly risky from a compliance perspective. Website owners want simplicity, speed, and control—and Umami delivers exactly that. Built by three brothers who were frustrated with existing analytics tools, Umami combines open-source transparency with a user-friendly interface that doesn’t require a data scientist to understand.
What makes Umami special isn’t just privacy (though that’s crucial). It’s the combination of simplicity, speed, affordable pricing, and powerful self-hosting options. Whether you run a small blog or manage analytics for enterprise clients, Umami scales to your needs. This guide covers everything: setup, features, pricing, real-world workflows, and how it compares to alternatives like Plausible and Google Analytics.

Understanding Umami: The Core Philosophy
Umami is built on a fundamental principle: analytics should be simple, fast, and respect privacy. The fully open source code is available on GitHub. Unlike Google Analytics, which treats analytics as a vehicle for data collection and advertising, Umami treats it as a tool for website improvement.
Core Values:
- No personal data collection – Only aggregated, anonymized metrics
- No cookies required – Visitors don’t need consent banners
- GDPR/CCPA compliant – Built for privacy laws from the start
- Fully open source – Code is transparent and community-reviewed
- Self-hostable – Full control over your data
- Blazingly fast – Lightweight script, quick dashboard loads
This isn’t just marketing speak. Every design decision reflects these values. The tracking script is minuscule. The dashboard loads instantly. Privacy is baked into every feature, not added as an afterthought.
Key Features That Matter
Real-Time Dashboard
The moment you add the tracking script, Umami begins collecting data. The dashboard displays:
- Visitors: Unique individuals visiting your site
- Visits: Total visits (same person visiting multiple times counts separately)
- Pageviews: Total pages viewed
- Visit Duration: Average time spent per session
All stats update in real-time (with ~1-2 second delay). You can see live activity as it happens, watch traffic spikes occur, and monitor feature launches in real-time.

Flexible Date Range Selection
By default, Umami shows the last 28 days. But you can easily switch to:
- Today
- Last 24 hours
- This week / Last week
- This month / Last month
- 90 days
- Custom date range
When you change the date range, all data refreshes automatically. This makes it trivial to compare periods, analyze campaign performance, or spot trends.
Detailed Traffic Breakdown
Navigate to the Details page to see:
- Pages: Which pages drive traffic, bounce rate per page, average visit duration
- Referrers: Which sites send visitors to you (search engines, directories, blogs)
- Devices: Desktop vs. mobile breakdown, device types
- Countries: Geographic distribution of visitors
- Browsers: Chrome, Safari, Firefox usage
- OS: Windows, macOS, iOS, Linux breakdown

Each section can be filtered independently. Want to see only mobile traffic from the US visiting your blog? Filter “Mobile” + “United States” + “/blog/*” and you’re done.

Custom Events and Goal Tracking
This is where Umami transforms from “basic analytics” to “actionable product intelligence.” For a complete list of ways to track events, please refer to official documentation for tracking events.
Adding Custom Events
Track any action that matters to your business:
xml<!-- Add data attributes to HTML elements -->
<button data-umami-event="Signup clicked">Sign Up</button>
<link data-umami-event="Download PDF" href="/files/guide.pdf">Download</link>
<a data-umami-event="Outbound link" href="https://example.com">Visit</a>
Or use JavaScript directly:
javascriptumami.track('purchase', { value: 99, currency: 'USD' });
umami.track('video_play', { video_id: '12345' });
Events appear in the Events section of your dashboard with full filtering and segmentation.

Setting Up Goals
Goals are milestones you want to track. Examples:
| Site Type | Goal Examples |
|---|---|
| SaaS | Free trial signup, payment, API usage |
| E-commerce | Add to cart, checkout, purchase |
| Blog | Newsletter signup, comment posted |
| Course Platform | Enrollment, lesson completion, quiz |
| Content Site | Read time > 3 min, download, share |
Define goals in Settings, then track them in your Goals report. See how many people achieved each milestone, conversion rates, and trends over time.
Advanced Reporting: Understanding User Behavior
Umami’s reporting suite goes beyond pageviews. Use these reports to understand why visitors behave as they do.
Journey Report: Visualizing User Paths
The Journey report is Umami’s most powerful feature for understanding behavior. Instead of isolated metrics, it visualizes the actual sequence of steps visitors take.
Example: You run an SaaS platform. Create a journey from:
- Landing page → 2. Pricing page → 3. Signup → 4. Onboarding
The report shows:
- How many visitors took this exact path
- Where people diverged from the path
- Which alternative routes they took instead
- Drop-off rates at each step
This reveals friction. If 1,000 people view your pricing page but only 50 start signup, something’s wrong. Is the pricing confusing? The CTA unclear? The signup form too long? Journey reports highlight where to investigate.
You can customize:
- Number of steps (3 to 7)
- Starting page/event
- Ending page/event
- Date range
- Segments (mobile vs. desktop, by country, by source)

Retention Report: Measuring Stickiness
How often do visitors return? The Retention report tracks this.
Common insights:
- “We have 10,000 visitors, but only 5% come back”
- “Day-7 retention is 40%—our onboarding needs work”
- “Mobile users return 3x less than desktop users”

Use retention data to:
- Validate product/content quality
- Measure onboarding effectiveness
- Identify user churn triggers
- Compare different cohorts (mobile vs. desktop, new vs. returning)
Funnel Report: Tracking Conversion Sequences
Funnels are sequential processes you want to measure:
E-commerce funnel:
- Browse products (1,000 users)
- Add to cart (600 users – 60% drop-off)
- Start checkout (400 users – 33% drop-off)
- Complete purchase (360 users – 10% drop-off)

The funnel reveals exactly where you lose people. The biggest drop is at step 2 (adding to cart). This suggests something wrong with the product pages or add-to-cart experience.
Funnels are fully customizable and can include any pages or events. You can build multiple funnels for different user flows.

Insights Report: Segmentation and Filtering
Deep-dive into specific slices of your data:
- Compare “Desktop users in US” vs. “Mobile users in EU”
- See how a specific traffic source performs across different pages
- Analyze behavior by browser or OS
- Create custom cohorts based on events
Pricing Models: Cloud vs. Self-Hosted
Umami offers flexibility in how you use it.
Umami Cloud (SaaS Pricing)
Official Umami cloud hosting:
| Plan | Monthly Events | Websites | Data Retention | Cost | Best For |
|---|---|---|---|---|---|
| Hobby | 10K | 3 | 6 months | FREE | Personal blogs, tests |
| Basic | 100K | 50 | 2 years | $9/mo | Small sites, startups |
| Pro | 1M | Unlimited | 7 years | $49/mo | Growing businesses |
| Enterprise | Custom | Unlimited | Custom | Custom | Agencies, large organizations |
What’s included in all plans:
- Unlimited team members
- Email support
- CSV exports
- Real-time dashboard
- Custom events and goals
- All reports
Notes:
- Events are the main usage metric (each page view = 1 event)
- 10K events/month ≈ 3,000-5,000 visitors depending on pages per visit
- Can add events à la carte ($5 per 100K for Basic, $20 per 500K for Pro)
- Annual billing gets 2 months free
Self-Hosted Umami (Open Source)
Completely free if you self-host. You only pay for server costs:
| Server Type | Monthly Cost | Suitable For |
|---|---|---|
| Shared hosting | $2–5 | Low-traffic sites |
| Cheap VPS | $3–6 | Small to medium sites |
| Mid-tier VPS | $10–20 | High-traffic sites |
| Managed hosting | $15–50 | Full hands-off approach |
Umami is lightweight and doesn’t need much—even a $3/month VPS can handle 100K+ monthly visits.
Self-hosting pros:
- No subscription costs
- Full data control and privacy
- Unlimited events/sites
- Can customize code if needed
Self-hosting cons:
- You manage infrastructure
- You handle security updates
- No SLA/guaranteed uptime
- Requires basic technical skills
Setting Up Umami: Cloud vs. Self-Hosted
Cloud Setup (5 minutes)
- Go to umami.is and sign up
- Create an account with email/password
- Add your website domain
- Copy the tracking script:
xml<script defer src="https://cloud.umami.is/script.js" data-website-id="YOUR_ID"></script>
- Paste into your site’s
<head>before</head> - Verify installation (dashboard shows “Active” status)
Done. Tracking starts immediately.
Self-Hosted Setup (Docker, 20 minutes)
Requirements: A Linux VPS or server with Docker installed. For more detailed deployment instructions, see step-by-step guide to Docker Compose deployment
Step 1: Create docker-compose.yml
textversion: "3"
services:
postgres:
image: postgres:15-alpine
environment:
POSTGRES_DB: umami
POSTGRES_USER: umami
POSTGRES_PASSWORD: your_secure_password_here
volumes:
- umami-db-data:/var/lib/postgresql/data
restart: unless-stopped
umami:
image: ghcr.io/umami-software/umami:postgresql-latest
environment:
DATABASE_URL: postgresql://umami:your_secure_password_here@postgres:5432/umami
DATABASE_TYPE: postgresql
APP_SECRET: $(openssl rand -base64 32)
depends_on:
- postgres
ports:
- "3000:3000"
restart: unless-stopped
Step 2: Launch with Docker
bashdocker-compose up -d
Step 3: Access Dashboard
Visit http://your-server-ip:3000 and log in with default credentials (admin/umami).
Step 4: Add Your Website
In the dashboard, click Add website, enter your domain, and copy the tracking code (same format as cloud).
Step 5: Set Up Custom Domain (Optional)
Use Caddy or Nginx as a reverse proxy to access Umami at your domain:
texthttps://analytics.yourdomain.com
Configuration is straightforward; documentation is excellent.
Event Tracking Mastery: Practical Examples
Events are the difference between “I know I had 1,000 visitors” and “I know 50 users started my free trial, 30 completed onboarding, and 12 upgraded to paid.”
Example 1: SaaS Sign-Up Funnel
Track the entire onboarding process:
xml<!-- On landing page -->
<button data-umami-event="Clicked sign-up CTA" data-umami-event-source="landing">
Start Free Trial
</button>
<!-- On signup form -->
<input type="email" data-umami-event="Email entered" />
<button data-umami-event="Form submitted" data-umami-event-form="signup" />
<!-- On confirmation page -->
<div data-umami-event="Email verified" data-umami-event-email="true">
Verification complete
</div>
<!-- After user adds first project -->
<script>
umami.track('First project added', {
project_type: 'web',
user_id: 'abc123'
});
</script>
Now create a funnel:
- “Clicked sign-up CTA” → 2. “Form submitted” → 3. “Email verified” → 4. “First project added”
The dashboard shows exactly where sign-ups are lost.
Example 2: E-Commerce Product Interaction
xml<!-- Product page -->
<button data-umami-event="Product viewed"
data-umami-event-product-id="SKU123"
data-umami-event-price="99.99">
View Details
</button>
<!-- Add to cart -->
<button data-umami-event="Added to cart"
data-umami-event-product="Winter Jacket"
data-umami-event-price="99.99"
data-umami-event-quantity="1">
Add to Cart
</button>
<!-- Checkout completion -->
<script>
umami.track('Purchase', {
order_value: 299.97,
items: 3,
coupon: 'SAVE20'
});
</script>
Create goals for each event to track conversion rates and revenue impact.
Example 3: Content Engagement
xml<!-- Video player -->
<video data-umami-event="Video played"
data-umami-event-video-id="abc"
data-umami-event-duration="120">
</video>
<!-- Article read tracking -->
<script>
// Scroll depth tracking
window.addEventListener('scroll', () => {
const scrollPercent = (window.scrollY / document.body.scrollHeight) * 100;
if (scrollPercent > 50) {
umami.track('Article 50% read', { article_id: '12345' });
}
});
// Time on page
setTimeout(() => {
umami.track('Article engaged', { time_on_page: 180 }); // 3 minutes
}, 180000);
</script>
<!-- Newsletter signup -->
<button data-umami-event="Newsletter signup"
data-umami-event-location="article-bottom">
Subscribe
</button>
Track which content drives engagement, signups, and repeat visits.
Comparing Umami vs. Alternatives
Umami vs. Google Analytics
| Feature | Umami | GA4 |
|---|---|---|
| Setup time | 2 minutes | 20+ minutes |
| Learning curve | 5 minutes | 2+ weeks |
| Privacy focus | Built-in | Afterthought |
| Compliance | GDPR-first | Requires work |
| Cookie banner | Not needed | Required by law |
| Script size | Minimal | ~70 KB |
| Cost | $9–49/mo or free | Free (surveillance) |
| Data ownership | 100% yours | Google’s advertising |
| Reports quality | Focused/essential | Overwhelming |
| Journey mapping | Yes (visual) | Yes (complex) |
| Self-hosting | Yes (free) | No |
Winner for: Privacy-conscious site owners, developers, those who want simplicity
Umami vs. Plausible
| Feature | Umami | Plausible |
|---|---|---|
| Simplicity | Simple | Simpler |
| Features | More options | Minimal |
| Self-hosting | Free, unlimited | Free, limited |
| Cloud pricing | $9–49/mo | $9–69/mo |
| Custom events | Yes, flexible | Yes, but fewer |
| Reports depth | Detailed | Streamlined |
| WordPress plugin | Community-built | Official |
| E-commerce | Manual setup | WooCommerce native |
| User journeys | Visual/interactive | Not available |
Winner for: Umami excels if you need custom events and journey mapping. Plausible if you want maximum simplicity
Real-World Use Cases
Freelancer Running a Tech Blog
Umami (free self-hosted) tracks which articles drive traffic, newsletter signups, and affiliate link clicks. Events track newsletter CTAs and download conversions. Dashboard shows 100-line blog gets 5,000 visitors/month from Google organic. Revenue potential is clear.
SaaS Startup (Plausible, Umami)
Both tools track free trial signups, onboarding completion, and feature adoption. Umami’s journey report reveals that users who complete the “Connect integrations” step have 40% higher retention. The team optimizes onboarding around this insight.
E-Commerce Store
Self-hosted Umami tracks products viewed, cart abandonment, and purchase value. Filtering by traffic source shows email campaigns convert at 8%, while Google Ads at 2%. Budget shifts to email.
Agency Managing 50 Websites
Umami cloud scales easily. Create dashboards for each client, invite team members per website, and generate CSV reports for weekly client emails. Funnels highlight which client sites have UX issues.
Multi-Language Support
Umami supports 20+ languages including:
- English, Spanish, French, German, Italian
- Russian, Polish, Ukrainian, Czech
- Chinese (Simplified & Traditional), Japanese, Korean
- Arabic, Persian, Hindi
- And more…
Simply click the globe icon in the header to switch languages. Perfect for international teams or selling to non-English-speaking audiences.
Team Collaboration and Permissions
Invite team members with granular permissions:
- Owner: Full access to all settings
- Editor: Can modify dashboards, goals, events
- Viewer: Read-only access
Perfect for agencies, teams, or delegating analytics management.
Conclusion: The Right Time to Switch
Umami represents the future of web analytics: simple, private, and transparent. According to the analysis of GDPR-compliant solutions https://www.data-mania.com/blog/top-10-gdpr-compliant-google-analytics-alternative-solutions/. Whether you choose cloud or self-hosted, you get a tool built for modern web needs, not surveillance capitalism.
The decision is straightforward:
- Tired of Google Analytics complexity? → Umami
- Want full data control? → Self-host Umami
- Need custom event tracking? → Umami (more flexible than Plausible)
- Manage multiple sites? → Umami Cloud ($9/month for 50 sites + unlimited team)
- Value your visitors’ privacy? → Umami (GDPR by design)
The 30-day free trial (cloud) or instant setup (self-hosted) costs nothing. One hour of switching saves months of frustration navigating GA4’s labyrinth.
Make the switch. Your dashboard will finally make sense.

Leave a Reply