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.

Last scanned Aug 23, 2026 — scored warn. Same result as last time.
Works, with issueshttps://www.almanac.com/

Your website's tracking setup shows a mixed picture. The Google Tag Manager (GTM) is functioning well, with the necessary scripts loading correctly, and Google Analytics 4 (GA4) is also firing as expected. However, there is a warning regarding the dataLayer not being initialized before the GTM container, which could potentially affect data accuracy. Additionally, there are several JavaScript errors noted, which might need attention to ensure smooth performance. On this homepage, several tags fired successfully, including Microsoft Ads, Google Ads, and LinkedIn Insight, indicating that your marketing pixels are active. However, since this audit was conducted on the homepage, key events like 'purchase' and 'add_to_cart' were not expected to fire, so their absence here is not a concern. Since your site is not on Shopify, there are no issues related to Shopify's Trekkie or Web Pixels API. For a complete understanding of your site's tracking health, I recommend auditing other pages like product pages, cart, and checkout. If you encounter any tracking gaps or need further assistance, consider connecting your store to PayHelm AI for a more comprehensive analysis.

Tracking Health: 100/100 · ASEO Score: 78/100 · BAI SEO Score: 55/100 · D
Overall Tracking Health
100out of 100Grade AExcellent
Tag manager installed20/20

GTM container installed and loading.

GA4 tracking20/20

GA4 is installed and sending data.

Ecommerce funnel coverage20/20

4 of 4 key funnel stages look healthy.

Data quality15/15

No data-quality issues found in tracked events.

Consent Mode10/10

Consent Mode v2 configured.

Performance10/10

Tags load quickly.

No conflicts5/5

No conflicting analytics IDs.

Advanced Tracking Features
Consent Mode v2Pass

Consent Mode v2 is configured via OneTrust. The default and update calls and the v2 signals (ad_user_data, ad_personalization) are all present.

default: yesupdate: yes✓ analytics_storage✓ ad_storage✓ third_party_storage✓ ad_user_data✓ ad_personalizationCMP: OneTrust
Tag PerformancePass

Tags loaded quickly (GTM in 0.60s) — no performance concern.

GTM 0.60sGA4 first hit 3.03sDOM ready 1.73sPage load 7.46s
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 ConversionsPass

Google Ads Enhanced Conversions appear to be set up — hashed first-party data is being passed to improve conversion accuracy.

enhanced_conversion_data in code
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.

Checkout & Purchase CoverageWarning

We couldn't reach the checkout or order-confirmation page during this audit, so purchase tracking is unverified. Purchase is the single most important event to get right — test it with a real or test order and confirm the 'purchase' event fires once on the thank-you page.

SEO Review
78out of 100Grade BGood

3 SEO improvements identified — addressing them could meaningfully boost organic visibility.

Title tagPass

Title is 60 characters — within the ideal 30–70 character range.

The Old Farmer’s Almanac: Gardening, Weather, Moon, Calendar (60 chars)
Meta descriptionWarning

Meta description is 317 characters. Google may truncate descriptions over ~160 chars.

The Old Farmer’s Almanac is your trusted source for long range weather forecasts, moon phases, full … (317 chars)
H1 headingWarning

5 H1 headings found. Most SEO guidance recommends a single H1 per page to signal the primary topic clearly.

5 H1 tags found.
Robots / indexabilityPass

No noindex directive — the page is eligible to be indexed.

robots: index, follow
Canonical URLPass

Canonical tag points to the page itself — no duplicate-content signals sent to search engines.

https://www.almanac.com
Open Graph tagsWarning

1 Open Graph tag(s) missing. Complete the set for consistent social link previews.

og:title ✓ og:description ✗ og:image ✓
Structured data (Schema.org)Pass

Structured data found — search engines can use it to generate rich results (star ratings, FAQs, products, breadcrumbs, etc.).

JSON-LD script found
Mobile viewportPass

Viewport meta tag found — the page is set up for mobile-friendly rendering.

viewport meta tag present
AI Discovery & AI SEOBlocked for AI
55out of 100Grade DNeeds work

Blocked: AI crawlers are actually refused at the server level (HTTP 403) when they try to fetch this site.

llms.txt fileWarning

No llms.txt file found. This is a plain-text, markdown-style index of your key pages that AI assistants (ChatGPT, Claude, Perplexity) increasingly check to understand a site quickly.

No /llms.txt found (404 or empty).
AI crawler access (robots.txt)Pass

robots.txt doesn't block any major AI crawler — ChatGPT, Claude, Perplexity, and Google's AI features can all fetch and cite your content.

All 15 known AI crawlers are allowed.
Live AI crawler testFail

