Website Tracking & Analytics Audit
PayHelm

thekaftancompany.com Tracking & SEO Audit — Grade A

A saved report based on tracking and pages observed during this scan.

Public URL and email required. No account or card. We email your report; private GTM configuration is not exposed by this browser-observed scan.

Run a free GTM & tag audit
Works, with issueshttps://www.thekaftancompany.com/

The audit of your website's homepage reveals that the tracking infrastructure is mostly in good shape, with Google Tag Manager (GTM) and Google Analytics 4 (GA4) firing correctly. However, there are a few areas that need attention. The GTM snippet is not placed optimally in the HTML, and there is no <noscript> fallback, which could affect data collection if users have JavaScript disabled. Additionally, while Shopify's Trekkie is present, it did not fire as expected, which might impact the accuracy of your Shopify-native analytics. On this page, Google Ads, GA4, and Meta Pixel tags fired successfully, indicating that basic tracking is operational. However, the absence of Trekkie firing is a concern that should be addressed to ensure comprehensive data collection. There is also a risk of duplicate pixels, but the Web Pixels API is functioning correctly, mitigating some of this risk. Next, it would be wise to audit your product, cart, checkout, and order-confirmation pages to ensure all critical events are firing as expected. Given the issues identified, I recommend connecting your store to PayHelm AI for a more thorough analysis and guidance on optimizing your tracking setup.

Tracking Health: 100/100 · ASEO Score: 88/100 · BAI SEO Score: 76/100 · B
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 Shopify Customer Privacy. The default and update calls and the v2 signals (ad_user_data, ad_personalization) are all present.

default: yesupdate: yes✓ ad_storage✓ ad_user_data✓ ad_personalization✓ analytics_storageCMP: Shopify Customer Privacy
Tag PerformancePass

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

GTM 1.42sGA4 first hit 3.16sDOM ready 1.68s
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.

user_data parameterallow_enhanced_conversions in codeenhanced-conversion params on Ads hit
User-ID TrackingPass

GA4 User-ID tracking appears to be configured — logged-in users can be measured consistently across devices.

user_id in code
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
88out of 100Grade BGood

SEO basics are mostly in place with a few opportunities to improve.

Title tagWarning

Title is 73 characters. Google may truncate titles over ~70 chars in search results.

Kaftans, Sleepwear, Maternity Wear &amp; Ethnic Wear | The Kaftan Company (73 chars)
Meta descriptionWarning

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

Discover premium Kaftans, Nightwear, Maternity Wear, Ethnic wear, Western Wear &amp; Partywear at Th… (245 chars)
H1 headingPass

One H1 heading found — the recommended structure for every page.

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.thekaftancompany.com/
Open Graph tagsPass

All core Open Graph tags found — links display richly when shared on social media.

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 SEOOpen to AI
76out of 100Grade BGood

2 AI discoverability gaps found — closing them improves your odds of being cited by ChatGPT, Claude, Perplexity, and Google AI Overviews.

llms.txt filePass

llms.txt is present and well-formed — AI assistants that check this file can quickly find your key pages and docs.

Found at /llms.txt with a title heading and 5 linked resources.
skill.md fileInfo

No skill.md file found. This is an emerging convention for describing agent-callable capabilities/tools to AI agents — optional today, but worth watching as adoption grows.

No /skill.md or /.well-known/skill.md found.
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 testPass

GPTBot's User-Agent successfully fetched the real page (HTTP 200, ~13507 words) — AI crawlers are not blocked at the server level.

GPTBot's User-Agent received HTTP 200 with ~13507 words of visible text.
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, WebSite.
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.

~1420 words of text visible in the raw HTML response.
XML sitemapWarning

No sitemap.xml found. Without one, crawlers (including AI crawlers) can only discover pages by following links, which may miss deeper content.

No /sitemap.xml found.
llms.txt / skill.md link integrityWarning

4 links in llms.txt/skill.md pointed to a domain or endpoint that doesn't actually work — including shop.app. AI agents that trust this file at face value will hit dead ends; verify these weren't hallucinated.

