Install MetricMind on Laravel

Paste the MetricMind script tag into the <head> of your Blade layout and deploy. You'll usually want it inside @production.

Add the tag

Replace YOUR_SITE_ID with your site's ID. In MetricMind, open your site, then Settings → Setup. The ID is in the header of the Install it yourself panel, and the Script tag tab there shows the tag with your ID already filled in.

  1. Open the Blade file that holds your <head>. It's often resources/views/components/layout.blade.php or resources/views/layouts/app.blade.php. With Inertia, it's the root template, resources/views/app.blade.php.
  2. Paste the tag inside <head>. @production keeps it out of your other environments.
    @production
        <script src="https://cdn.metricmind.si/mm.js" data-site="YOUR_SITE_ID" defer></script>
    @endproduction
  3. Deploy. @production depends on APP_ENV being production on that server.

Check that it works

  1. Open your live site in a normal browser window, with ad blockers off, and load a page or two.
  2. In MetricMind, open your site's Settings → Setup page. The panel at the top says Waiting until the first page view arrives, then Live. It usually takes under a minute. Reload the page if it hasn't changed.

Still on Waiting?

  • An ad blocker in your browser. Some block analytics. Test with extensions off.
  • A different address. Events are accepted from the domain you registered in MetricMind, its www. version and its subdomains. To test on another address, such as your platform's free or staging domain, add it under Settings → Security → Allowed origins.
  • Local testing. The script ignores localhost and private addresses, so test on the live site.
  • The tag didn't arrive. View your page's source and search for mm.js. If it's there, open your browser's developer tools: [MetricMind] Missing data-site in the Console means the tag lost its ID, and in the Network tab /v1/batch should answer 202.

What goes wrong on Laravel

More than one layout

Many apps have one layout for signed-in pages and another for guests. A tag in only one of them leaves the other pages uncounted, so add it to each, or move it to a partial and @include it.

Livewire and Inertia page changes

Keep the tag in <head>. Page changes with wire:navigate and Inertia don't reload the page, and mm.js counts them by following browser history. Livewire runs a head script that's on both pages only on the first visit, so it isn't loaded twice.

A Content Security Policy with a nonce

Laravel adds your nonce only to the tags it generates, so add it to this tag yourself with nonce="{{ Vite::cspNonce() }}". Also allow in.metricmind.si in connect-src, and cdn.metricmind.si in script-src unless you use 'strict-dynamic'.

Privacy

MetricMind sets no cookies and builds no profiles. In the EU, storing an ID on the device can need consent even without cookies, so for the strictest reading turn on storage-free mode (data-storage="none"), which stores nothing in the browser. Your obligations depend on your jurisdiction and the rest of your stack, so check with your counsel.

To turn on storage-free mode, add data-storage="none" to the tag before defer. What changes in that mode.

Next

  • To leave out your own visits, open https://yoursite.com/?mm_optout=1 once in each browser you use (=0 turns it back on).
  • Page views, sources, contact clicks, site search, Web Vitals and errors are collected without more setup. To count your own actions, see events.

Sources

The steps and plan rules come from these pages, as of November 2026. Platforms change their menus, so tell us if something has moved.