Schema coverage · You vs competitors

Lives at SEO Tools → Content → Spy & Compare → Schema Coverage.

The panel answers a single question every merchant has the moment they look at the comparison: which schema types do my competitors emit that I don't? And — newly — which of those did they ship in the last 7 days?

What it reads

Every day at 10:00 UTC, the snapshot worker fetches:

  1. Your storefront (https://{shop}.myshopify.com/) — phase 692 added this
  2. Each tracked competitor's homepage (capped 5 per shop)
  3. Any URL you manually saved via Competitor Schema Spy in the last 30 days

It parses every <script type="application/ld+json"> block, extracts @type strings, stores them in schema_snapshots. The comparison panel reads the latest snapshot per URL and joins them.

Three layers of intel

1. 🔥 Recently shipped (orange block, top of panel)

Pulled from the last 7 days of competitor snapshots. Diff: latest-vs-earliest snapshot per URL → what types appeared. Each row is a clickable badge that deep-links straight to the matching generator.

🔥 Competitors shipped 3 new schema types this week:

  • Recipe → by competitor-a.com — 2d ago
  • HowTo → by competitor-b.com — 4d ago
  • Event → by competitor-a.com — 6d ago

Click any badge → land on the matching generator on the Generators sub-tab, ready to ship.

2. Aggregate gap (red banner)

Union of every type ANY tracked competitor emits that you don't. Same clickable-badge UX as above.

Aggregate gap: 5 schema types shipped by at least one competitor that you don't emit: Recipe → HowTo → VideoObject → Event → BreadcrumbList →

3. Per-competitor table (granular detail)

Competitor Shared They have, you don't You have, they don't
competitor-a.com 4 Recipe, HowTo
competitor-b.com 3 HowTo, Event Article, FAQPage

Click any "they have you don't" badge → deep-link to generator.

Click-through routing

Every red/orange schema badge calls jumpToGenerator(type):

  1. Navigates to /seo-tools?tab=content&subTab=generators
  2. Scrolls the matching <s-section> into view by heading-attr match

URL deep-links work correctly post-phase-697 (the bug fix that wired query-param routing at both the top-tab and sub-tab levels).

Dashboard surfacing

The schema gap count also appears as a Dashboard pending pill:

📊 5 schemas behind rivals (click → Spy & Compare)

And in the weekly digest email as a section titled:

📊 Schema gap · 5 types behind your competitive set

When the panel says "data pending"

For 24h after the merchant lands on this feature for the first time (or after a shop with no prior tracked competitors adds one). The 10:00 UTC daily worker run is the canonical data source — it captures the merchant's own storefront snapshot once per day. Once that runs, the panel is fully populated.

Related