We fetched your homepage using GPTBot's real User-Agent and it was refused (HTTP 403). This is a server/firewall-level block — AI crawlers cannot read this site at all, regardless of what robots.txt says.

GPTBot's User-Agent received HTTP 403.
Structured data for AI answersPass

Structured data (JSON-LD) is present with types AI answer engines commonly extract facts from (e.g. FAQPage, Product, Organization).

Schema.org types found: Organization, FAQPage.
Server-rendered contentPass

Meaningful text content is present in the raw HTML response — AI crawlers that don't execute JavaScript can still read and cite this page.

~863 words of text visible in the raw HTML response.
XML sitemapPass

A sitemap is available at /sitemap.xml, helping both search engines and AI crawlers discover your full set of pages efficiently.

Found at /sitemap.xml.
AI crawlers
GPTBotOAI-SearchBotChatGPT-UserClaudeBotClaude-Webanthropic-aiPerplexityBotPerplexity-UserGoogle-ExtendedApplebot-ExtendedBytespiderCCBotAmazonbotcohere-aiMeta-ExternalAgent
Opportunities
  • Add an /llms.txt file listing your most important pages (pricing, docs, product pages) in markdown format — it gives AI assistants a fast, reliable summary of your site instead of guessing from crawled HTML.
  • AI crawlers get blocked at the server level (HTTP 403) when fetching your homepage, even though this may not show up in robots.txt. Check your WAF/CDN's bot-management rules for a User-Agent block on AI crawlers.
GTM-MGG8F2Vhead
Loaded
Tags(5)

Marketing & analytics tags observed sending data while the page loaded.

Microsoft Ads (UET)Conversion / Remarketing
3 hits
Google AdsConversion / Remarketing
25 hits
Google Analytics 4GA4 Event · G-SGJY689RQS
2 hits
Microsoft ClarityAnalytics
9 hits
LinkedIn InsightPixel
4 hits
Triggers(8)

Every dataLayer push observed during page load — with full payload and configuration analysis.

GTM lifecycle events (4)— gtm.js, gtm.dom, gtm.load, etc.
Variables(19)

Data points present in the dataLayer that your tags can read (the values pushed alongside each event).

gtm.starteventgtm.uniqueEventIdmetricvalueratingthresholdtimestampurlcmpConsentVendorsgtm.elementgtm.elementClassesgtm.elementIdgtm.elementTargetgtm.triggersgtm.elementUrlcmdtargetparams
Network hits(45)

The actual tracking requests your browser sent — the ground-truth proof that a tag fired.

