What this page shows. A full technical-SEO audit of naturespath.com covering crawlability, indexability, URL structure, HTTPS / security, mobile optimization, Core Web Vitals, JavaScript rendering, international / hreflang, and technical schema. Each dimension scores independently; the composite is weighted by search-engine impact.

Technical foundations determine whether the brand even competes. A site with strong authority and rich content still underperforms when the crawl graph is dirty, schema is malformed, or Core Web Vitals fail on mobile. The findings below name the specific templates, <head> scripts, and metadata failures dragging NP’s technical score into needs-work territory.

How to read the findings. Start with the 9 Category Scores for the quick map, then Critical Issues for the fix-first shortlist. Each subsequent section drills into one dimension: script inventory, hreflang, CWV risk, indexability, security, multi-market. The Implementation Checklist at the bottom converts every finding into a stable-slug task.

What the data says about NP today. Shopify’s server-side rendering keeps raw HTML clean and indexable. The <head> carries 61 total scripts with 11 synchronous render-blockers, the homepage H1 is empty, the Organization schema is malformed on every page, and third-party tag weight is dragging Core Web Vitals into failing territory on mobile. Hreflang is a bright spot: all content types carry a complete 7-tag set across 6 locales.

9 Category Scores

What this grid shows. The nine technical-SEO dimensions scored independently 0–100. Each card is color-coded and carries a one-word status (PASS, NEEDS WORK, FAIL, IMPROVED).

Per-dimension scoring isolates where the fix belongs. A site can be fully crawlable and fully indexable yet still fail Core Web Vitals on mobile, so a composite technical score hides where the remediation effort should land. The grid makes the failing dimensions (CWV 35, Technical Schema 30) visible next to the passing ones (Crawlability 80, URL Structure 82) so prioritization is obvious.

How to read the colors. Green = passing (≥75). Amber = needs work (50–74). Red = failing (<50). Four of nine dimensions pass, three need work, two fail. The Hreflang score carries an IMPROVED status label because fr-CA was added and localized slugs shipped since the prior audit.

Crawlability
80
PASS
Indexability
60
NEEDS WORK
URL Structure
82
PASS
HTTPS / Security
55
NEEDS WORK
Mobile Optimization
70
PASS
Core Web Vitals
35
FAIL
JavaScript Rendering
65
NEEDS WORK
International / Hreflang
72
IMPROVED
Technical Schema
30
FAIL

Critical Issues

What this section shows. The five highest-severity technical findings, each rendered as a critical callout with the symptom, the evidence, and the fix path. Every issue names the specific Shopify template or theme file where the remediation lands.

Critical-tier issues block downstream work across the audit. An empty homepage H1 caps every on-page keyword signal the content team can improve. A malformed Organization schema on every page makes the entire site invisible to AI crawlers and SGE despite DR 72 authority. Fixing the items here clears the path for the content, schema, and GEO workstreams below.

How to read the callouts. Each title names the problem; the body names the template, the scripts, or the specific JSON-LD fields. All five map 1:1 to Implementation Checklist items at the bottom of this page.

1. LCP image has no fetchpriority="high" and no <link rel="preload">
Every page’s LCP image (hero banner on homepage, collection hero on PLP) loads without browser priority signaling. Zero preload tags were found across any sampled page. The browser discovers the LCP image only after parsing HTML and CSS. Adding fetchpriority="high" to the first above-the-fold <img> and a matching <link rel="preload" as="image"> in <head> is the single highest-impact Core Web Vitals change available.
2. 11 render-blocking synchronous scripts in <head>
Klaviyo, Yotpo (×2), HubSpot, Gorgias, Ahrefs Analytics, LinkGraph dynamic-optimization, SMSBump, Consentmo, jQuery 3.7.1, and content.9gtb.com/loader.js (unrecognized third party) all load synchronously before render. Each is a cross-origin request adding DNS + TCP + TLS + download time. Total <head> scripts reached 61–62 per page — the primary driver of mobile CWV failures.
3. Zero Recipe schema on 551 recipe pages
Not one recipe page carries Recipe structured data. No ingredient panels, no cook-time rich results, no recipe cards in Google Images or SGE. Shopify’s Whisk theme does not auto-generate it. A single Liquid template edit to the recipe article type deploys Recipe schema across all 551 pages.
4. Homepage H1 is empty
The homepage <h1> element is present in the DOM but contains no text. The visible hero headline is rendered outside the H1. The primary on-page keyword signal for the homepage is effectively absent.
5. Organization schema malformed on every page
"@context": "http://schema.org" (HTTP, not HTTPS). "name": "Nature&#39;s Path" (HTML entity, not UTF-8). sameAs contains empty strings (3 of 8 values). Missing logo, @id, description, address, telephone, foundingDate, and the brand array. Pinterest URL points to the wrong canonical property.

