Website Tracking & Analytics Audit
Free SEO + tracking audit — see exactly what's broken in under 60 seconds
Found 1 GTM container (GTM-WPK5P9J); 1 loaded successfully. GA4 is installed and sending data. 3 JavaScript error(s) were logged during load.
Marketing & analytics tags observed sending data while the page loaded.
Every dataLayer push observed during page load — with full payload and configuration analysis.
›GTM lifecycle events (3)— gtm.js, gtm.dom, gtm.load, etc.
Data points present in the dataLayer that your tags can read (the values pushed alongside each event).
The actual tracking requests your browser sent — the ground-truth proof that a tag fired.
GTM-WPK5P9J
A Google Tag Manager container is installed on this page.
1/1 container(s) returned a successful gtm.js response.
The container's JavaScript downloaded successfully, so GTM can run.
No <noscript> fallback found in the HTML source.
The recommended <noscript> fallback is missing. It's minor, but Google's standard install includes it.
Fix this issueGTM snippet appears inside <head>.
The container is loaded early, as Google recommends, so tags fire as soon as possible.
dataLayer was not clearly initialised before the container snippet.
If the container loads before dataLayer is ready, early values (like ecommerce data) can be lost.
Fix this issueG-7XTJM93TLW, G-0G98JK5SPW — collect hit observed.
Google Analytics 4 is actively sending pageview/event data.
3 error(s) logged.
JavaScript errors were logged during page load. These don't necessarily affect tracking — only errors that directly interrupt pixel execution matter. See any vendor-specific errors below for actionable issues.
'HubSpot is not defined' error observed at runtime.
The HubSpot loader script is either missing or running after the code that calls hbspt.forms.create(). Load js.hs-scripts.com before any hbspt calls, or move the initialisation into the HubSpot script's onLoad callback.
Fix this issueFunnel events are page-specific: purchase only fires on order confirmation, add_to_cart requires a user click. Events shown as are not observable on this page type — audit each page separately for full coverage.
Discovery
Not observed firing, but 'view_item_list' was found configured in the site's JavaScript. It may fire only when users take specific actions or visit the relevant page type. Not observed on this page. Set up 'view_item_list' on your collection/category/search pages for funnel visibility.
Not observed during this load — 'select_item' requires user interaction on collection/category pages. Verify by manually testing the action on that page.
Consideration
Not observable on home pages — 'view_item' only fires on product detail pages. Audit that page type to verify coverage.
Cart Activity
Not observable on home pages — 'add_to_cart' only fires on product pages and cart. Audit that page type to verify coverage.
Not observable on home pages — 'remove_from_cart' only fires on cart page. Audit that page type to verify coverage.
Not observable on home pages — 'view_cart' only fires on cart page. Audit that page type to verify coverage.
Checkout Funnel
Not observable on home pages — 'begin_checkout' only fires on checkout entry page. Audit that page type to verify coverage.
Not observable on home pages — 'add_shipping_info' only fires on checkout shipping step. Audit that page type to verify coverage.
Not observable on home pages — 'add_payment_info' only fires on checkout payment step. Audit that page type to verify coverage.
Not observable on home pages — 'purchase' only fires on order confirmation / thank-you page. Audit that page type to verify coverage.
Post-Purchase
This event fires server-side (server-side or order management system) and cannot be observed by a browser-based audit.
These tracking scripts are hardcoded directly in your page HTML. Moving them into GTM makes them easier to update, pause, version, and conditionally fire — without touching your code.
Meta Pixel script (fbevents.js) found hardcoded directly in the page HTML.
Fix: Remove the hardcoded snippet and use a GTM 'Facebook Pixel' or 'Custom HTML' tag instead.
Risk: If GTM also fires Meta Pixel, you'll double-count conversions and inflate ROAS. Centralising in GTM also lets you pause, version, and conditionally fire without a code deploy.
GA4 gtag.js snippet installed directly in the page HTML (outside GTM).
Fix: Remove the hardcoded GA4 snippet and manage it via a GTM 'Google Analytics: GA4 Configuration' tag.
Risk: Running GA4 both directly and via GTM sends duplicate pageviews and inflates every metric in your reports.
Hotjar snippet hardcoded in the page HTML.
Fix: Use the GTM Hotjar community tag template to manage it centrally.
Risk: Updates require a code deploy rather than a GTM publish. No conditional firing or easy pausing.
HubSpot tracking snippet or forms embed hardcoded in the page HTML.
Fix: Load the HubSpot script via a GTM Custom HTML tag and initialise forms only after the script has loaded.
Risk: Calling hbspt before the HubSpot loader has executed causes 'hbspt is not defined' errors and broken form embeds. Centralising in GTM also enables conditional loading.
The audit automatically visited additional page types discovered on the site to verify tags fire across the full funnel, not just on the entry page.
Failed to load resource: the server responded with a status of 404 ()
Failed to load resource: the server responded with a status of 404 ()
hbspt is not defined https://aimpoint.us/:3523:7
Your tracking has gaps — PayHelm can fix this.
Broken tags mean lost attribution and bad decisions. PayHelm unifies your ecommerce, ad, and analytics data so every number is trustworthy — no guesswork.