tech stack
Analytics installed
MetricSpot detects analytics tools — GA4, Plausible, Fathom, Matomo, Umami. Without analytics, you can't see what's working or where visitors drop off.
What this check does
Scans the loaded page for known analytics scripts:
- Google Analytics 4 (
gtag/js,googletagmanager.com) - Plausible (
plausible.io/js/plausible.js) - Fathom Analytics (
cdn.usefathom.com) - Matomo (self-hosted or matomo.cloud)
- Umami (self-hosted; common path
umami.is/script.js) - Simple Analytics, Pirsch, Open Web Analytics
Reports which one(s) are present. Fails when none are detected — analytics is the table-stakes “are you measuring anything” check.
Why it matters
Running a website without analytics is flying blind. You don’t know:
- Which pages get traffic and which don’t.
- Where visitors come from (search, social, direct, referral).
- Which CTAs convert and which get ignored.
- Whether your last change improved or wrecked engagement.
Every other SEO and CRO decision downstream depends on having some answer to those questions. Three months of GA4 data is more useful than three months of A/B testing without it.
How to fix it
Pick one analytics tool and install it. The picks:
Privacy-first (no cookie banner needed in most jurisdictions):
- Plausible — open-source, hosted or self-hosted, 1 KB script, GDPR-friendly. $9/mo for hosted, free if self-hosted.
- Fathom — similar profile, slightly more enterprise polish.
- Umami — open-source, self-host on a $5 VPS.
- Simple Analytics — privacy-first, US-friendly pricing.
Feature-heavy (require consent banner):
- GA4 — free, integrates with Google Ads, deepest feature set, steepest learning curve.
- Matomo — open-source GA replacement, self-hostable, can be configured for cookie-less mode.
Plausible (recommended for marketing sites):
<script defer data-domain="yoursite.com" src="https://plausible.io/js/script.js"></script>
That’s it. No cookies, no consent banner needed in most jurisdictions, full dashboard live within an hour.
GA4 (recommended if you need Google Ads conversion tracking):
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXX');
</script>
Pair with Google’s Consent Mode v2 so the tag respects your cookie consent banner.
Self-hosted Umami:
<script defer src="https://your-umami-host.com/script.js" data-website-id="..."></script>
Self-hosting on a $5 Hetzner box gives you the data ownership of Plausible without the subscription.
WordPress: the Site Kit by Google plugin handles GA4 install in two clicks. For Plausible, the official plugin is one of the simplest WP plugins ever shipped.
Next.js: put the script in app/layout.tsx:
import Script from "next/script";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html>
<body>
{children}
<Script defer data-domain="yoursite.com" src="https://plausible.io/js/script.js" />
</body>
</html>
);
}
Astro: add the <script> tag to your BaseLayout.astro <head> (or <body> for defer-style scripts).
Test that it’s actually firing: open DevTools → Network, reload the page, look for a request to plausible.io/api/event or google-analytics.com/g/collect. If you don’t see it, your tag is misconfigured.
Frequently asked questions
Can I use multiple analytics tools?
Yes — many sites run GA4 (for Google Ads attribution) plus Plausible or Fathom (for the dashboard the team actually checks). The cost is page weight; the benefit is dual visibility. Don’t ship more than two — you’ll never look at the third.
Why fail this check at all? Some sites legitimately don’t need analytics.
Almost no commercial site genuinely doesn’t. Personal blogs and one-off landing pages are exempt in spirit; the rule fails as a soft warning so you notice if a deploy accidentally stripped the tag (common cause of “rankings dropped overnight” mysteries).
What about server-side analytics?
Tools like GoatCounter, Pirsch in server mode, or homegrown log analyzers count as analytics for our purposes — but our check looks for client-side scripts. Add a comment in your HTML head (<!-- analytics: server-side via goatcounter -->) so you remember why this check warns on your site.
Sources
Last updated 2026-05-11