200gtm.jshttps://www.googletagmanager.com/gtm.js?id=GTM-MGG8F2V
200gtag.jshttps://www.googletagmanager.com/gtag/js?id=G-SGJY689RQS&cx=c&gtm=4e68j1h2
200adshttps://bat.bing.com/bat.js
200adshttps://securepubads.g.doubleclick.net/tag/js/gpt.js
204adshttps://stats.g.doubleclick.net/g/collect?v=2&tid=G-SGJY689RQS&cid=1902013296.1787583307&gtm=45je68j1h2v880060744z8811488229za20gzb811488229zd811488229&rcb=11&a
beaconga4-collecthttps://analytics.google.com/g/collect?v=2&tid=G-SGJY689RQS&gtm=45je68j1h2v880060744z8811488229za20gzb811488229zd811488229&_p=1787583304802&_gaz=1&gcd=13l3l3l3l
200adshttps://bat.bing.com/p/action/355010856.js
204adshttps://bat.bing.com/action/0?ti=355010856&tm=gtm002&Ver=2&mid=8a9cda84-6f41-4678-8f49-152c63f43764&bo=1&sid=ccf020909fcb11f19fd0a3511363b7df&vid=ccf892c09fcb11
200adshttps://securepubads.g.doubleclick.net/pagead/managed/js/gpt/m202608180101/pubads_impl.js
200adshttps://ad.doubleclick.net/favicon.ico?ad=300x250&ad_box_=1&adnet=1&showad=1&size=250x250&e=0.00005745810592228118
200analyticshttps://www.clarity.ms/tag/56vg013azp
200analyticshttps://www.clarity.ms/tag/uet/355010856
200analyticshttps://scripts.clarity.ms/0.8.69/clarity.js
200adshttps://cm.g.doubleclick.net/partnerpixels?us_privacy=1YNY&gpp=DBABzw~1YNY~BVQqAAAAAgA&gpp_sid=6%2C7&url=https%3A%2F%2Fwww.almanac.com%2F
200adshttps://ad.doubleclick.net/favicon.ico?ad=300x250&ad_box_=1&adnet=1&showad=1&size=250x250&e=0.017479624392437332
204analyticshttps://k.clarity.ms/collect
302adshttps://cm.g.doubleclick.net/pixel?gdpr=0&gpp=DBABzw~null~BVQqAAAAAgA&gpp_sid=6,7&google_nid=B765081F39B1F7&google_push=&google_hm=B-ffg5_n5nU7XgDdjfv72w
200adshttps://cm.g.doubleclick.net/pixel?gdpr=0&gpp=DBABzw~null~BVQqAAAAAgA&gpp_sid=6,7&google_nid=B765081F39B1F7&google_push=&google_hm=B-ffg5_n5nU7XgDdjfv72w&google
200adshttps://ad.doubleclick.net/favicon.ico?ad=300x250&ad_box_=1&adnet=1&showad=1&size=250x250&e=0.2057734886836553
302pixelhttps://px.ads.linkedin.com/db_sync?pid=10339&puuid=5f47163e30680e10f10a1ec846e473270321ac41e0a9f13d2977d66ea4b15ab0791426b5417dce21&rand=03151378
200pixelhttps://px.ads.linkedin.com/db_sync?pid=10339&puuid=5f47163e30680e10f10a1ec846e473270321ac41e0a9f13d2977d66ea4b15ab0791426b5417dce21&rand=03151378&expected_cook
200adshttps://ad.doubleclick.net/favicon.ico?ad=300x250&ad_box_=1&adnet=1&showad=1&size=250x250&e=0.3440899393588144
302analyticshttps://c.clarity.ms/c.gif
200adshttps://ad.doubleclick.net/favicon.ico?ad=300x250&ad_box_=1&adnet=1&showad=1&size=250x250&e=0.4806072518820512
204analyticshttps://k.clarity.ms/collect
200analyticshttps://c.clarity.ms/c.gif?ctsa=mr&CtsSyncId=A22D8A37D63D4F36A173D9EA842043FD&MUID=3BA9A60B681F68A70F34B1B4692369B7
302adshttps://cm.g.doubleclick.net/pixel?us_privacy=1YNY&google_nid=casale_media2_dbm&google_cm&google_sc&google_hm=aoxbT9HM4KgAH1DaAbLj.QAA
200adshttps://ad.doubleclick.net/favicon.ico?ad=300x250&ad_box_=1&adnet=1&showad=1&size=250x250&e=0.42149807558554
200adshttps://securepubads.g.doubleclick.net/gampad/ads?pvsid=530095494575493&correlator=980927325641109&eid=95399853%2C122880459&output=ldjh&gdfp_req=1&vrg=202608180
200adshttps://ad.doubleclick.net/favicon.ico?ad=300x250&ad_box_=1&adnet=1&showad=1&size=250x250&e=0.24933690644488737
beaconadshttps://securepubads.g.doubleclick.net/pcs/view?xai=AKAOjsuhvdW2fH3fwhEFJLb_C1uujaP_e7Kg5VFvcCUge83Cv2p-nTltaZsuLDSNyLvFAWHlWnOmjd6JmCrzQl2yfKG24y7L4tJ8VlxO2r9v
302adshttps://cm.g.doubleclick.net/pixel?google_nid=triplelift&google_cm&google_sc&gdpr=0&gdpr_consent=
302adshttps://cm.g.doubleclick.net/pixel?google_nid=rubicon&google_cm&google_sc&process_consent=T
200pixelhttps://px.ads.linkedin.com/setuid?partner=tripleliftdbredirect&tlUid=3550666257664641313946&dbredirect=true&gdpr=0&consent=
200adshttps://cm.g.doubleclick.net/pixel?google_nid=triplelift&gdpr=0&gdpr_consent=&us_privacy=&google_hm=MzU1MDY2NjI1NzY2NDY0MTMxMzk0Ng%3D%3D
302adshttps://cm.g.doubleclick.net/pixel?google_nid=tl&gdpr=0&gdpr_consent=&us_privacy=&google_hm=MzU1MDY2NjI1NzY2NDY0MTMxMzk0Ng%3D%3D
200pixelhttps://px.ads.linkedin.com/setuid?partner=rubiconDb&dbredirect=true&ruxId=MT7CY5A6-L-KYMD
204analyticshttps://k.clarity.ms/collect
302adshttps://cm.g.doubleclick.net/pixel?google_nid=rp&google_cm&google_hm=TVQ3Q1k1QTYtTC1LWU1E
200adshttps://cm.g.doubleclick.net/pixel?google_nid=rubicon&google_hm=NjRhY2VkMTM4NWQxMGUyZDllMmMwZTkxYjA3OWVjZjBhN2NiZWQ2ZA
beaconadshttps://securepubads.g.doubleclick.net/pcs/view?xai=AKAOjsvM6iUH9wEyH3FFpHzEBWFHVa-jm6SvyFLEh6FCDpKxi4k3RBxjbar29cfjv_l1YEMlaTeoadDa0p53W_hCfscbHmTLX_-aGxHJnC-T
200adshttps://cm.g.doubleclick.net/pixel?google_nid=rp&google_hm=TVQ3Q1k1QTYtTC1LWU1E&google_push=
302adshttps://cm.g.doubleclick.net/pixel?google_nid=pubmatic&google_hm=Q0Y3NDAyNEYtOEI4OS00MDc1LUIwQ0EtNUI5RDg2MkVBRUY1&gdpr=-1&gdpr_consent=&google_cm
204analyticshttps://k.clarity.ms/collect
beaconga4-collecthttps://analytics.google.com/g/collect?v=2&tid=G-SGJY689RQS&gtm=45je68j1h2v880060744za20gzb811488229zd811488229&_p=1787583304802&gcs=G111&gcd=13n3n3n3n5l1&npa=0
Checks
GTM container detectedPass