Crawlability & Robots.txt

robots.txt at https://naturespath.com/robots.txt returns 200 (6.6 KB). Standard Shopify-generated file. Sitemap declared once at the default locale.

  • User-agent: * correctly disallows /admin, /cart, /orders, /checkouts/, /account, /search, /policies/, sort-by and multi-filter URLs
  • Nutch crawler fully blocked; AhrefsBot crawl-delay 10s; MJ12bot crawl-delay 10s; Pinterest crawl-delay 1s
  • Hexadecimal remote product-variant regex disallow is correctly formed
  • /policies/ disallow is harmless — actual compliance pages live at /pages/privacy-policy-1, /pages/terms-conditions, /pages/cookie-policy-1
  • No explicit directives for GPTBot, ClaudeBot, PerplexityBot, CCBot, Anthropic-AI — they fall under User-agent: * with no crawl-delay
  • No llms.txt file present at site root
  • Sitemap index referenced only once; no per-locale sitemap declarations for Bing/Yandex discovery

Script Inventory (Render-Blocking <head>)

11 external synchronous scripts in <head>, plus 44 inline script blocks, plus a base64-encoded dynamic-optimization injector. Total <head> scripts: 61–62. HTML payload: 648 KB (homepage).

Script / Origin Category Loading Assessment
LinkGraph dynamic-optimization (inline base64) SEO-testing injector Synchronous INVESTIGATE — may modify title/meta/body client-side
analytics.ahrefs.com/analytics.js Analytics Synchronous ADD async
consentmo.js Consent Synchronous ADD async — runs before user interaction anyway
jQuery 3.7.1 (Google CDN) Library Synchronous ∼87 KB parsed + executed — defer
static.klaviyo.com/onsite/js/WXqDpY/klaviyo.js Marketing Synchronous DEFER
cdn-widgetsrepository.yotpo.com/v1/loader/... (×2) Reviews Synchronous DEFER — review widgets render post-interaction
js-na3.hs-scripts.com/341595240.js HubSpot Synchronous DEFER
config.gorgias.help/api/contact-forms/replace-mailto-script.js Support Synchronous DEFER
content.9gtb.com/loader.js Unknown Synchronous INVESTIGATE — unrecognized third party
Rebuy, ReCharge, SMSBump, Printful E-commerce Loaded on page TEMPLATE-GATE — only load on product/cart
LinkGraph Dynamic Optimization — needs investigation
The sa-dynamic-optimization script dynamically modifies page content after load via dashboard.linkgraph.com/scripts/dynamic_optimization.js. It may inject or modify titles, meta descriptions, or body text client-side — which means Googlebot (which renders JS) could see different content than the raw HTML. Confirm whether this is altering crawlable content or purely an analytics/testing tool.

Hreflang Status (Improved)

All 15 sampled pages ship a complete 7-tag set. Localized slugs present for es-MX and fr-CA. Bidirectional confirmation pending for three locale pages that failed to fetch during crawl.

hreflang Target URL Status
x-default/PASS
en/AMBIGUOUS — en-US preferred
en-GB/en-gb/...PASS
en-MX/en-mx/...PASS
es-MX/es-mx/...PASS — localized slugs (nuestro-camino, cereale)
en-CA/en-ca/...VERIFY RECIPROCAL
fr-CA/fr-ca/...NEW — localized (notre-chemin, recettes, granola-a-5-ans)
  • fr-CA locale newly added (was not in prior locale list)
  • Localized slugs active for es-MX and fr-CA on content pages
  • fr-CA blog index uses /fr-ca/blogs/posts (same handle); recipes correctly localize to /fr-ca/blogs/recettes
  • No en-AU or other English locales — non-US English visitors receive US default with USD pricing
  • Bidirectional confirmation pending on en-CA homepage, en-GB product, en-MX product (Cloudflare blocked during crawl)

Core Web Vitals (Lab Heuristic)

Source-level risk assessment against 2026 thresholds (LCP <2.5s, INP <200ms, CLS <0.1). Field data should be confirmed in PageSpeed Insights and GSC CrUX. See the Performance page for per-URL measurements.

Metric Source-Level Risk Primary Drivers
LCP HIGH No preload, no fetchpriority="high", 11 render-blocking scripts, 648 KB HTML, no font preload
INP MEDIUM Klaviyo, Yotpo×2, HubSpot, Rebuy, ReCharge, Gorgias, SMSBump, Printful main-thread load; 32 carousel instances
CLS LOW 95/96 body images carry explicit width/height. Consentmo banner and Yotpo injection are the only residual risks.

Indexability & Metadata Audit

What this table shows. Title length, meta description length, H1 state, and og:image presence for 10 representative pages across the site. Status values (EMPTY, MISSING, truncates) flag the specific metadata failures on each page.

