Install guide · cms · ~4 min

Install Admaxxer on WordPress

One-click plugin — WooCommerce-aware.

The Admaxxer WordPress plugin (v1.3.0) handles pixel injection on every page and, when WooCommerce is active, registers three server-side order hooks (woocommerce_thankyou, woocommerce_payment_complete, woocommerce_order_status_completed) so paid orders survive ad blockers, ITP, and PayPal/Stripe redirect drops. Everything is configured from one screen at Settings › Admaxxer — five fields total: Website ID (required), Proxy Origin, Cookieless Tracking, SPA Hash Mode, and Webhook HMAC Secret. The Webhook HMAC Secret is strongly recommended for WooCommerce stores — without it the pixel still serves pageviews but server-side order events are silently skipped, so pixel-only mode is fine for headless or analytics-only setups but loses ad-blocker resistance for revenue.

Steps

  1. 1 Download the plugin

    Grab the latest plugin ZIP from /wp-plugin/dist/admaxxer-1.3.0.zip, or install directly from the WordPress.org plugin directory by searching for Admaxxer Analytics.

  2. 2 Upload & activate

    In WordPress admin, go to Plugins → Add New → Upload Plugin, upload the ZIP, and click Activate. The plugin registers a settings screen at Settings → Admaxxer.

  3. 3 Paste your Website ID

    Open Settings → Admaxxer. Copy your Website ID from Integrations → Pixel install in the Admaxxer dashboard (it starts with admx_) and paste it into the Website ID field. This is the only required field.

  4. 4 (Optional) Configure proxy + privacy toggles

    Three optional toggles tune the pixel for your stack. Proxy Origin routes pixel JS through your own domain to bypass ad blockers. Enable Cookieless Tracking swaps the loaded bundle to /js/script.cookieless.js — no cookies set, GDPR-friendly. Enable SPA Hash Mode tracks hash-route navigation (/#/page) for themes that use it. Leave them off if unsure — defaults are right for ~95% of stores.

  5. 5 (Recommended for WooCommerce) Paste the Webhook HMAC Secret

    If WooCommerce is active and you want server-side order attribution (recommended — survives ad blockers, ITP, and PayPal/Stripe redirect drops), open Integrations in the Admaxxer dashboard, click WooCommerce → Connect, and copy the Signing secret from the “Final step: webhook setup” card. Paste it into the Webhook HMAC Secret field in WordPress. Without this secret, the pixel still tracks pageviews but WooCommerce server-side orders are silently skipped — set it before placing your first paid order.

  6. 6 Save Settings

    Click Save Settings. The pixel goes live site-wide; if WooCommerce is active and a Webhook HMAC Secret is configured, every paid order POSTs to Admaxxer over HMAC-SHA256.

  7. 7 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

The plugin shows "Activated" but no events arrive.
Three common causes. (1) Website ID is empty or wrong — re-check that it starts with admx_. (2) A caching plugin (WP Rocket, W3 Total Cache, LiteSpeed) is stripping the pixel — exclude admaxxer.com from minification and deferred-JS rules. (3) A security plugin (Wordfence, Sucuri) is blocking the outbound POST — whitelist admaxxer.com in your firewall.
Pixel works but WooCommerce orders never appear in Admaxxer.
The most common cause: the Webhook HMAC Secret field in Settings → Admaxxer is empty. Without it, the plugin silently skips the server-side order POST (this is intentional fail-closed behavior — the plugin will not send unsigned webhooks). Open Integrations → WooCommerce → Connect in the Admaxxer dashboard and copy the Signing secret from the “Final step: webhook setup” card. Paste it into the WP plugin and place a new test order — the previous unposted orders are not retroactively sent (we don't backfill). Second cause: a caching plugin is stripping the cookie that carries the visitor ID — exclude admx_visitor_id from your cache vary rules.
My PayPal/Stripe redirect order didn't track &mdash; does the plugin handle redirect drops?
Yes, since v1.1.0. The plugin subscribes to woocommerce_payment_complete in addition to woocommerce_thankyou, so orders that pay but never reach the thank-you page (browser closed, network drop, redirect blocked) are still captured server-side. Atomic local dedup via WC order meta prevents double-firing.
Where is the Webhook HMAC Secret in the Admaxxer dashboard?
Open Integrations → click WooCommerce → click Connect. The “Final step: webhook setup” card reveals the Signing secret. Each website has its own secret — if you run multiple stores, each one gets its own.
Cookieless mode for GDPR &mdash; do I still need a consent banner for the pixel?
When Enable Cookieless Tracking is on, the plugin loads /js/script.cookieless.js, which writes no persistent cookie — visitor IDs come from a salted fingerprint that rotates daily. This setup is generally recognized as exempt from EU/UK consent banner requirements for the pixel itself, but final compliance depends on your jurisdiction — review with your DPO. With the toggle off (default) a single first-party cookie _admx_visitor_id is set with a 1-year expiry; disclose it.
Is the plugin compatible with WooCommerce HPOS (High Performance Order Storage)?
Yes. The plugin declares HPOS compatibility via before_woocommerce_init and uses wc_get_order() rather than direct SQL — works on legacy posts-table and HPOS tables identically.
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.