Skip to main content

Choosing Analytics for Your Nuxt App: A Data-Backed Guide

Harlan Wilton Harlan Wilton 8 min read

Most teams pick analytics based on name recognition. GA4 because everyone uses it. Plausible because a tweet said it was good. PostHog because the free tier looked generous.

That's backwards. The right analytics tool depends on what you need to track - and in Nuxt, on how well it handles SSR hydration and SPA navigation. We measured the transfer size, execution cost, and privacy profiles of every major provider. Here's what the data says.

What Do You Need?

Answer this before looking at any provider. Each step up adds complexity, weight, and cost.

  1. "I want visitor counts." - Cloudflare Web Analytics or Plausible Analytics.
  2. "I need custom events - clicks, downloads, signups." - Plausible Analytics, Umami Analytics, or Fathom Analytics.
  3. "I need ad ROI and conversion funnels." - Fathom Analytics or Google Analytics.
  4. "I need session replays and user identity." - PostHog or LogRocket.
  5. "I need to route data to 20 tools and a data warehouse." - Segment.

Most sites need tier 1 or 2. The temptation to jump to tier 5 because "we might need it" is expensive and usually wrong.

The Nuxt Analytics Matrix (2026)

Analytics Recommendation Matrix

2026
Need Provider Script Size Why
MinimalistCloudflare Web Analytics10.7 KBFree, zero-config for CF sites
Privacy-firstPlausible Analytics1.9 KBFastest UI, no cookies, sub-2KB
Self-hostedUmami Analytics3.2 KBOpen-source, SQL-based, lightweight
Marketing/adsFathom Analytics3 KBGoal tracking for high-traffic sites
Product growthPostHogNPM / 0 KB*Session replay, flags, heatmaps
Enterprise CDPSegment30.3 KBComplex data orchestration
Google AdsGoogle Analytics154.9 KBDeepest Google Ads integration
Tag ManagementGTM + GA4~264 KBGTM loads GA4 as sub-script

Practical advice: If you're building a SaaS product, the hybrid stack in section 7 beats any single tool. If you're building a marketing site, Plausible Analytics is the right default.

Nuxt-Specific Gotchas

Nuxt's hybrid SSR/SPA architecture breaks standard analytics snippets in two ways.

SSR Hydration Double-Counting

Place a tracking snippet in app.html or useHead and it fires twice: once when the browser parses the server-rendered HTML, again when Vue hydrates. Your pageview counts inflate by up to 2x for initial loads. (Nuxt Scripts docs)

Nuxt Scripts loads analytics onNuxtReady by default. The script only runs once the app is fully interactive on the client.

SPA Navigation Tracking

Standard scripts listen for window.load. In a Nuxt SPA, the page never reloads as you navigate between routes. Without router integration, you're tracking one pageview per session regardless of how many pages the user visits.

Nuxt Scripts' registry composables (like useScriptPlausible) automatically hook into the Nuxt router and send virtual pageviews on every navigation.

Both issues affect every analytics provider. Don't assume your current setup is tracking correctly without verifying against server-side logs.

Setup: 1 Line vs. ~40 Lines

// nuxt.config.ts
export default defineNuxtConfig({
  scripts: {
    registry: {
      plausibleAnalytics: { domain: 'example.com' }
    }
  }
})

The manual approach also misses the hydration fix. You'd need to delay the script manually - and that's before handling consent, first-party proxying, or TypeScript types.

2026 Pricing at 100k Pageviews/Month

Pricing at 100k Pageviews/Month

2026
Provider Free Tier Monthly
Google AnalyticsUnlimitedData limits apply
Free
Cloudflare Web AnalyticsUnlimited
Free
PostHog1M events/mo
Free
Umami Cloud100k events/mo
Free
Rybbit3k views
$13
Fathom7-day trial
$15
Plausible30-day trial
$19
Segment50k users
$60+

GA4's "free" tier comes with tradeoffs: raw event access requires a BigQuery export, standard properties have daily export limits, and retention is configurable only within product limits. For teams that need direct SQL access to their own data, Umami (self-hosted) or Plausible may be cheaper in the long run. Migrating off GA4 is also easier than it looks; both Matomo and Plausible support importing historical GA data.

The Ad-Blocker Problem

25-45% of users block trackers (Blockthrough Ad-Block Report 2026). Scripts hosted on google-analytics.com, plausible.io, or any known tracker domain get blocked at the DNS or network level.

Nuxt Scripts' first-party mode proxies all analytics traffic through your own domain, saving 200-500ms in addition to recovering blocked data (Nuxt Scripts benchmarks):

nuxt.config.ts
export default defineNuxtConfig({
  scripts: {
    firstParty: true,
    registry: {
      plausibleAnalytics: { domain: 'example.com' }
    }
  }
})

Requests go to yoursite.com/_scripts/... instead of plausible.io. To a browser or DNS blocker, they're indistinguishable from regular site traffic. Data accuracy returns to near 100%.

This also has a privacy benefit: third parties see your server's IP instead of your users'.

First-party mode supports Google Analytics, GTM, Meta Pixel, Plausible, Fathom, Segment, Clarity, Hotjar, and more.

The Hybrid Stack

You don't have to pick one tool. High-performing Nuxt teams typically run two:

The two tools don't overlap. Plausible Analytics/:LinkScript covers the marketing and content team's questions. PostHog covers the product team's.

nuxt.config.ts
export default defineNuxtConfig({
  scripts: {
    firstParty: true,
    registry: {
      plausibleAnalytics: { domain: 'example.com' },
      posthog: { apiKey: 'phc_XXXXXX' }
    }
  }
})

Both load deferred, both get first-party proxying, and neither requires a manual router hook.

Making the Call

Three questions narrow it down:

  1. Who reads the data? Marketing team - use Plausible Analytics. Engineers debugging sessions - use PostHog. Google Ads team - use Google Analytics.
  2. What's your compliance situation? EU users with no cookie consent UI - use Plausible Analytics or Umami Analytics (cookie-free). GDPR consent required - all providers work, Plausible and Umami need the least configuration.
  3. What's your scale? Under 1M events/month - PostHog is free. Under 100k events/month - Umami Analytics Cloud is free. High-volume marketing site - Fathom Analytics's flat pricing avoids surprise bills.

For most Nuxt apps: start with Plausible Analytics for traffic stats. Add PostHog when you need product analytics. Use Nuxt Scripts for both - router integration, SSR safety, and first-party proxying with no glue code required.

Add analytics to your Nuxt app

Install Nuxt Scripts, then choose a typed analytics integration for your app.

Was this page helpful?