Schema
Generate JSON-LD for Organization, WebSite, Product, Collection, Article, Breadcrumb, and FAQPage — inject via the ProRank Schema JSON-LD theme app embed.
The two things you must check first
- The theme app embed must be enabled. Saved schemas live as Shopify shop metafields. They only become storefront JSON-LD when the
ProRank Schema JSON-LDtheme app embed is enabled on the active theme. - Many themes already emit Product schema. If you blindly inject another Product schema on top, you can create duplicates that Search Console or validators flag. Use Live Schema Validation first to see what the theme already renders, and only inject what's missing.
Supported types
| Type | Where | Embed required | Notes |
|---|---|---|---|
| Organization | Shop-level metafield | Yes | Injected on every page by the app embed. |
| WebSite (+ Sitelinks Search) | Shop-level metafield | Yes | One per shop; SearchAction wired to /search?q={search_term_string}. |
| Product (+ Offer / Brand / AggregateRating) | Template-scoped | Yes | AggregateRating only renders when a connected review provider returns data. |
| CollectionPage (+ ItemList) | Template-scoped | Yes | ItemList is built from collection products visible to the app. |
| Article | Template-scoped | Yes | Publish dates, author, hero image. |
| BreadcrumbList | Template-scoped | Yes | Generated from canonical URL path. |
| FAQPage | Page-specific snippet or embed output | Depends on setup | FAQ schema must render only on the FAQ page. If the embed does not render it for that page, use the in-app snippet preview for manual placement. |
Shop-level schemas (Organization, WebSite) are configured once and apply globally. Template-scoped schemas are generated per resource (e.g. one Product schema per product) and emitted only on the matching template.
How the app embed works
The ProRank Schema JSON-LD theme app embed is a Shopify-managed Liquid block that ships with the app. When enabled on the active theme, it reads the shop's ProRank metafields at render time and emits the relevant JSON-LD into the page <head>. There is no theme file write involved — the embed lives in Shopify's app-block system.
Online Store → Themes
→ Customize (active theme)
→ App embeds (left sidebar)
→ ProRank Schema JSON-LD
→ Toggle ON → SaveAfter a ProRank app update, the embed's internal UUID may change. Symptoms: the embed shows as enabled in Customize, but Live Schema Validation reports every template as "Missing". Fix: toggle the embed OFF, Save, then toggle it ON and Save again. This forces Shopify to re-register the current embed.
Live Schema Validation
Live Schema Validation scans the live storefront for representative templates (product, collection, page, article, home, blog index) and reports what JSON-LD ProRank actually finds. It checks:
- Whether the embed script tag is present.
- Whether the JSON is well-formed.
- Whether the expected type for the template is present (Product on product, CollectionPage on collection, etc.).
- Whether required fields for that type are populated.
- Whether multiple Product / Article blocks are present (duplicate risk).
Run Live Schema Validation after enabling the embed for the first time and after any major theme change. If a row goes from green to red, that's your earliest signal something in the theme started emitting its own competing JSON-LD.
Review schema (AggregateRating)
The Review Schema tool generates AggregateRating and Review JSON-LD for products. ProRank does not invent ratings — it reads real review data from a connected provider:
- Judge.me
- Loox
- Yotpo
- Okendo
- Shopify Reviews
Without a connected provider, no review schema renders, even if the toggle is on. This is deliberate — fake ratings violate Google's structured-data policy and can earn a manual action.
Some Shopify review apps already emit their own AggregateRating in their theme block. Connect the provider through ProRank or through the review app's native embed, not both. Use Live Schema Validation to confirm only one block renders per product.
FAQ Page — the manual-paste exception
FAQPage schema describes Q/A content that lives in a specific page's body. The schema must only appear on the actual FAQ page. Depending on the theme and app embed setup, that can be rendered by the ProRank embed or placed manually on the relevant FAQ template/section.
Workflow: build the FAQ schema in the app, click Preview snippet, copy the generated <script type="application/ld+json">…</script> block, and paste it into the FAQ template or a custom section if the app embed is not already rendering that FAQ schema on the live page.
The duplicate-schema risk
Many premium and popular Shopify themes already include Product, Article, and BreadcrumbList JSON-LD in their default snippets. If you turn on ProRank's Product schema on top, Google's validator will report two @type: "Product" blocks per page. That is noisy, can produce confusing AggregateRating mismatches, and may cause Google to ignore one of the blocks. Avoid duplicates instead of relying on Google to reconcile them.
The safe pattern:
- Run Live Schema Validation on representative templates before injecting anything.
- If the theme already emits a clean Product / Article / BreadcrumbList block, leave it. Disable that type in ProRank.
- If the theme emits an incomplete block (e.g. missing AggregateRating, missing GTIN), prefer fixing the theme block, or disable the theme block and let ProRank own it — but not both at once.
Where this lives
Routes
app.schema.tsx— main schema editorapp.review-schema.tsx— provider connection + review schemaschema-generator.server.ts— JSON-LD builders
Validation
Live Schema Validation is the first stop when something looks off. Combine it with Google's Rich Results Test for final confirmation on a public URL.