Install Admaxxer with GTM
Install Admaxxer with Google Tag Manager
Admaxxer is a DTC analytics platform with built-in Meta + Google ad ops. Installing via Google Tag Manager is the fastest path when you do not control the template code or when marketing owns the deploy cadence. TL;DR: add a Custom HTML tag with the Admaxxer loader on All Pages, add a second Custom HTML tag that fires on your purchase event with `admaxxer.track('purchase', {...})`, validate in GTM Preview, then publish the container.
## Symptoms
Use GTM when:
- Marketing needs to install Admaxxer without a developer deploy.
- You already manage Meta Pixel, GA4, and similar tags through GTM.
- You need a quick A/B install rollout (swap tag environments) before going fully in-code.
## Root cause
Admaxxer's loader is a single `
```
Replace `PUBLIC_WEBSITE_ID` with the id on the Admaxxer install page.
### Step 2: Set the trigger to All Pages
Pick the built-in "All Pages" trigger. The loader autocaptures pageviews, including SPA history changes on most stacks.
### Step 3: Create the purchase trigger
Triggers -> New -> Custom Event. Set the event name to match your dataLayer purchase event (commonly `purchase` for GA4 ecommerce). Save it.
### Step 4: Create the purchase tag
Tags -> New -> Custom HTML. Paste something like:
```html
```
Bind the trigger to the purchase Custom Event trigger from Step 3.
### Step 5: Validate in Preview
Click "Preview" in GTM, browse your site, trigger a test purchase. Watch the Tag Assistant panel: both tags should show "Fired" on the purchase event.
### Step 6: Publish
When Preview looks clean, click "Submit" in GTM and publish the version with a readable description like "Admaxxer loader + purchase v1". Add a workspace notification so the marketing channel sees when the change goes live.
### Step 7: Set tag sequencing
If you also fire Meta Pixel or GA4 through GTM, put the Admaxxer loader in the same tag sequence bucket. That way, if one vendor script throws, the others still fire. GTM's tag sequencing config is under Advanced Settings on each tag.
## Verify the fix
- `window.admaxxer` exists in the console on every page.
- A page visit appears in Admaxxer's realtime pane within about 30 seconds.
- A test purchase shows up in Admaxxer's events log with correct `value`, `currency`, and `order_id`.
- The attribution breakdown reflects the UTM on arrival (test with `?utm_source=gtm_smoke`).
- Both tags — loader and purchase — show green in GTM Preview for the purchase Custom Event.
- No duplicate purchase rows for the same order id (if you see two, see the duplicate-events guide).
## Prevent it next time
- **Use version descriptions.** Name every GTM publish so rollbacks are easy and audit-friendly.
- **Keep loader and tracker tags small.** Large Custom HTML tags can hit GTM's script-size limits and slow down container load.
- **Add a smoke test tag** that logs to the console when the Admaxxer global is ready; this makes regressions obvious.
- **Coordinate with CSP.** If your site enforces CSP, the Admaxxer host must be in `script-src` and `connect-src` — see the CSP guide.
- **Lock down workspace permissions.** Only give Publish rights to people who understand the tags they are shipping; Preview-only is usually enough for marketers.
## Related guides
- [CSP blocking admaxxer script.js](/guides/csp-blocking-admaxxer-script)
- [Next.js install + SPA pageview validation](/guides/nextjs-install-spa-pageview-validation)
- [GTM install index](/documentation/install/gtm)
## FAQs
**Q: Do I have to use Custom HTML or is there a GTM template?**
A: Admaxxer ships a community GTM template. If it is available in your workspace, prefer it — the Custom HTML approach is a reliable fallback.
**Q: Can I install only on specific pages?**
A: Yes. Change the trigger from All Pages to a Page View trigger with a URL filter. Keep in mind attribution gets fuzzy if pageviews are only partially tracked.
**Q: Does GTM install impact Core Web Vitals?**
A: The loader is async and the tracker is small, so impact is minimal. If you are LCP-sensitive, keep the loader as the only synchronous piece.
Frequently Asked Questions
Do I have to use Custom HTML or is there a GTM template?
Admaxxer ships a community GTM template. If it is available in your workspace, prefer it — the Custom HTML approach is a reliable fallback.
Can I install only on specific pages?
Yes. Change the trigger from All Pages to a Page View trigger with a URL filter. Partial tracking makes attribution fuzzy.
Does GTM install impact Core Web Vitals?
The loader is async and the tracker is small, so impact is minimal. If you are LCP-sensitive, keep the loader as the only synchronous piece.
Put This Knowledge Into Action
Bring Meta and Google ads into one self-hosted workspace.
Get Started Free