Vercel Analytics Alternatives: When the Event Meter Runs Out in 2026

Built into the platform, cookieless by default, one package to install — Vercel Web Analytics is a genuinely good starting point. Then the 50,000-event Hobby cap shows up, or the per-event Pro bill does. Here's exactly where it stops, and five ways to fill the gap.

By Null Agency · Updated September 15, 2026 · Written for teams on Vercel deciding whether Web Analytics still fits

TL;DR — built in is real, but it's metered by the event

Vercel Web Analytics is cookieless and near-zero setup if you're already deploying on Vercel: install the @vercel/analytics package or turn on the framework integration, and it reads straight into your existing Vercel dashboard. The catch is the pricing model — you're billed by the event, not given a flat rate.

Five alternatives compared below, plus a numbered how-to for wiring a script-based tool into a Next.js App Router site and an Astro site, both deployed on Vercel.

What Vercel Web Analytics actually gets right

Credit where it's due: for a team already on Vercel, this is the lowest-friction analytics install that exists. There's no script tag to remember, no separate account to create — you add the @vercel/analytics package or enable the framework integration, redeploy, and pageviews start showing up in the same dashboard you already use for deployments and logs.

It's also cookieless by design: visitors are identified by a hash of the request that resets daily, meaning, in Vercel's own words, visitors "can't be tracked between different days or different websites" — which is why it doesn't need the consent banner that cookie-based tools like GA4 generally require in the EU/UK. Bot traffic is filtered by User-Agent before it hits your numbers, and each panel can export up to 250 entries as CSV if you need a quick pull for a report.

The dashboard covers the basics, including a bounce rate defined as single-page sessions ÷ total sessions — a plain, checkable definition rather than a proprietary "engagement" score. For teams that just want a sanity-check number without adding a third-party vendor to their stack, that's a fair trade.

Because it's a platform feature rather than a bolt-on script, there's also nothing to misconfigure. There's no data-site attribute to typo, no separate DNS or edge worker to point at — it's tied to the same deploy pipeline as the app itself. For a small team shipping a Next.js or Astro project on Vercel who just wants "is anyone visiting this," the honest answer is: this alone might be all you ever need, right up until traffic or reporting needs grow.

Where Vercel Web Analytics stops

The friction shows up the moment your traffic or your requirements grow past "quick sanity check." The limits that matter most:

The event meter. Every plan meters the collected event — a pageview or a custom event, summed across every project on the team. Hobby includes 50,000 events/month with just a 1-month reporting window and no way to buy more: cross the cap and collection pauses after a 3-day grace period until the next billing cycle starts. Pro is billed at $0.03 per 1K events with a longer 12-month window, but now every additional pageview and every custom event is a line item, not a flat fee.

Custom events and UTMs are gated, not free. Hobby ships with no custom events at all. Pro adds them, but caps each event at 2 properties. Want to see which campaign drove those events? That's the Web Analytics Plus add-on, an extra $10.00/month per team, which raises the window to 24 months, allows 8 properties, and is the only tier where UTM breakdown exists. If you're used to a UTM Breakdown table just showing up for free, this is the part of Vercel's pricing that surprises people.

Vitals are a different bill entirely. Web Analytics never reports Core Web Vitals — that's Speed Insights, a separate Vercel product with its own pricing. If real-user LCP, CLS, FCP or TTFB matters to you, budget for a second line item, or check our Core Web Vitals real-user-monitoring guide for what to look for across tools.

It's Vercel-only. Web Analytics is installed via the @vercel/analytics package or a framework integration and read inside the Vercel dashboard — it isn't a portable script tag, so it simply doesn't exist for a site hosted on Netlify, Cloudflare Pages, or your own server. Teams split across hosts, or who move a project off Vercel later, lose the tool entirely at that point.

The event pool is shared across your whole team, not per project. The 50,000-event Hobby allowance and the per-1K Pro rate both apply across every project under the account, so a marketing site, a docs site, and a dashboard app on the same team draw from one meter. A single traffic spike on any one of them — a product launch, an HN front page, a newsletter blast — can burn through a month's allowance in a day, and once the cap is hit, collection pauses after the 3-day grace period until the next cycle.

Run the arithmetic and the cap gets tight fast. A site doing 2,000 daily pageviews alone is already at 60,000 events a month before a single custom event is added — over the Hobby limit on pageviews by themselves, and every custom event you add on Pro is counted on the same meter.

Vercel Web Analytics vs. five alternatives

ToolCookielessCustom eventsUTM dataCore Web VitalsPricing model
Vercel Web AnalyticsYes (daily hash)Pro+ only, 2 propertiesPlus add-on onlyNo — separate product (Speed Insights)Hobby 50K events/mo free; Pro $0.03/1K events; Plus +$10/mo/team
GhostMetricsYesYes, every planSource/medium/campaign, every planYes — FCP, LCP, CLS, TTFB (no INP)Free forever (1 site); Pro $9.99/mo flat, unlimited sites (fair-use ceiling of 250)
PlausibleYes, no persistent identifiersYes (goals)YesNoNo free plan, 30-day trial; from $9/mo for up to 10k monthly pageviews, scales by tier
FathomYesYesYesNoNo free plan, 7-day trial; pageview tiers from $15/mo (100k) to $470/mo (25 million), custom above
UmamiYesYesYesNot a core focus — check current docsFree to self-host (infra cost only); Umami Cloud paid — check current pricing
Cloudflare Web AnalyticsYes, no fingerprintingNoNoYesFree

