Smart SEO Injected Duplicate JSON-LD and Broke Your Rich Snippets — How to Fix It
Smart SEO (by Sherpas Design) can add its own JSON-LD structured data to your product and collection pages. The catch: most modern themes (Dawn and similar) already output native JSON-LD, so you end up with two competing Product or Organization blocks on the same page, and Google may flag the structured data as duplicate or conflicting and quietly drop your rich snippets — star ratings, price, availability — from search results. Because the app's structured-data feature can be switched on in bulk with no clear undo, the duplication often shows up overnight with no obvious cause.
Step by step
Confirm the duplication first. Open any product page, view the page source (Ctrl+U / Cmd+Option+U), and search (Ctrl+F) for application/ld+json. Count the blocks that contain "@type":"Product" and "@type":"Organization" — if the same type appears twice, that's your duplicate. Then paste the URL into Google's Rich Results Test, which lists every detected item and flags the conflict.
Find out which block is the theme's and which is Smart SEO's. Your theme's JSON-LD is usually rendered inside the product template, while Smart SEO injects its own block through its app embed (a script it adds via theme code or an app block). In the Smart SEO admin, open the JSON-LD / Rich snippets (structured data) section and note which schema types it's emitting — Product, Organization, Breadcrumbs — then compare that list to what your theme already outputs.
Keep exactly one source per schema type. Decide which version is more complete (theme vs. app), then turn off the duplicate: in Smart SEO, disable the structured-data types your theme already covers, or disable the theme's if Smart SEO's is richer — don't keep both. Re-run the Rich Results Test to confirm only one Product and one Organization item remain, then in Google Search Console use URL Inspection > Request Indexing so Google re-crawls the cleaned page.
Lock it in so it can't silently come back. Smart SEO's autopilot/bulk settings can re-enable structured data after a theme update or plan change, and Shopify keeps no history of your schema state — so the safest move is a daily snapshot of your JSON-LD and rich-snippet setup. That way you can see the exact day a duplicate reappears, get alerted the moment it changes (with the app likely responsible named), and roll the affected pages back in one click. That's exactly what SEO Vault runs in the background.
Source: Google Search Central — Intro to structured data, including the rule that each page should carry one clean, non-duplicated schema (developers.google.com/search/docs/appearance/structured-data), plus Google's Rich Results Test for verifying it (search.google.com/test/rich-results).
SEO Vault keeps a daily snapshot of every SEO field on your store — meta titles, descriptions, alt-text, tags, handles (products AND collections) — and emails you the moment something changes in bulk, with the likely app responsible. One click restores yesterday's state, just the SEO fields. Free to monitor and get alerted; $14/mo for 1-click restore.