Website Tracking & Analytics Audit
PayHelm

Website Tracking & Analytics Audit

Free SEO + tracking audit — see exactly what's broken in under 60 seconds

Full GTM config is private — this reports the observed runtime container (what actually loads & fires). We'll email your report to the address above.

Works, with issueshttps://windmillsgroup.com/

The audit of your website's home page reveals a few areas that need attention. Currently, Google Analytics 4 (GA4) is set up and successfully tracking, but there are multiple GA4 IDs, which could lead to conflicting data. Additionally, your site is using the older Universal Analytics, which is now deprecated and should be replaced with GA4. There is no Google Tag Manager (GTM) container detected, which is unusual as GTM is typically used for managing tags. Furthermore, Google Consent Mode is not being utilized, which might affect compliance with privacy regulations. Since your store is not on Shopify, there's no need to worry about Trekkie or Web Pixels API. However, you should consider auditing other key pages like product, cart, checkout, and order-confirmation pages to ensure comprehensive tracking. Given the issues identified, I recommend connecting your store to PayHelm AI for a more detailed analysis and guidance on optimizing your analytics setup.

Tracking Health: 77/100 · C
Overall Tracking Health
77out of 100Grade CFair
Tag manager installed12/20

Tag setup present but not confirmed loading.

GA4 tracking20/20

GA4 is installed and sending data.

Pageview / event coverage20/20

Not an ecommerce store — scored on basic analytics coverage.

Data quality15/15

No data-quality issues found in tracked events.

Consent Mode0/10

Consent Mode not detected.

Performance10/10

Tags load quickly.

No conflicts0/5

Conflicting or deprecated analytics IDs detected.

Advanced Tracking Features
Consent Mode v2Warning

No Google Consent Mode was detected. Since March 2024 Google requires Consent Mode v2 for sites with EEA/UK traffic running Google Ads — without it, conversion and remarketing data is lost for users who haven't consented.

default: noupdate: no✗ ad_user_data✗ ad_personalization
Tag PerformancePass

Tags loaded quickly — no performance concern.

GA4 first hit 8.88sDOM ready 12.12sPage load 14.79s
Cross-domain TrackingInfo

No cross-domain (linker) tracking was detected. If your checkout or other steps live on a different domain, set up linker tracking so visits aren't split into separate sessions.

Enhanced ConversionsInfo

Google Ads Enhanced Conversions were not detected. They send hashed first-party data (email/phone) to recover conversions lost to cookie restrictions — worth enabling if you run Google Ads.

User-ID TrackingInfo

GA4 User-ID tracking was not detected. If you have logged-in users, setting a User-ID lets GA4 join their activity across devices and sessions.

Conflicting GA4 IDsWarning

Multiple GA4 measurement IDs were found (G-1CMT7T7J7R, G-DFGBHG1LXW, G-CQBKPK00VG). Sending the same events to more than one GA4 property is sometimes intentional, but is often an accident that doubles event counts or splits data — confirm each ID is meant to be here.

G-1CMT7T7J7RG-DFGBHG1LXWG-CQBKPK00VG
No GTM container was detected on this page.
Checks
GTM containerWarning

No GTM-XXXX container; gtag.js present instead.

Tags are loaded directly via gtag.js rather than through Tag Manager. That works, but you lose GTM's centralised management, versioning, and conditional firing controls.

Fix this issue
GA4 firingPass

G-1CMT7T7J7R, G-DFGBHG1LXW, G-CQBKPK00VG — collect hit observed.

Google Analytics 4 is actively sending pageview/event data.

Deprecated Universal AnalyticsWarning

Found UA-127814725-1.

Universal Analytics stopped processing data in 2023. These tags do nothing and should be removed.

Fix this issue
JavaScript errors during loadInfo

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

Google Consent Mode v2Warning

No consent API calls observed

No Google Consent Mode was detected. Since March 2024 Google requires Consent Mode v2 for sites with EEA/UK traffic running Google Ads — without it, conversion and remarketing data is lost for users who haven't consented.

Fix this issue
Tag load performancePass

GA4 first hit 8879ms, DOMContentLoaded 12124ms

Tags loaded quickly — no performance concern.

Cross-domain trackingInfo

No linker configuration observed

No cross-domain (linker) tracking was detected. If your checkout or other steps live on a different domain, set up linker tracking so visits aren't split into separate sessions.

Enhanced Conversions (Google Ads)Info

Not detected

Google Ads Enhanced Conversions were not detected. They send hashed first-party data (email/phone) to recover conversions lost to cookie restrictions — worth enabling if you run Google Ads.

User-ID tracking (GA4)Info

Not detected

GA4 User-ID tracking was not detected. If you have logged-in users, setting a User-ID lets GA4 join their activity across devices and sessions.

Conflicting GA4 IDsWarning

G-1CMT7T7J7R, G-DFGBHG1LXW, G-CQBKPK00VG

Multiple GA4 measurement IDs were found (G-1CMT7T7J7R, G-DFGBHG1LXW, G-CQBKPK00VG). Sending the same events to more than one GA4 property is sometimes intentional, but is often an accident that doubles event counts or splits data — confirm each ID is meant to be here.

Fix this issue

Ecommerce Funnel — Not Applicable

This site doesn't appear to be an online store, so the ecommerce funnel report has been skipped. GTM tag coverage, triggers, variables, and on-page scripts are still audited above.

If this site does sell products, try re-running the audit on a product page URL — that will surface add-to-cart, checkout, and purchase event coverage.

On-page Scripts — Should Be in GTM (1)

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.

Google Analytics 4 (direct gtag.js)

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.

JavaScript errors (50)

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

mejs is not defined

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

Failed to load resource: the server responded with a status of 429 ()

n(...).not(...).filter(...).mediaelementplayer is not a function

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.

Ask a follow-up question