A few things worth reading past the row headers. GhostMetrics is the only option here that includes both custom events and Core Web Vitals on a free plan — full disclosure, that's our own product, built specifically to work the same on Vercel as anywhere else. Plausible and Fathom both skip a free tier entirely and price by pageview volume instead of by event; neither ships Core Web Vitals, so if vitals matter you'd still need Speed Insights or a separate tool alongside either one. Umami is the open-source option — self-host it for infrastructure cost only, or use Umami Cloud instead. Cloudflare Web Analytics is the closest free match to Vercel's own tool and actually includes Core Web Vitals where Vercel's Web Analytics doesn't — see our Cloudflare Web Analytics alternatives piece for where it in turn falls short (no custom events, no UTM breakdown).

How to add a script-based tool to a Next.js or Astro site on Vercel

Switching away from Vercel Web Analytics doesn't mean switching hosts. A script-based tool like GhostMetrics, Plausible, or Fathom is a single tag — it works on Vercel exactly the way it works everywhere else, no package and no build step required. Here's the install for the two most common Vercel setups.

  1. Grab your site ID. Create a site in your chosen tool's dashboard and copy the one-line script tag it gives you — for GhostMetrics that's a generated site ID you paste into data-site.
  2. Next.js App Router: edit the root layout. Open app/layout.tsx and add the tag inside <head> as a plain <script defer> element:
    export default function RootLayout({
      children,
    }: {
      children: React.ReactNode;
    }) {
      return (
        <html lang="en">
          <head>
            <script
              defer
              src="https://ghostmetrics.nullagency.io/gm.js"
              data-site="YOUR-SITE-ID"
            ></script>
          </head>
          <body>{children}</body>
        </html>
      );
    }
    A plain <script defer> tag works fine here — you don't need next/script for a tracker like this, though it will also work if you'd rather standardize on it.
  3. Astro: edit your shared layout, and mark the tag is:inline. Astro processes script tags by default, which can strip a plain data-site attribute — adding is:inline tells Astro to leave the tag exactly as written:
    ---
    ---
    <html lang="en">
      <head>
        <script
          is:inline
          defer
          src="https://ghostmetrics.nullagency.io/gm.js"
          data-site="YOUR-SITE-ID"
        ></script>
      </head>
      <body>
        <slot />
      </body>
    </html>
    Skip is:inline and the attribute can silently disappear, which shows up later as pageviews recorded with no site ID attached — confusing to debug after the fact, easy to avoid up front.
  4. Deploy as normal. There's no vercel.json change, no new dependency beyond the tag itself, and no build step to add — commit, push, and Vercel deploys it like any other markup change.
  5. Verify on the live URL. Open your deployed site in a fresh tab and confirm the visit appears in the new tool's real-time view before you rely on it for anything.
  6. Tag a conversion point. Add data-gm-event="signup-click" (or the equivalent for your chosen tool) to a button you actually care about, so you're not just counting pageviews from day one.
  7. Repeat per environment if you want separate site IDs. Vercel deploys preview branches and production from the same codebase — if you want preview traffic kept out of your production numbers, use an environment variable for data-site and set a different value per Vercel environment rather than hardcoding one ID in the layout file. In Next.js the variable needs the NEXT_PUBLIC_ prefix if the layout is a client component; in Astro use a PUBLIC_-prefixed variable read from import.meta.env so the value survives into the built markup. Note this means two GhostMetrics sites, so it needs Pro; on the free plan's single site, keep preview deploys untagged instead.

The same pattern — one script tag, one attribute, no package — is why this kind of tool travels. If you later move the project to Netlify or anywhere else, the tag comes with you unchanged; see our guide on adding analytics to a static site for the same install pattern on Hugo, 11ty, and plain HTML.

What you give up when you move off Web Analytics

Switching to a script-based tool is not free of trade-offs, and the honest version of this page names them.

The dashboard next to your deployments. Web Analytics lives inside the Vercel dashboard you already open for builds and logs. A separate tool is a separate login and a separate tab, and nothing in it knows which deployment was live when a pageview happened. If "did the traffic change after this deploy" is a question you ask often, you will be lining up timestamps by hand.

A package instead of a tag. With @vercel/analytics the framework integration is the install. With GhostMetrics or any of the alternatives above, the install is one <script defer> tag in your layout's <head> — simpler to reason about, but it is a tag you own, so it goes in your source and ships with every deploy, preview included, unless you gate it on an environment variable as shown in the how-to.

