measuremy.site

How to add analytics to your Next.js site

This adds measuremy.site, cookieless website analytics, to a Next.js site. It is one script tag of under 1 KB: no cookies, no npm package, no consent banner for the tracker. The free plan covers 5,000 pageviews a month.

The quickest way: ask your coding agent

Paste this into Claude Code, Cursor or Codex
Add measuremy.site analytics to this project: connect the measuremy.site MCP server at https://a.measuremy.site/mcp (it signs in with OAuth, no key), then tell me how to sign in. Details: measuremy.site/llms.txt

The agent connects to measuremy.site, you sign in through your browser, and it adds the tag below to the right file for you. To do it by hand, follow the steps.

1. Get your site key

Create a free account and add your domain. The Setup tab shows your snippet with your site key filled in. The key is public and can only record visits, so it is safe in your source code.

2. Add the script tag

App Router: put the tag inside <head> in the root layout, app/layout.tsx (or .jsx):

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html lang="en">
      <head>
        <script defer src="https://a.measuremy.site/t.js" data-key="YOUR_SITE_KEY"></script>
      </head>
      <body>{children}</body>
    </html>
  );
}

Pages Router: put the same tag inside <Head> in pages/_document.tsx.

Client-side navigation with <Link> and router.push is counted automatically, because the script listens for History API changes. You don't need next/script or a route-change hook.

3. Check it works

Publish the change, then open your live site. The first visit from your own domain verifies it and the visit shows up on the dashboard within seconds. Visits from localhost aren't counted, so test on the deployed site.

4. Track signups and other conversions

Call window.measuremysite.track from a client component, for example after a successful signup:

"use client";

declare global {
  interface Window {
    measuremysite?: { track: (name: string, props?: Record<string, unknown>) => void };
  }
}

export function onSignedUp() {
  window.measuremysite?.track("signup", { plan: "free" });
}

Or, with no JavaScript, add data-measuremysite-event="signup_click" to any link, button or form.

Any event counts as a conversion for the channel the visitor came from.

Other platforms, and funnels and campaign links, are in the install guide.

Try it on your site

Free for 5,000 pageviews a month, no card. Paste one sentence into your coding agent, or add one script tag yourself.

Start free See the live demo

Add measuremy.site analytics to this project: connect the measuremy.site MCP server at https://a.measuremy.site/mcp (it signs in with OAuth, no key), then tell me how to sign in. Details: measuremy.site/llms.txt

More guides