4 of 14 referenced links didn't resolve: https://shop.app/SKILL.md](https://shop.app/SKILL.md (returned HTTP 429); https://shop.app/SKILL.md` (returned HTTP 429); https://www.thekaftancompany.com/.well-known/ucp` (returned HTTP 404); https://www.thekaftancompany.com/api/ucp/mcp` (returned HTTP 404).
AI crawlers
GPTBot ✓OAI-SearchBot ✓ChatGPT-User ✓ClaudeBot ✓Claude-Web ✓anthropic-ai ✓PerplexityBot ✓Perplexity-User ✓Google-Extended ✓Applebot-Extended ✓Bytespider ✓CCBot ✓Amazonbot ✓cohere-ai ✓Meta-ExternalAgent ✓
Opportunities
  • Publish a sitemap.xml — it's the fastest way for both search engines and AI crawlers to discover every page worth citing, not just the ones linked from your homepage.
  • Fix or remove 4 broken links in llms.txt/skill.md (https://shop.app/SKILL.md](https://shop.app/SKILL.md, https://shop.app/SKILL.md`, https://www.thekaftancompany.com/.well-known/ucp`, …) — AI agents that follow them will hit a dead end instead of your content.
Shopify Store Detectedthekaftancompany.myshopify.com
Trekkie / Native Analytics
Present — no beacon observed
Web Pixels API
Active (Customer Events sandbox)
Shopify Analytics
Present
On Shopify, pixels can fire from three independent sources: GTM tags, hardcoded theme code, and Shopify Customer Events. Duplicate fires inflate conversion counts and corrupt ROAS — see the checks below for details.
GTM-NB2B74P5body
Loaded
Tags(3)

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

Google AdsConversion / Remarketing
5 hits
Google Analytics 4GA4 Event · G-GJW3ER59DG
2 hits
Meta PixelPixel
3 hits
Triggers(8)

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

›GTM lifecycle events (2)— gtm.js, gtm.dom, gtm.load, etc.
Variables(6)

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

gtm.starteventgtm.uniqueEventIdcmdtargetparams
Network hits(18)

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

200gtag.jshttps://www.googletagmanager.com/gtag/js?id=G-GJW3ER59DG
204adshttps://stats.g.doubleclick.net/g/collect?v=2&tid=G-GJW3ER59DG&cid=962291673.1791456373&gtm=45je6a61v899374693za200zd899374693xf1&rcb=4&aip=1&dma=0&gcd=13l3l3l3
beaconga4-collecthttps://analytics.google.com/g/collect?v=2&tid=G-GJW3ER59DG&gtm=45je6a61v899374693za200zd899374693xf1&_p=1791456372224&_gaz=1&gcd=13l3l3l3l1l1&npa=0&dma=0&gdid=
200pixelhttps://connect.facebook.net/en_US/fbevents.js
200gtag.jshttps://www.googletagmanager.com/gtag/js?id=AW-608270994
200gtag.jshttps://www.googletagmanager.com/gtag/js?id=GT-MKBF3H44&cx=c&gtm=4e6a61
200gtag.jshttps://www.googletagmanager.com/gtag/js?id=GT-MKBF3H44
200gtag.jshttps://www.googletagmanager.com/gtag/js?id=AW-608270994&cx=c&gtm=4e6a61
200adshttps://www.googleadservices.com/ccm/conversion/608270994/?random=1791456375643&cv=11&fst=1791456375643&fmt=3&bg=ffffff&guid=ON&async=1&en=page_view&gtm=45be6a6
200gtm.jshttps://www.googletagmanager.com/gtm.js?id=GTM-NB2B74P5
beaconadshttps://ad.doubleclick.net/ccm/s/collect?auid=619905089.1791456376&gtm=45be6a61v9112797072za200zb899374693zd899374693xecxf1&fmt=8
200adshttps://www.googleadservices.com/pagead/conversion/608270994/?random=1791456375643&cv=11&fst=1791456375643&fmt=7&bg=ffffff&guid=ON&async=1&en=page_view&gtm=45be
200pixelhttps://connect.facebook.net/signals/config/1294248608041343?v=2.9.415&r=stable&domain=www.thekaftancompany.com&hme=a4c28c8787325ac3f8f9eac68364f47df2a8c4266e43
302adshttps://googleads.g.doubleclick.net/pagead/viewthroughconversion/608270994/?random=376329432&cv=11&fst=1791456375643&fmt=8&bg=ffffff&guid=ON&async=1&en=page_vie
200pixelhttps://www.facebook.com/tr/
beaconga4-collecthttps://analytics.google.com/g/collect?v=2&tid=G-GJW3ER59DG&gtm=45je6a61v899374693za200zd899374693xf1&_p=1791456372224&gcs=G111&gcd=13t3t3t3t5l1&npa=0&dma=0&gdi
200gtm.jshttps://www.googletagmanager.com/gtm.js?id=GTM-NB2B74P5
200gtag.jshttps://www.googletagmanager.com/gtag/js?id=G-GJW3ER59DG
Checks
GTM container detectedPass

GTM-NB2B74P5

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 presentWarning

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 issue
Snippet placement in <head>Warning

GTM snippet was not found high in <head>.

The container loads later than recommended. Tags may fire late and miss early page activity.

Fix this issue
dataLayer initialised before GTMPass

dataLayer is defined before the container snippet.

Data is available to tags from the very first event.

GA4 firingPass

G-GJW3ER59DG — collect hit observed.

Google Analytics 4 is actively sending pageview/event data.

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.

Shopify platform detectedPass

Shop: thekaftancompany.myshopify.com

This is a Shopify store. Pixels can fire from three sources: GTM tags, hardcoded theme code, and Shopify Customer Events (Web Pixels API sandbox). All three are audited here.

Shopify native analytics (Trekkie)Warning

Trekkie loaded but no monorail beacon observed

Trekkie is present but no network beacon was observed — it may be blocked, gated behind consent, or misconfigured.

Fix this issue
Shopify Web Pixels API (Customer Events)Pass

Web Pixels API / Shopify.analytics detected — pixels run in a sandboxed iframe

Shopify's Web Pixels API is active. Pixels installed via Shopify Admin → Settings → Customer Events run in a sandboxed iframe, independently of GTM — they cannot interfere with each other, but duplicates are still possible if the same vendor is also in GTM or theme code.

Shopify platform detectedInfo

cdn.shopify.com / window.Shopify

This site runs on Shopify. Tracking setup and common pitfalls differ by platform, which is factored into this audit.

Google Consent Mode v2Pass

default=true, update=true, signals=[ad_storage, ad_user_data, ad_personalization, analytics_storage], CMP=Shopify Customer Privacy

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

Tag load performancePass

GTM 1415ms, GA4 first hit 3158ms, DOMContentLoaded 1677ms

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

user_data parameter; allow_enhanced_conversions in code; enhanced-conversion params on Ads hit

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

User-ID tracking (GA4)Pass

user_id in code

GA4 User-ID tracking appears to be configured — logged-in users can be measured consistently across devices.

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. On Shopify, events may fire via Customer Events (Shopify Web Pixels sandbox) and may not be visible in the dataLayer — verify in Shopify Admin → Settings → Customer Events.

Product Click from Listmedium
select_item

Not observed during this load — 'select_item' requires user interaction on collection/category pages. Verify by manually testing the action on that page. On Shopify, events may fire via Customer Events (Shopify Web Pixels sandbox) and may not be visible in the dataLayer — verify in Shopify Admin → Settings → Customer Events.

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_cartfound in JS ✓

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_cartfound in JS ✓

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: InitiateCheckoutfound in JS ✓

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_infofound in JS ✓

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: AddPaymentInfofound in JS ✓

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.

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.

Meta (Facebook) Pixel

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.

Multi-page Coverage — 1 additional page checked

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.

Collection/collections/new-arrivals
GTM: GTM-NB2B74P5GA4: firingGoogle (gtag.js), Google Ads, Meta Pixel
gtm.scrollDepthgtm.dom
JavaScript errors (50)

Identifier 'getCountryData' has already been declared

Identifier 'gkButtonCode' has already been declared

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

Cannot read properties of undefined (reading 'includes') removeINR (https://www.thekaftancompany.com/:8107:28)

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