Installation

Add privacy-first analytics to your website in under two minutes. No cookies, no trackers, just a tiny script.

Add JAMP to your website by following the framework-specific guide below. Replace YOUR_WEBSITE_ID with the ID from your Settings page.

For Next.js App Router, inject the script into your root layout.

app/layout.tsx
export default function Layout({ children }) {
  return (
    <html>
      <head>
        <script defer
          data-website-id="YOUR_ID"
          src="https://jamp.io/main.js" />
      </head>
      <body>{children}</body>
    </html>
  )
}

If you are using the Next.js App Router, remember that Server Components cannot handle user interactions or access the window object. To track clicks, you must create a dedicated Client Component:

components/TrackButton.tsx
"use client";

export default function TrackButton() {
  const handleClick = () => {
    if (typeof window !== "undefined" && window.jamp) {
      window.jamp.track('signup_click');
    }
  };

  return <button onClick={handleClick}>Sign Up</button>;
}

You can then safely import and use <TrackButton /> inside any of your Server Components.

That's all you need. Pageviews are tracked automatically. Zero configuration is required unless you are setting up an ad-blocker bypass proxy.

Install with AI

Using an AI coding assistant like Cursor, Copilot or Claude? Paste this prompt to wire JAMP in automatically. Replace YOUR_WEBSITE_ID with your ID from Settings, or copy the pre-filled version from your dashboard.

Add JAMP analytics and monitoring to this project.

Insert these <script> tags into the <head> of the root layout (e.g. layout.tsx for Next.js, or index.html), each loaded with the "defer" attribute so they never block rendering. Replace YOUR_WEBSITE_ID with the ID from the JAMP Settings page. Do NOT add a cookie or consent banner, JAMP uses no cookies.

1. Analytics (required):
<script defer data-website-id="YOUR_WEBSITE_ID" src="https://www.jamp.io/main.js"></script>

2. Real-user Core Web Vitals (optional, sampled at ~25% of pageloads, sampled beacons count toward the event quota):
<script defer data-website-id="YOUR_WEBSITE_ID" src="https://www.jamp.io/app.js"></script>

3. JavaScript error tracking (optional, free, does not count toward quota):
<script defer data-website-id="YOUR_WEBSITE_ID" src="https://www.jamp.io/index.js"></script>

If a version string or git commit SHA is available at build time, add a matching data-release="<version>" attribute to every tag so each deploy is tracked in Site Health. To record custom conversions, call window.jamp.track('event_name') where relevant.