Install guide · framework · ~3 min

Install Admaxxer on React Router

npm i admaxxer, call in root.tsx.

React Router v7 (the Remix successor) renders a root <Scripts /> block in root.tsx. Add the Admaxxer init there so the pixel fires on the client after hydration.

Steps

  1. 1 Install the package

    Add admaxxer to your project.

    bash
    npm i admaxxer
  2. 2 Initialize in root.tsx

    Add a client-only initializer. React Router v7 ships with full SSR; initAdmaxxer no-ops on the server.

    app/root.tsx tsx
    import { useEffect } from 'react';
    import { initAdmaxxer } from 'admaxxer';
    
    export default function App() {
      useEffect(() => {
        initAdmaxxer({ websiteId: 'YOUR_WEBSITE_ID', domain: 'yourdomain.com' });
      }, []);
      return <Outlet />;
    }
  3. 3 Verify the install

    Load any public page on your site in a fresh browser tab. Within a few seconds, the Admaxxer dashboard realtime view should show the event. If nothing lands after 2 minutes, re-check the snippet is actually in the rendered HTML <head> (View Source, not just DevTools).

Verify installation

Troubleshooting

No events are showing up. What now?
Open DevTools Console and Network. Filter for script.js and /api/event. If they are blocked:csp, your Content Security Policy is blocking admaxxer.com — see /documentation/troubleshoot/csp. Also double-check that data-website-id matches the ID shown in your dashboard.
Events show up in staging but not production.
Confirm data-domain matches the production hostname exactly (no protocol, no trailing slash). Also confirm the website's Allowed Domains list in settings includes the prod domain.
My site is a single-page app — am I missing pageviews?
Use script.hash.js if you rely on location.hash routing. Otherwise the default script.js already hooks history.pushState/replaceState and tracks SPA navigations.