What Speakable Schema Actually Does
Speakable schema is a structured data type that tells search engines and AI assistants which specific sections of your page contain the most important, summary-worthy content. Think of it as raising your hand and saying: "This bit here - this is the part worth reading aloud or citing."
Originally designed for Google Assistant and voice search, Speakable has taken on a second life in the age of AI search. When ChatGPT, Perplexity, or Gemini crawl your site, they are essentially doing the same thing a voice assistant does: pulling out the most relevant snippet to answer a user's question. Speakable schema points them straight to the right paragraph.
For Shopify store owners, this is particularly useful on product pages, blog posts, and landing pages where you have strong, factual content buried underneath navigation, reviews, and app-injected clutter. The schema strips away the noise and says: "Start here."
The JSON-LD Structure You Need
Speakable schema lives inside a SpeakableSpecification object, which is nested within your page's primary schema type. Here is a clean example for a Shopify product page:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Merino Wool Running Socks",
"description": "Lightweight, moisture-wicking running socks made from 85% Merino wool. Ideal for long-distance runners.",
"speakable": {
"@type": "SpeakableSpecification",
"cssSelector": [".product-description", ".product-summary"]
}
}
The cssSelector property is the most practical approach for Shopify because it points to CSS class names already present in your theme's HTML. You identify the DOM elements that contain your best summary content, and the schema references them directly.
The alternative approach uses xpath instead of cssSelector, but for Shopify stores xpath is messy to maintain. Stick with CSS selectors.
Which CSS Selectors to Target
Before you write a single line of JSON-LD, open your Shopify product page in Chrome DevTools and inspect the HTML. You are looking for the wrapper elements that contain:
- Your product description (usually something like
.product__descriptionor.product-single__descriptiondepending on your theme) - A short summary or subtitle if your theme supports one
- Any key-feature bullet lists
Common selector names vary by theme. Dawn uses .product__description. Debut uses .product-single__description. Impulse and Prestige have their own naming conventions. Check your actual rendered HTML rather than guessing.
Keep your selector list tight. Two or three selectors is ideal. Pointing Speakable at your entire page body defeats the purpose entirely.
Adding the Schema to Your Shopify Theme
There are three practical ways to add Speakable schema to a Shopify store. The right method depends on your technical confidence and how many page templates you need to cover.
Option 1: Edit the Theme's Liquid Files Directly
This is the most reliable long-term approach. In your Shopify admin, go to Online Store, then Themes, and click Edit Code. For product pages, open sections/product-template.liquid or sections/main-product.liquid (the file name depends on your theme version).
Scroll to the bottom of the file, just before the closing </section> tag, and add a <script type="application/ld+json"> block containing your Speakable JSON-LD. You can use Liquid variables to make it dynamic:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "{{ product.title | escape }}",
"speakable": {
"@type": "SpeakableSpecification",
"cssSelector": [".product__description"]
}
}
</script>
One important note: if your theme already injects a Product schema block, you will get duplicate schema. Either merge the Speakable property into the existing schema block or remove the old one first. Duplicate @type: Product blocks on the same page can confuse parsers.
Option 2: Use a Shopify App
Apps like JSON-LD for SEO, Schema Plus, or TinySEO can inject schema without touching your Liquid files. Some of them support Speakable out of the box; others let you add custom JSON-LD blocks per template type.
The advantage is that app-injected schema survives theme updates. The downside is that most apps charge a monthly fee and add yet another script to your page load. If you are already managing schema through an app, check its settings before adding Speakable manually to avoid conflicts.
Option 3: Google Tag Manager
If your store has Google Tag Manager installed, you can deploy a Custom HTML tag containing your Speakable JSON-LD and fire it on specific page types using GTM's built-in triggers. This is useful if you want to test different selector configurations quickly without touching theme code.
The caveat with GTM is that JavaScript-rendered schema can sometimes be missed by crawlers that do not execute JS fully. For production use, Liquid-based injection is more dependable.
Speakable Schema on Shopify Blog Posts
Product pages get a lot of attention, but Shopify blog posts are actually where Speakable schema earns its keep. AI search engines regularly pull content from blog articles to answer informational queries, and a well-marked Speakable section gives them a clearly signposted answer.
For an article schema, the structure looks like this:
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to Choose the Right Running Sock for Marathon Training",
"speakable": {
"@type": "SpeakableSpecification",
"cssSelector": [".article__content h2:first-of-type", ".article__intro"]
}
}
A good rule of thumb: the content inside your Speakable selectors should be able to stand alone as a 20 to 30 second spoken answer. If it requires the reader to have already read two preceding paragraphs, it is too contextually dependent. Write your introductions and product summaries to be self-contained, and then point Speakable at them.
This is also good writing practice in general. Tight, standalone summaries do better in AI citations, featured snippets, and voice results simultaneously.
How to Test Your Speakable Implementation
Google's Rich Results Test does not currently display a Speakable preview the same way it shows FAQ or Product rich results. That said, it will validate your JSON-LD syntax and flag any structural errors, so it is still your first port of call. Run your URL through search.google.com/test/rich-results and check for warnings.
For AI-specific validation, paste your page URL into Perplexity and ask it a question your page should answer. Then check whether the answer it gives matches the content inside your Speakable selectors. It is not a perfect test, but it gives you a real-world signal of whether your marked-up content is being surfaced.
You can also use schema.org's own validator at validator.schema.org to confirm your JSON-LD is correctly structured before pushing it live.
If you want a more thorough look at how AI search engines are reading your site overall, FlinnSchema's free AI visibility audit covers structured data gaps including Speakable implementation across your key page types.
Common Mistakes That Undermine Speakable Schema
A few patterns consistently cause Speakable to underperform or be ignored entirely.
Pointing at Content That Is Not Crawlable
If your product description loads via JavaScript after the initial page render, and your crawler is not executing JS, the content inside your CSS selector will not exist when the schema is evaluated. Check that your Speakable-targeted content is in the initial HTML response, not injected by a client-side app.
Using Selectors That Match Multiple Unrelated Elements
A selector like .text-block might match your product description, a promotional banner, a footer blurb, and a cookie notice all at once. Be specific. Use selectors that are unique to the content you actually want spoken or cited.
Speakable Content That Is Too Long
Google's documentation suggests keeping Speakable content under 600 words per selector, ideally much shorter. If your .product__description contains 1,200 words of detailed spec sheets, consider adding a shorter .product__summary element to your theme and pointing Speakable there instead.
Forgetting to Update After a Theme Change
Shopify theme updates or full theme switches often rename CSS classes. A Speakable selector that worked on Debut will break when you switch to Dawn. Make Speakable schema part of your post-migration QA checklist. This is one of the reasons keeping your schema markup up to date matters more than most store owners realise.
Speakable Schema and the Broader AI Visibility Picture
Speakable is one piece of a larger structured data strategy. On its own, it improves the chance that AI assistants and voice searches surface your content accurately. Combined with strong Product schema, AggregateRating, and a well-formed WebSite schema, it contributes to a store that AI search engines find easy to understand and easy to cite.
There is a practical reason to prioritise this now rather than later. AI search is still forming its habits around which sources it trusts. Stores that have clean, well-structured, machine-readable content are building a citation track record at a point when the competition for AI mentions is still relatively low. That advantage compounds over time.
If you want to see how this fits into a full structured data strategy for your Shopify store, the FlinnSchema approach to AI visibility covers how we think about schema as a system rather than a checklist.
And if you are seeing Google rich results but not getting picked up by AI engines, that is a separate problem worth understanding on its own terms. It is a surprisingly common situation that often comes down to how your schema is structured, not whether it exists at all.
Frequently Asked Questions
Does Speakable schema still work in 2025?
Yes, though Google's documentation describes it as still in beta. Despite that, it remains a useful signal for AI search engines and voice assistants that are looking for clearly defined, summary-ready content. It is worth implementing, particularly on product and blog pages where you want a specific passage surfaced.
Will Speakable schema show as a rich result in Google Search?
Not in the traditional sense. Speakable does not generate a visual rich result badge in the search results page the way FAQ or Review schema can. Its primary benefit is in voice search responses and AI-generated answers, where the "result" is an audio clip or a cited passage rather than a visual enhancement.
How many CSS selectors should I include in my Speakable schema?
Two to three is the practical sweet spot. One selector per key content zone: typically a summary paragraph and a key-features list. More than three and you risk diluting the signal. The goal is to point at your tightest, clearest content, not to mark up everything on the page.
Can I add Speakable schema to a Shopify store without editing code?
Yes, using a schema app like JSON-LD for SEO or a GTM-based implementation. That said, if those tools do not natively support Speakable, you will need to use their custom JSON-LD injection feature, which still requires you to write the schema yourself. The Liquid file approach is more reliable for long-term maintenance, but apps are a reasonable starting point if you are not comfortable editing theme files directly. FlinnSchema's automation service handles this kind of implementation for stores that want it done properly from the start.

