Umami Analytics: Privacy-First Open-Source Analytics You Can Self-Host

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.

 Umami dashboard (clean, uncluttered interface showing core metrics)

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.

: Real-time dashboard showing active visitors and live pageview counter

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
Browsers: Chrome, Safari, Firefox usage

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.

OS: Windows, macOS, iOS, Linux breakdown

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.

vents page showing 'Purchase' events with value and currency properties

Setting Up Goals

Goals are milestones you want to track. Examples:

Site TypeGoal Examples
SaaSFree trial signup, payment, API usage
E-commerceAdd to cart, checkout, purchase
BlogNewsletter signup, comment posted
Course PlatformEnrollment, lesson completion, quiz
Content SiteRead 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:

  1. 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)
Journey visualization

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:

  1. Browse products (1,000 users)
  2. Add to cart (600 users – 60% drop-off)
  3. Start checkout (400 users – 33% drop-off)
  4. 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:

PlanMonthly EventsWebsitesData RetentionCostBest For
Hobby10K36 monthsFREEPersonal blogs, tests
Basic100K502 years$9/moSmall sites, startups
Pro1MUnlimited7 years$49/moGrowing businesses
EnterpriseCustomUnlimitedCustomCustomAgencies, 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 TypeMonthly CostSuitable For
Shared hosting$2–5Low-traffic sites
Cheap VPS$3–6Small to medium sites
Mid-tier VPS$10–20High-traffic sites
Managed hosting$15–50Full 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)

  1. Go to umami.is and sign up
  2. Create an account with email/password
  3. Add your website domain
  4. Copy the tracking script:
xml<script defer src="https://cloud.umami.is/script.js" data-website-id="YOUR_ID"></script>
  1. Paste into your site’s <head> before </head>
  2. 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:

  1. “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

FeatureUmamiGA4
Setup time2 minutes20+ minutes
Learning curve5 minutes2+ weeks
Privacy focusBuilt-inAfterthought
ComplianceGDPR-firstRequires work
Cookie bannerNot neededRequired by law
Script sizeMinimal~70 KB
Cost$9–49/mo or freeFree (surveillance)
Data ownership100% yoursGoogle’s advertising
Reports qualityFocused/essentialOverwhelming
Journey mappingYes (visual)Yes (complex)
Self-hostingYes (free)No

Winner for: Privacy-conscious site owners, developers, those who want simplicity

Umami vs. Plausible

FeatureUmamiPlausible
SimplicitySimpleSimpler
FeaturesMore optionsMinimal
Self-hostingFree, unlimitedFree, limited
Cloud pricing$9–49/mo$9–69/mo
Custom eventsYes, flexibleYes, but fewer
Reports depthDetailedStreamlined
WordPress pluginCommunity-builtOfficial
E-commerceManual setupWooCommerce native
User journeysVisual/interactiveNot 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

Your email address will not be published. Required fields are marked *