Page-level metadata is the lowest-hanging optimization layer. Each empty H1 or missing og:image is a single template fix that lands visible SERP and social-share improvement inside a sprint. Homepage, About, Our Path, Blog index, Recipes index, and Careers all render text-only social share cards today. Two of those URLs have no H1 at all.

How to read the colors. Red-marked cells flag fields that are empty, generic, or truncated. Plain cells are compliant. “truncates” means the title or meta description exceeds Google’s SERP cutoff and renders with an ellipsis. The table drives the metadata-specific items in the Implementation Checklist below.

Page Title (len) Meta Desc H1 og:image
Homepage56150EMPTYMISSING
About220 (missing)PresentMISSING
Our Path32253 (truncates)NO H1MISSING
Cereal collection74 (truncates)153"Collection:Organic Cereal"Present
Granola collection76 (truncates)155"Collection:..." prefixPresent
Blog index21 (generic)PresentMISSING
Recipes index24 (generic)PresentMISSING
Plant-protein blog post62320 (truncates)PresentPresent
5-Ingredient Granola recipe37PresentPresent
Careers30304 (truncates)NO H1MISSING
  • All 15 sampled pages carry a self-referencing canonical; no cross-locale contamination
  • No noindex meta found on any sampled page — all indexable
  • Collection H1s render with literal “Collection:” prefix from Shopify template variable
  • 5 pages (Homepage, About, Our Path, Blog index, Recipes index, Careers) missing og:image — text-only social cards

HTTPS & Security Headers

Response-header inspection was limited by the audit proxy (captured content-type and cf-ray only). Assessment based on Shopify platform defaults and visible source signals.

SignalCurrent StateStatus
HTTPS enforcedAll 15 sampled pages return HTTPS; canonicals all https://PASS
Mixed content in schemaOrganization "@context": "http://schema.org"MINOR
Protocol-relative CDN URLs//naturespath.com/cdn/... present in inline JSAMBIGUOUS
HSTSShopify default max-age=7889238 (∼91 days)PARTIAL — below 1-year preload threshold
Content-Security-PolicyShopify does not set by defaultMISSING
X-Frame-Options / X-Content-Type-OptionsShopify platform defaultsPASS

Multi-Market & Localization

Nature’s Path serves six active locale markets (en-US, en-CA, fr-CA, en-GB, en-MX, es-MX) from a single Shopify store. Hreflang is the strongest localization signal and is correctly deployed on content pages (see Hreflang Status above). The remaining localization surface is uneven: product pages miss hreflang entirely, es-MX is inconsistently applied across page types, UK region pricing is mis-configured, and the theme ships with locale files for markets that have never launched. Each gap is individually small; collectively they blur Nature’s Path’s entity resolution in non-US markets and dilute the authority that hreflang would otherwise concentrate on the correct locale.

IssueDetailFix
Hreflang missing on product pages Hreflang is deployed on homepage, collections, FAQ, and blog pages (all 7 variants). Product pages carry only an oembed alternate link and no hreflang set. Products collectively drive significant organic traffic; without hreflang, cross-locale duplicate-content risk is real and locale ranking is left to Google heuristics. Extend hreflang implementation to sections/main-product.liquid. Every product template should emit the full 7-tag set matching its cross-locale counterparts.
es-MX coverage inconsistent across page types The /blogs/recipes index page ships only 5 hreflang variants — missing es-MX — while the homepage carries all 7. Audit revealed a similar pattern on several deeper blog URLs. Audit every page type for consistent hreflang coverage across all 7 variants. Where es-MX content does not exist, decide: suppress the hreflang entry (don’t reference an untranslated page) or publish the localized content. Mixed signals are worse than a missing tag.
UK region shows USD pricing The en-GB locale renders with USD pricing rather than GBP. Confusing for UK visitors, under-converts, and contradicts the en-GB hreflang declaration. Verify Shopify Markets currency settings for the UK market (Admin → Markets → United Kingdom). If GBP is configured but not propagating, check theme overrides on theme.liquid and sections/main-product.liquid.
9 locale files but only 6 active markets The theme ships locale files for German (de), Italian (it), Japanese (ja), Dutch (nl), and Portuguese (pt) that correspond to no active market. These files add bundle weight and maintenance complexity with zero return. Remove unused locale files from the theme to reduce theme bundle size and simplify future localization work. Retain only the 6 active markets plus x-default English.
391 .context.{market}.json files The theme carries 391 market-specific section configuration files. This is Whisk’s mechanism for per-market section overrides. Not inherently a problem — but at this volume, SEO elements (meta titles, meta descriptions, schema, featured content) may drift across markets without anyone noticing. Audit the .context.{market}.json files for per-market SEO consistency. Ensure titles, meta descriptions, and schema references are intentional in each market variant. Flag any market-specific template that breaks the sitewide schema or hreflang contract.

Implementation Checklist

Progress
0 / 42