Field Notes · Discoverability

Why JSON-LD discoverability is the personalization gap your storefront has been missing

ChatGPT, Perplexity, and Google SGE are answering product queries from your structured data — and most storefronts have not published any. Here is the gap-paraphrase frame, the three blocks every page needs, and the one script tag that ships them. 4 min read

What "JSON-LD discoverability" actually means

JSON-LD discoverability is the practice of putting a paragraph of schema.org markup on every meaningful page of a storefront so that machines — search crawlers, AI assistants, comparison engines — can read what the page is about before they read how it looks. The JSON-LD block is invisible to visitors; it is a script tag with @context: https://schema.org and a @type describing the entity: Product, BlogPosting, FAQPage, Offer, AggregateRating, or any of the several hundred types the schema namespace exposes. A search bot reading the page can read the visible copy and the structured copy in parallel; modern AI assistants and answer engines, increasingly, read only the structured copy and use the visible copy to verify it. That gap between writing for the human eye and writing for the parser is what has been costing storefronts shape in the new discovery channels of 2026.

Why storefronts lose shape in ChatGPT, Perplexity, and Google SGE

In the old discovery model, you wrote for Googlebot. Googlebot read your product page, indexed your title tag, your meta description, your H1, and your product copy. If your copy was clear and your backlinks were clean, you ranked for the queries you deserved. In the new discovery model, you are also writing for ChatGPT shopping, Perplexity Buy With Google, Google SGE's AI snapshots, Claude's product search, and the still-nascent in-chat commerce surfaces from every major assistant. Those surfaces do not always crawl your page the way Googlebot did. Some of them consume only the structured data layer. Some of them synthesize an answer from structured data across many storefronts and use your visible copy as a weight, not a source of truth. If your Product markup says one variant has a price of $159 and your visible card shows a crossed-out original of $189 with a sale price of $159, modern answer engines will quote whichever is in the structured block — and if it is missing, they will quote nothing at all, or quote the wrong thing from a competitor who bothered to publish the markup.

The gap-paraphrase frame: anonymous visitor, typed intent, structured markup

The same three-stage sequence that produces visitor intelligence on the front of the storefront produces JSON-LD discoverability on the back: (1) an anonymous visitor arrives; (2) the visitor's typed intent becomes a machine-parsable signal; (3) the storefront emits a structured page. Most storefronts have stage 1. Some of them, with intent-capture widgets or on-page search, have stage 2. Very few of them have stage 3 — and that is the gap. The shape the storefront loses in answer engines is the shape it failed to publish. Every product card that should have Product markup, every FAQ block that should have FAQPage markup, every blog post that should have BlogPosting markup with headline, datePublished, author, and an articleBody that survives tag stripping, is a query the storefront will never win in the new channels.

What to actually emit

Three blocks per page, no more, no less. (1) A BlogPosting or Article block — depending on whether the page is editorial — with headline, datePublished, dateModified, author, publisher, mainEntityOfPage, articleBody, and wordCount. (2) A BreadcrumbList with one ListItem per navigation hop, so the answer engine can quote "Home › Blog › This post" instead of just the URL. (3) Either a Product, FAQPage, or HowTo block, depending on the page's job. The BlogPosting block answers "what is this page." The BreadcrumbList answers "where does it live." The third block answers "what is the visitor supposed to do here." Those three together are the smallest viable JSON-LD footprint for a storefront page in 2026.

How SiteBridge ships it for free

SiteBridge is one script tag. The widget reads each card's data-product-id, opens a chat sidebar when the visitor lands, and routes whatever they type through /api/parse-intent — an OpenAI endpoint that ranks your catalog against the visitor's stated need. On the back, every detail route the widget serves includes the three JSON-LD blocks above, emitted server-side at render time so the markup is in the HTML on first byte — not hydrated, not lazy, not behind a JavaScript flag. Paste the snippet from the install guide onto your product page template, just before </head>, and your next page-view will arrive at the answer engines with structured data already attached. Try it on the sandbox before you ship it, and step through the full setup in the onboarding hub if you'd rather not pick each piece apart on your own.

Sources: paraphrased from public schema.org guidance, Google's structured data documentation, and SiteBridge writeups in 2026. Treat the figures as community-reported patterns, not measured data.


See intent land in your dashboard.

The widget pipes every typed query through /api/parse-intent and logs each match into analytics_events. Free tier, no card.

Get the weekly shipping digest