Antlytics logoAntlytics

Migrating from Umami

Antlytics cannot import historical data from Umami — Umami does not expose a portable event-level export that can be imported into another tool. This guide explains how to run both tools in parallel, verify Antlytics is working, and remove Umami when you are ready.

Recommended approach: run both tools in parallel for two to four weeks. Umami's script tag and the Antlytics script tag are both lightweight and will not meaningfully affect page performance.


What you will lose

  • Historical data stays in Umami. Antlytics starts from zero on install day.
  • Custom events. If you have configured custom events using Umami's umami.track() API, there is no direct migration path. Antlytics goal tracking is currently path-based; custom event types are on the roadmap.

Export any aggregate reports you want to retain from the Umami dashboard before decommissioning your instance.


Step 1 — Install Antlytics

Umami uses a script tag loaded from your self-hosted domain (or cloud.umami.is for Umami Cloud). You will add the Antlytics script alongside it initially.

Option A: CLI (recommended)

npx @antlytics/init

The CLI detects your framework and configures the tracking component automatically.

Option B: Script tag (any site)

Add the Antlytics script alongside your existing Umami script:

<!-- Existing Umami script — leave in place during transition -->
<script defer src="https://your-umami-domain.com/script.js" data-website-id="your-website-id"></script>

<!-- New Antlytics script -->
<script
  defer
  data-tracking-id="your-tracking-id"
  src="https://cdn.antlytics.com/tracker.js"
></script>

Option C: Next.js

npm install @antlytics/analytics

In app/layout.tsx:

import { Analytics } from '@antlytics/analytics/next'

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html>
      <body>
        {children}
        <Analytics trackingId="your-tracking-id" />
      </body>
    </html>
  )
}

Step 2 — Run both tools in parallel

Leave Umami running while you verify Antlytics. Use the parallel period to:

  • Confirm traffic numbers are in the expected range (10–20% variance between tools is normal)
  • Check that top pages and referrer patterns match
  • Recreate any page-visit goals you track in Umami

Step 3 — Recreate goals

If you use Umami's event tracking for conversion monitoring, recreate the equivalent page-visit goals in Antlytics.

Via the MCP server:

Create a goal called "Signup complete" for visits to /signup/success on my site.

Via the dashboard:

Go to Settings → Goals → Add goal. Enter a name and the path pattern.


Step 4 — Remove Umami

When you are satisfied with the Antlytics install:

Remove the Umami <script> tag from your layout. If you added it directly to a template or layout file, remove that line. If it was added via a CMS integration, remove it there.

After removing the script, verify in the browser network tab that no requests are going to your Umami domain.


Step 5 — Decommission your Umami instance

If you were self-hosting Umami on a VPS, Docker host, or cloud VM, you can decommission that infrastructure once the migration is confirmed complete.

Before decommissioning:

  • Export any aggregate reports or screenshots you want to retain
  • Note your top pages, referrers, and UTM sources for the past 12 months as a reference
  • Back up the Umami PostgreSQL database if you want to preserve raw event data (not importable elsewhere, but useful for compliance or reference)

The Umami database schema stores events in a website_event table. You can export this to CSV via pg_dump or a database GUI if you want a permanent archive.


Verifying the migration is complete

After removing Umami, confirm:

  • No requests to your Umami domain in the browser network tab
  • Antlytics dashboard showing expected traffic levels

If you have the MCP server configured:

Check that my Antlytics install is receiving data.

Common issues

Numbers are lower than Umami reported. Self-hosted Umami without a custom bot filter will accumulate bot pageviews. Antlytics filters known bots at the ingest layer. If your Umami instance had significant bot traffic, Antlytics will report lower numbers — this typically represents more accurate human visitor counts.

The Umami script was served from the same domain (proxy setup). Some Umami installations serve the tracking script via a reverse proxy on the same domain to avoid ad-blockers. When you remove the Umami reverse proxy configuration, check that it does not break other proxy rules. The Antlytics first-party proxy covers how to set up an equivalent configuration for Antlytics if you need it.

Country data is missing after switching. Antlytics derives country from the visitor's IP address at ingest time. If your hosting environment is behind a load balancer or CDN that strips client IP headers, configure the X-Forwarded-For or CF-Connecting-IP header forwarding. See the troubleshooting guide for specific configurations.

Something missing? Get in touch and we will update these docs.