Visitor counting changes shape. Vercel identifies a visitor by a request hash that resets daily. GhostMetrics goes further in the same direction: there is no visitor identifier at all, a session is one browser tab, and the pageview counter lives in sessionStorage until that tab closes. Both approaches are cookieless and both mean you cannot follow one person across days — GhostMetrics also cannot follow them across two tabs opened at once. If daily uniques are a number you report upstream, expect the two tools to disagree, by design.

Vitals move into the same dashboard, with one gap. Vercel sells Core Web Vitals as Speed Insights, a separate product with its own pricing. GhostMetrics captures FCP, LCP, CLS and TTFB from real users on every plan and shows them per page — but it does not capture INP, so a Speed Insights user who leans on that metric loses it in the move.

When Vercel Web Analytics is still the right call

None of the above means rip it out reflexively. It's a good default in specific situations.

Low, predictable traffic. If your project sits comfortably under 50,000 events a month and you don't need custom events, UTM breakdown, or vitals, the Hobby tier costs nothing and requires no extra vendor relationship at all.

You only need a sanity-check number. If the goal is "did this deploy get traffic" rather than a real funnel or campaign report, the built-in dashboard next to your deployment logs is genuinely convenient — one less tab, one less login.

You're already paying for Pro or Plus anyway. If your team is already on Vercel Pro for other reasons and the event volume is modest, the marginal $0.03 per 1K events can be small enough that a second vendor, review cycle and script tag isn't worth the saving — even against a free tier.

You only care about first-party, platform-native reporting. Some teams deliberately want fewer vendors touching production, not more — if that's the priority and the 1-month (or 12-month, on Pro) reporting window is enough for how you review traffic, adding a second script just to get custom events or UTMs may not be worth the extra moving part.

Want custom events, UTMs, and Core Web Vitals without the event meter? Try GhostMetrics

Works on any host$0 foreverUnlimited pageviews$9.99/mo flat Pro

GhostMetrics is cookieless web analytics with no event cap and no per-event billing — we dogfood it on this site. Install one script tag in your Next.js layout.tsx head or your Astro layout with is:inline, and you're live on Vercel, Netlify, Cloudflare Pages, or anywhere else. The free plan is free forever: one site, unlimited pageviews, real-time dashboard, every view, full history — no event meter to watch.

Custom events and a UTM Breakdown (source, medium, campaign) are included on every plan, including free — not gated behind a paid add-on. GhostMetrics also captures Core Web Vitals from real users — FCP, LCP, CLS, and TTFB (not INP) — in the same dashboard, with no separate product or bill. Need more than one site or a public shareable dashboard? Pro is $9.99/mo flat, unlimited pageviews, unlimited websites (fair-use ceiling of 250), with a 30-day free trial — a card starts the trial, nothing is charged for 30 days, cancel anytime. Raw event export as CSV or JSON is on every plan, including free.

Start free — no event cap, no card See the live demo

FAQ

Does Vercel Web Analytics use cookies?
No. Vercel Web Analytics identifies visitors with a hash of the request that resets daily, so visitors can't be tracked between different days or different websites. There's no cookie and no persistent identifier.
What happens when I go over the 50,000-event Hobby cap?
Collection pauses after a 3-day grace period and stays paused until your next monthly cycle. You cannot buy more events on Hobby. Pro is metered instead, at $0.03 per 1K events with no fixed ceiling — check the current Vercel docs for how a mid-cycle plan change is handled.
Can I track custom events on Vercel's free Hobby plan?
No. Custom events on Vercel Web Analytics require the paid Pro plan, and even there each event is limited to 2 properties. Every custom event you send also counts against your metered event total. GhostMetrics' free plan includes custom events at no extra cost and with no event meter — though it stores a single metadata field (section) per event alongside the page path and the session's UTMs, where Vercel Pro allows 2 properties.
Does Vercel Web Analytics report Core Web Vitals?
No. Core Web Vitals live in a separate Vercel product, Speed Insights, with its own pricing on top of Web Analytics. GhostMetrics captures FCP, LCP, CLS and TTFB from real users on every plan, including free — though it does not capture INP.
Can I use Vercel Web Analytics on a site hosted outside Vercel?
No. It's installed via the @vercel/analytics package or a framework integration and read inside the Vercel dashboard — it's built into the Vercel platform, not a portable script tag. A script-based tool like GhostMetrics, Plausible, or Fathom works the same way on Vercel, Netlify, Cloudflare Pages, or any other host.

Keep reading

Netlify Analytics Alternatives

The log-based option, and where it stops

Add Analytics to a Static Site

Snippets for Astro, Hugo, 11ty, Next.js and more

Core Web Vitals RUM

What real-user vitals monitoring should cover

GhostMetrics Live Demo

The real dashboard, live data

Disclosure: GhostMetrics is built by Null Agency and we use it on this site, so we're not a neutral party about our own product — we've kept the claims to what the free and paid plans actually do, and pointed to Vercel's own tooling and other hosted alternatives where they genuinely fit better. Pricing for third-party products can change; always check the vendor's current pricing page before deciding.