GTM-MGG8F2V

A Google Tag Manager container is installed on this page.

Container script loads (gtm.js)Pass

1/1 container(s) returned a successful gtm.js response.

The container's JavaScript downloaded successfully, so GTM can run.

Noscript fallback presentPass

Found <noscript> ns.html iframe.

The fallback for visitors with JavaScript disabled is in place.

Snippet placement in <head>Pass

GTM snippet appears inside <head>.

The container is loaded early, as Google recommends, so tags fire as soon as possible.

dataLayer initialised before GTMWarning

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 issue
GA4 firingPass

G-SGJY689RQS — collect hit observed.

Google Analytics 4 is actively sending pageview/event data.

JavaScript errors during loadInfo

6 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 v2Pass

default=true, update=true, signals=[analytics_storage, ad_storage, third_party_storage, ad_user_data, ad_personalization], CMP=OneTrust

Consent Mode v2 is configured via OneTrust. The default and update calls and the v2 signals (ad_user_data, ad_personalization) are all present.

Tag load performancePass

GTM 600ms, GA4 first hit 3028ms, DOMContentLoaded 1733ms

Tags loaded quickly (GTM in 0.60s) — 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)Pass

enhanced_conversion_data in code

Google Ads Enhanced Conversions appear to be set up — hashed first-party data is being passed to improve conversion accuracy.

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.

Checkout / purchase coverageWarning

purchase observed=false, checkout page audited=false

We couldn't reach the checkout or order-confirmation page during this audit, so purchase tracking is unverified. Purchase is the single most important event to get right — test it with a real or test order and confirm the 'purchase' event fires once on the thank-you page.

Fix this issue
Marketing Funnel Coverage
0 observed· 11 not auditable on this page

Funnel 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

Product List / Collection Viewhigh
view_item_listMeta: ViewContentfound in JS ✓

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.

Product Click from Listmedium
select_itemfound in JS ✓

Not observed during this load — 'select_item' requires user interaction on collection/category pages. Verify by manually testing the action on that page.

Consideration

Product Detail Page Viewcritical
view_itemMeta: ViewContentfound in JS ✓

Not observable on home pages — 'view_item' only fires on product detail pages. Audit that page type to verify coverage.

Cart Activity

Add to Cartcritical
add_to_cartMeta: AddToCartfound in JS ✓

Not observable on home pages — 'add_to_cart' only fires on product pages and cart. Audit that page type to verify coverage.

Remove from Cartmedium
remove_from_cart

Not observable on home pages — 'remove_from_cart' only fires on cart page. Audit that page type to verify coverage.

Cart / Bag Page Viewhigh
view_cart

Not observable on home pages — 'view_cart' only fires on cart page. Audit that page type to verify coverage.

Checkout Funnel

Begin Checkoutcritical
begin_checkoutMeta: InitiateCheckout

Not observable on home pages — 'begin_checkout' only fires on checkout entry page. Audit that page type to verify coverage.

Shipping Info Enteredhigh
add_shipping_info

Not observable on home pages — 'add_shipping_info' only fires on checkout shipping step. Audit that page type to verify coverage.

Payment Info Enteredhigh
add_payment_infoMeta: AddPaymentInfo

Not observable on home pages — 'add_payment_info' only fires on checkout payment step. Audit that page type to verify coverage.

Purchase / Order Confirmationcritical
purchaseMeta: Purchasefound in JS ✓

Not observable on home pages — 'purchase' only fires on order confirmation / thank-you page. Audit that page type to verify coverage.

Post-Purchase

Refund / Order Cancellationlow
refund

This event fires server-side (server-side or order management system) and cannot be observed by a browser-based audit.

JavaScript errors (6)

Drupal is not defined

Comment block not found

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

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

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

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

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