Install guide · framework · ~2 min

Install Admaxxer on Astro

Drop into src/layouts/Layout.astro.

Astro renders to static HTML by default — the Admaxxer snippet in the site-wide <head> of your root layout is the simplest, SSR-safe approach. No client hydration needed.

Steps

  1. 1 Open your root layout

    Edit src/layouts/Layout.astro (or whichever layout wraps your pages).

  2. 2 Add the snippet to the <head>

    Paste the tag inside the <head> block, replacing YOUR_WEBSITE_ID and yourdomain.com with your values.

    src/layouts/Layout.astro astro
    ---
    const { title } = Astro.props;
    ---
    <html>
      <head>
        <title>{title}</title>
        <script defer
          data-website-id="YOUR_WEBSITE_ID"
          data-domain="yourdomain.com"
          src="https://admaxxer.com/js/script.js"></script>
      </head>
      <body><slot /></body>
    </html>
  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.