Table of Contents
If you have just started building or customizing a Shopify store, you have probably encountered the word “schema” thrown around in two very different contexts. One moment someone talks about “section schema” and Liquid code, and the next they are talking about “product schema” for Google SEO. These are not the same thing, and understanding both is essential for any Shopify developer or store owner.
Key Takeaways
- Liquid Section Schema controls what merchants can customize in the Theme Editor, while Structured Data Schema (JSON-LD) helps search engines understand your store.
- The {% schema %} block defines settings, blocks, and controls that allow merchants to update content without editing code.
- Inputs like product, collection, image_picker, and metaobject provide access to Shopify resources through native pickers.
- Schema types such as Product, Organization, FAQ, Article, and BreadcrumbList can help generate rich search results and improve discoverability.
- Liquid schema creates a better merchant experience, while JSON-LD schema enhances how search engines and AI systems understand your content.
What is “Schema” in Shopify?
The word “schema” means a structured framework or plan. In Shopify, it appears in two completely separate, but equally important, contexts:
Context 1: Liquid Section Schema
Defined using the {% schema %} Liquid tag inside .liquid theme files. Controls what merchants can customize in the Theme Editor.
Context 2: Structured Data Schema
Written in JSON-LD format using Schema.org vocabulary. Communicates product, business, and content details directly to search engines like Google.
Both matter for building a professional Shopify store. The first shapes the merchant experience; the second shapes how your store appears in search results. Let’s dig into each one.
Need help implementing Shopify schema correctly? Our experienced Shopify developers can help you add, customize, and optimize schema markup to improve your store’s functionality and search visibility. Explore our Shopify development services and get expert support for your store. Hire Shopify Experts!
Part 1: Liquid Section Schema: Theme Customization
When Shopify introduced “Sections Everywhere” with Online Store 2.0, the {% schema %} tag became the backbone of every modern Shopify theme. Every .liquid file in your sections/ folder can contain a single {% schema %} block, a JSON object that tells the Theme Editor what settings to expose to the merchant.
Think of it like a control panel definition. The schema says: “This section has a heading, an image picker, and a button label, let the merchant edit these without touching code.”
A minimal section schema looks like this:
Once saved, those settings appear in the Shopify Theme Editor. The merchant never has to open code; they simply type a heading and pick an image. The Liquid template then pulls those values using section.settings.heading and section.settings.background_image.
Basic vs. Specialized Input Setting Types
Every setting inside a schema needs a type. Shopify divides these into two categories:
Basic input types
These map to standard HTML form elements and collect simple values:
| Type | What it renders | Returns |
|---|---|---|
| text | Single-line text field | String |
| textarea | Multi-line text area | String |
| number | Numeric input | Integer |
| checkbox | On/off toggle | Boolean (true/false) |
| select | Dropdown with options | String (chosen value) |
| radio | Radio button group | String (chosen value) |
| range | Slider with min/max/step | Integer |
| richtext | Basic rich text editor | HTML string |
| html | Raw HTML input | HTML string |
Specialized (Shopify object) input types
These are what make Shopify’s schema truly powerful. Rather than asking a merchant to type a collection handle or paste an image URL, specialized types open native Shopify pickers:
| Type | Opens | Returns | Category |
|---|---|---|---|
| image_picker | Shopify image uploader | Image object | Media |
| video_url | YouTube / Video URL field | URL object | Media |
| video | Shopify-hosted video picker | Video object | Media |
| color | Color picker | Hex color string | Style |
| color_scheme | Theme color scheme picker | Color scheme | Style |
| font_picker | Shopify font library | Font object | Style |
| product | Product picker | Product object | Store Data |
| product_list | Multi-product picker (up to 12) | Array of products | Store Data |
| collection | Collection picker | Collection object | Store Data |
| collection_list | Multi-collection picker (up to 50) | Array of collections | Store Data |
| blog | Blog picker | Blog object | Store Data |
| page | Page picker | Page object | Store Data |
| link_list | Navigation menu picker | Linklists object | Store Data |
| metaobject | Metaobject entry picker | Metaobject reference | Advanced |
| url | URL input (internal or external) | URL string | Advanced |
| liquid | Raw Liquid code input | Liquid string | Advanced |
Blocks inside Section Schema
Blocks are repeatable, orderable units within a section. Rather than hard-coding three testimonials, you define a “testimonial” block type and let merchants add, remove, and reorder as many as they like, all without code changes.
The “type”: “@app” entry is a special reserved block type, including it allows third-party Shopify apps to inject their own blocks into your section via theme app extensions. Always include it in sections meant to be extensible.
Sections support up to 50 blocks per instance. You can cap this using the max_blocks key. Blocks are accessed in Liquid via section.blocks array, and each block’s root element must include {{ block.shopify_attributes }} to enable click-to-select in the customizer.
Part 2: Structured Data Schema: SEO & Rich Snippets
The second type of schema has nothing to do with the Theme Editor. Instead, it’s a way to communicate structured information about your store directly to search engines using a standardized vocabulary from Schema.org, a joint initiative of Google, Bing, Yahoo, and Yandex.
The recommended format for Shopify is JSON-LD (JavaScript Object Notation for Linked Data), placed inside a <script type=”application/ld+json”> block in your page’s <head> tag. It’s invisible to shoppers but read by search engines, which can use it to display “rich results”, enhanced search listings with stars, prices, availability, and more.
Key Structured Data Schema Types for Shopify
1. Product schema
The most important schema type for any Shopify store. Product schema allows you to pass detailed product information, name, URL, price, availability, SKU, and description, directly to search engines. When implemented correctly, it can unlock product rich results: listings that display price, availability, and review stars right in the Google search results.
2. Organization schema
Organization schema identifies your business to search engines, name, logo, contact details, social profiles. When correct, it can trigger Google’s Knowledge Panel for your brand. It belongs in your theme’s layout/theme.liquid file so it appears on every page.
3. BreadcrumbList schema
Breadcrumb schema tells Google the hierarchical structure of your site. On collection pages and product pages, it causes clean breadcrumb links to appear directly in search results, helping users and search engines understand your site structure at a glance.
4. FAQ schema
FAQ schema marks up question-and-answer content so that it can appear as expandable FAQ dropdowns in Google results (in “People Also Ask” sections). This is particularly valuable for product pages, help articles, and collection landing pages. Notably, AI-generated FAQ schema can also appear in AI tools like ChatGPT and Google AI Overviews.
5. Article schema
If you run a Shopify blog, Article schema helps search engines understand and surface your blog posts with rich results including publication date, author, and featured images.
6. Local Business schema
For stores with a physical presence or click-and-collect options, Local Business schema communicates your address, phone number, opening hours, and location to Google Maps and the local search “pack.”
How to Implement Both Schema Types?
Implementing Liquid section schema
In your Shopify admin, go to Online Store → Themes → Edit Code → Sections → Create Section. Write your HTML and Liquid code, then add the {% schema %}…{% endschema %} block at the bottom of the file. Save, then navigate to Customize in the Theme Editor, your new section will be available to add to any page template.
For global theme settings, edit the /config/settings_schema.json file. Settings defined here become available everywhere in Liquid via the settings object.
Implementing structured data (JSON-LD) schema
The recommended approach is Liquid theme snippets. Create a snippet file (e.g. structured-data-product.liquid) containing your JSON-LD script block with Liquid variables for dynamic values. Then include this snippet in the relevant template file (e.g. sections/main-product.liquid) using {% render ‘structured-data-product’ %}.
For stores that don’t want to edit code, dedicated apps like Schema Ninja and Schema Plus automate JSON-LD injection, verify output against Google’s guidelines, and can generate AI-powered FAQ schema for products and collections.
Best Practices & Common Mistakes
Use color_scheme in sections: Color scheme settings inherit from global theme settings, keeping your design consistent. Standalone color settings are independent and can lead to clashes.
Include {{ block.shopify_attributes }}: This Liquid tag on each block’s root element enables click-to-select in the Theme Customizer. Without it, merchants can’t click to edit a block.
Bind JSON-LD to live data: Always pull price, availability, and currency from Shopify Liquid variables so structured data stays accurate as product details change.
Referencing global settings in schema JSON: Section schema is self-contained. You can read global settings values in Liquid templates but cannot reference them from within the schema JSON block itself.
Forgetting nil checks: Specialized settings like product or collection return nil if nothing is selected. Always check before rendering or you’ll get Liquid errors.
Duplicate JSON-LD from apps + theme: If your theme already outputs Product schema and you install a schema app, you may get duplicate or conflicting structured data. Audit with Google’s Rich Results Test.
Conclsuion
Shopify schema types are really two parallel systems serving very different audiences. The {% schema %} Liquid tag serves your theme editors and merchants, it is the architecture of a customizable, no-code storefront. The JSON-LD structured data schema serves search engines and AI systems, it is the architecture of a discoverable, rich-result-eligible store.
Mastering both gives you the full picture. A section built with well-designed Liquid schema is easy for merchants to manage. A product page enhanced with JSON-LD Product schema gives Google and AI tools the context they need to send high-quality, informed traffic your way.
The next step: open your theme editor, inspect an existing section’s {% schema %} block to see these types in the wild, then run your product pages through the Google Rich Results Test to see where your structured data gaps are. Both improvements compound over time.


