Skip to content
Comparison

Umami Analytics alternative for PHP

Umami Analytics measures from the browser, Quiet Metrics from your PHP server. What separates them, when to keep Umami, and how to move from one to the other.

Recorded on November 4, 2026

Everything written here about Umami comes from its own published pages, dated and linked at the bottom. We publish Quiet Metrics: we can vouch for the state of our product, not theirs.

At a glance

Quiet Metrics Umami
Where measurement starts From your PHP server, or from a script if you prefer From the browser, through a script; HTTP sending possible from a server
Cookies No identifying or tracking cookies; a ten-minute visit continuity cookie with no identifier None, according to Umami
How visitors are counted Daily fingerprint, salt destroyed every night Method not described on the pages we read
Licence Closed platform; PHP packages under the MIT licence MIT
Self-hosting Not offered Yes: Node.js and PostgreSQL, Docker Compose provided
Cloud hosting France, at OVH Umami Cloud: servers in the US and in the EU
PHP integration 3 Composer packages (PHP, Laravel, Symfony) No PHP library documented; HTTP call to write yourself
Funnels, journeys, heatmaps, session replay No Yes
MCP server Our own, read-only, from the Pro plan Official, read-only
SEO issues ranked by your traffic Yes: built-in crawler, ranked by each page's views and conversions Not announced; Core Web Vitals measured by the script, optional

What Umami does well

A permissive licence. The official repository is published under the MIT licence. You can read the code, change it and install it wherever you like.

Lightweight self-hosting. A Node.js application and a PostgreSQL database, with a Docker Compose file that starts both, and a ready image if you bring your own database.

Growing coverage. Funnels, journeys, retention, heatmaps, session replay, revenue linked to your payments: Umami goes beyond audience measurement, and further than we do.

A free starting point. Umami Cloud has a free tier, and an official read-only MCP server lets you query your figures from an AI assistant.

Where we differ

The difference lies in where measurement starts.

Umami's script runs in the visitor's browser. Umami itself acknowledges that some blockers intercept it, and documents three workarounds: route the script and its requests through your own domain, host the script yourself, or rename it if you self-host. Each one takes some infrastructure and ongoing attention.

Umami also accepts HTTP requests on /api/send, which lets you measure from a server. You then write the call, send a proper User-Agent header, and maintain it: no PHP library is documented. That is the work our packages do for you. The Laravel middleware sends each pageview after the response has gone out, and failures stay silent: analytics never breaks your site.

On counting, we publish our method: a fingerprint recomputed every day from a salt destroyed every night, the visitor's network and the browser. Nothing can be linked from one day to the next, or from one site to another. The details are on how we count. The Umami pages we read do not describe theirs; they do say that an identifier you send yourself remains your responsibility.

On hosting, Umami Cloud has servers in the United States and in the European Union. Our measurement data is hosted in France, at OVH SAS; our DPA also names Laravel Forge, in the United States, for technical server administration access, with no data hosted, under standard contractual clauses.

The code, side by side

With Umami, a script in the <head>, then one call per event:

<script defer src="https://your-instance.example/script.js" data-website-id="YOUR-ID"></script>
umami.track('Signup button');

With Quiet Metrics, in a Laravel application:

composer require quiet-metrics/laravel-metrics
// bootstrap/app.php: every pageview in the web group leaves from the server
->withMiddleware(function (Middleware $middleware) {
    $middleware->appendToGroup('web', \QuietMetrics\Laravel\Middleware\TrackPageview::class);
})

// an event, from a controller or a job
QuietMetrics::event('signup', ['plan' => 'pro']);

The site keys go in .env. The Laravel guide covers the rest; there is also a Symfony bundle, a dependency-free PHP SDK and a script under 4 KB compressed for sites that are not built in PHP.

When to stay with Umami

If you must self-host, or open source is a requirement. We offer neither.

If you need behavioural analysis. Funnels, journeys, heatmaps, session replay: we do not do it, and we will not. We measure audiences, we do not observe individuals.

If your site is not built in PHP. On a Node, Next.js or Python stack, our value comes down to the script alone, and Umami will serve you better.

If your instance runs and someone maintains it. Switching tools breaks the comparability of your history. Do not do it without a reason.

When to look at us

If your site runs on PHP, Laravel or Symfony. Measurement leaves from your application, with no script to load and no proxy to set up.

If you no longer want to run a server. No Node.js, no PostgreSQL, no updates to follow: the service is hosted and maintained for you.

If your requirements name France. Our measurement data is hosted there, and the list of our subprocessors is public.

If you want to know which SEO issues cost you traffic. Our crawler visits your site and ranks each issue by the views and conversions of the page concerned, because it reads the same data as your audience. Umami measures visitors' Core Web Vitals if you turn it on: that is another question, the one about perceived speed.

Torn between Umami and Plausible? Our Umami vs Plausible page compares the two, and all our comparisons are on one page.

Migrating from Umami

  1. Create a free account, declare the site and copy its keys.
  2. Install your framework's package, or the script, next to Umami. Let both run for two to four weeks.
  3. Compare the figures. Gaps are normal: definitions differ, and our visitors are counted per day. Troubleshooting explains the most common ones.
  4. Carry your events over: umami.track('x') becomes qm('x') in the browser, or QuietMetrics::event('x') on the server. Recreate your goals, by path with wildcards or by exact event name. Your UTM links work as they are.
  5. Keep your history in Umami: we do not import it. Mark the switch date with an annotation.
  6. Remove the Umami script and update your privacy policy.

Frequently asked questions

Is Quiet Metrics open source like Umami?

No. The platform is not published under a free licence. Our three Composer packages are, under the MIT licence: you can read exactly what leaves your server.

Can Quiet Metrics be self-hosted?

No, and that is deliberate: the service is hosted and maintained for you. If self-hosting is a requirement, Umami meets it.

Can Umami measure from the server?

Yes, through HTTP requests to its sending endpoint, with a proper User-Agent header. No PHP package is documented: the call, its robustness and its upkeep are on you.

Do I need a cookie banner?

Umami says the answer depends on the other services your site uses. We set no identifying or tracking cookies, but that alone does not guarantee an exemption: your purposes and your setup matter. We provide the DPA; you remain the controller.

What happens behind a full-page cache?

A page served by a cache in front of the application does not run PHP, so its visit is not counted on the server. Add the script on those pages: the two methods coexist without double counting.

Sources and verification date

Recorded on 4 November 2026 from pages published by Umami:

We do not copy their prices: they depend on volume and change over time. Their own page is authoritative, not our summary.

Umami is a trademark of its publisher. This comparison is made independently, from public information.

Measure a first site.
No identifying or tracking cookie.