How to Add Schema Markup to Your Shopify Blog Using Metafields (No Code Editing Required)
What's Inside
- Why Schema Markup Is Your Secret SEO Weapon
- App-Generated vs. Manual Schema — Why Manual Wins
- The Schema Types Every Shopify Blog Needs
- Step-by-Step: Create Your Schema Metafields
- Step-by-Step: Add Custom Liquid to Your Theme
- Copy-Paste JSON Templates for Every Schema Type
- How to Validate Your Schema Markup
- Frequently Asked Questions
Why Schema Markup Is Your Secret SEO Weapon
Here's something most Shopify store owners completely miss: your blog posts are invisible to Google's rich results without structured data. You're writing great content, taking the time to create tutorials and FAQs, and Google can't even display them properly in search because it doesn't know what type of content you're publishing.
Schema markup — specifically JSON-LD structured data — is the language that tells Google, Bing, ChatGPT, and every other search engine exactly what your content is. An article. A tutorial. A recipe. An FAQ. When Google understands your content type, it can display it as rich snippets — those expanded search results with star ratings, step numbers, FAQ dropdowns, recipe cards, and video thumbnails that dominate the first page.
The stores that show up with rich snippets consistently get higher click-through rates than basic blue links. That's not opinion — it's data. And the best part? Most of your competitors aren't doing this. They're relying on apps that generate generic, minimal schema or they're doing nothing at all.
App-Generated vs. Manual Schema — Why Manual Wins
I know what you're thinking — "Can't I just install an app for this?" You can. And for basic product and collection page schema, apps like InstaIndex do a solid job. But for your blog content, manual schema through metafields gives you something apps simply cannot: complete control over every field, every property, every detail.
❌ App-Generated Blog Schema
- Generic Article markup with minimal fields
- No author credentials, job title, or social profiles
- No FAQ, HowTo, or Recipe schema on blog posts
- Breaks or changes when the app updates
- Duplicate schema conflicts between apps
- You're paying monthly for limited output
✅ Manual Metafield Schema
- Full Article markup with complete author entity
- Your credentials, expertise, and social profiles included
- FAQ, HowTo, Recipe — any schema type you need
- Survives theme updates and app changes
- Zero conflicts — you control what's on each page
- No monthly fee — it's built into Shopify for free
Google's E-E-A-T framework (Experience, Expertise, Authoritativeness, Trustworthiness) looks at who wrote the content and what qualifies them. App-generated Article schema might include your name, but it won't include your job title as "eCommerce Business Consultant & Shopify Expert," your university teaching credentials, or your social profile links. Your manual Article schema includes all of that — telling Google this content comes from a real, qualified expert. That's the difference between ranking on page one and getting buried.
The Schema Types Every Shopify Blog Needs
Not every blog post needs every schema type. Here's a breakdown of which types to use and when, so you're not guessing every time you publish.
📝 Article Schema
- Use on every blog post
- Includes headline, author, publisher, dates
- Full author entity with credentials and social links
- Builds your E-E-A-T signals with Google
❓ FAQPage Schema
- Use on every blog post (always include an FAQ section)
- Creates expandable FAQ dropdowns in Google search
- FAQ text must exactly match your visible FAQ section
- Dramatically increases your search result real estate
🔧 HowTo Schema
- Use on tutorial posts only
- Shows numbered steps with images in search results
- Includes estimated time, tools, and supplies
- Perfect for your ScribeNow step-by-step content
Additional Schema Types for Specialized Blog Content
Depending on what you sell and write about, you may also need these schema types. Each one gets its own metafield using the same approach — create the JSON metafield definition, add the Custom Liquid output, paste the raw JSON per post.
🍳 Recipe Schema
- Use when your blog includes recipes (food, skincare DIY, craft mixtures)
- Shows recipe cards in Google with cook time, calories, ratings
- Includes ingredients list, step-by-step instructions, nutrition info
- Perfect for food brands, wellness stores, and beauty brands
🎥 VideoObject Schema
- Use when your blog post includes an embedded video
- Shows video thumbnails directly in Google search results
- Includes title, description, duration, upload date, and thumbnail
- Makes your content eligible for Google's Video tab
🛍️ Product Review Schema
- Use when your blog reviews or showcases specific products
- Shows star ratings and price ranges in search results
- Includes brand, availability, and product descriptions
- Different from your product page schema — this is for editorial reviews
Step-by-Step: Create Your Schema Metafields in Shopify
First, we'll create the metafield definitions. This tells Shopify to add JSON fields to every blog post where you can paste your schema markup. You do this once and it's available on every blog post going forward.
1 Navigate to Settings in Your Shopify Dashboard
Click Settings in the bottom-left corner of your Shopify admin. This is where all your store configuration lives.
2 Click "Metafields and Metaobjects"
In the Settings menu, find and click Metafields and metaobjects. This is where you define custom data fields for your store's content types — products, collections, pages, and blog posts.
3 Open "Blog Posts" Metafields
Click on Blog posts from the metafield content types list. This is where you'll create your schema definitions. You need to create these metafields:
- article_schema — for your Article structured data
- faq_schema — for your FAQ structured data
- howto_schema — for tutorial How-To structured data
If you need the additional schema types, also create:
- recipe_schema — for Recipe structured data
- video_schema — for VideoObject structured data
- product_review_schema — for product review structured data
4 Click "Add Definition"
Click the Add definition button to create your first metafield. You'll repeat this process for each schema type you need.
5 Enter the Metafield Name
Type the name of your first metafield — start with article_schema. Shopify will automatically generate the namespace and key as custom.article_schema, which is exactly what your Liquid code will reference.
6 Click "Select Type"
Click the Select type dropdown to choose what kind of data this metafield will hold.
7 Select "JSON" as the Type
Find and click JSON in the type list. This is critical — the JSON type validates your structured data when you save it. If your JSON has a syntax error (missing comma, unclosed bracket), Shopify will catch it before it goes live. Multi-line text won't validate — broken JSON goes straight to your page and silently fails.
8 Click "Save"
Save your first metafield definition. Now repeat steps 4-8 for each additional schema type: faq_schema, howto_schema, and any others you need (recipe_schema, video_schema, product_review_schema).
Step-by-Step: Add Custom Liquid to Your Blog Post Template
The metafields store your JSON, but they don't output anything to the page by themselves. Think of them as a filing cabinet — the data sits there until you tell the theme to pull it out. This Custom Liquid section reads each metafield and wraps it in the proper <script> tags so Google can find it.
9 Navigate to Your Online Store
Go back to your main Shopify dashboard and click Online Store in the left sidebar.
10 Click "Edit Theme"
Click the Edit theme button (or Customize depending on your Shopify version) to open the Theme Customizer.
11 Open the Page Type Dropdown
At the top of the Theme Customizer, you'll see a dropdown that says "Home page" by default. Click it to see all your template types.
12 Select "Blog Posts"
Find and click Blog posts in the template list. This takes you to the blog post template editor where your individual blog posts are rendered.
13 Choose Your Blog Post Template
Select the Default blog post template — or if you've created a custom blog template, select that instead. The Custom Liquid section you add here will apply to every blog post that uses this template.
14 Click the "+" to Add a New Section
In the Template sections panel on the left, click the + button to add a new section to your blog post template.
15 Add a "Custom Liquid" Section
Find and select Custom Liquid from the section list. This gives you a code field where you can add Liquid code that runs on every blog post using this template.
16 Paste the Schema Output Code
In the Custom Liquid field, paste the following code. This checks each metafield — if it has content, it wraps the JSON in proper script tags for Google. If a metafield is empty (for example, no Recipe schema on a non-recipe post), nothing outputs. Clean and automatic.
{% if article.metafields.custom.article_schema %}
<script type="application/ld+json">
{{ article.metafields.custom.article_schema }}
</script>
{% endif %}
{% if article.metafields.custom.faq_schema %}
<script type="application/ld+json">
{{ article.metafields.custom.faq_schema }}
</script>
{% endif %}
{% if article.metafields.custom.howto_schema %}
<script type="application/ld+json">
{{ article.metafields.custom.howto_schema }}
</script>
{% endif %}
{% if article.metafields.custom.recipe_schema %}
<script type="application/ld+json">
{{ article.metafields.custom.recipe_schema }}
</script>
{% endif %}
{% if article.metafields.custom.video_schema %}
<script type="application/ld+json">
{{ article.metafields.custom.video_schema }}
</script>
{% endif %}
{% if article.metafields.custom.product_review_schema %}
<script type="application/ld+json">
{{ article.metafields.custom.product_review_schema }}
</script>
{% endif %}
17 Click "Save"
Save your theme customization. That's it — the Custom Liquid section is now part of your blog post template. Every blog post that uses this template will automatically output whatever schema you paste into its metafields.
Copy-Paste JSON Templates for Every Schema Type
Here are ready-to-use JSON templates for each schema type. For each blog post, copy the relevant template, replace the placeholder text in [BRACKETS], and paste it into the matching metafield. Shopify's JSON validation catches errors before they go live.
<script> tags. The Custom Liquid section handles the wrapper automatically.Article Schema — Use on Every Blog Post
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "[Blog Post Title]",
"description": "[Meta description — 150-160 characters]",
"image": "[Featured image URL]",
"author": {
"@type": "Person",
"name": "Veronica Jeans",
"url": "https://veronicajeans.com",
"jobTitle": "eCommerce Business Consultant & Shopify Expert",
"description": "Veronica Jeans is an eCommerce business consultant and Shopify expert who has coached entrepreneurs to build 7-Figure online businesses. She lectures on E-Commerce, SEO/SEM, and Social Media at Collegium Civitas University in Poland.",
"sameAs": [
"https://www.youtube.com/@veronicajeans",
"https://www.linkedin.com/in/veronicajeans/",
"https://www.instagram.com/vaborla/"
]
},
"publisher": {
"@type": "Organization",
"name": "Veronica Jeans - eCommerce Consulting",
"logo": {
"@type": "ImageObject",
"url": "[YOUR LOGO URL]"
}
},
"datePublished": "[YYYY-MM-DD]",
"dateModified": "[YYYY-MM-DD]",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "[Full blog post URL]"
}
}
FAQPage Schema — Use on Every Blog Post
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "[Question 1 — must match visible FAQ text exactly]",
"acceptedAnswer": {
"@type": "Answer",
"text": "[Answer 1 — must match visible FAQ text exactly]"
}
},
{
"@type": "Question",
"name": "[Question 2]",
"acceptedAnswer": {
"@type": "Answer",
"text": "[Answer 2]"
}
},
{
"@type": "Question",
"name": "[Question 3]",
"acceptedAnswer": {
"@type": "Answer",
"text": "[Answer 3]"
}
},
{
"@type": "Question",
"name": "[Question 4]",
"acceptedAnswer": {
"@type": "Answer",
"text": "[Answer 4]"
}
},
{
"@type": "Question",
"name": "[Question 5]",
"acceptedAnswer": {
"@type": "Answer",
"text": "[Answer 5]"
}
}
]
}
HowTo Schema — Tutorial Posts Only
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "[How to ... — tutorial title]",
"description": "[Brief description of what this tutorial teaches]",
"image": "[Featured image URL]",
"totalTime": "PT[X]M",
"tool": [
{ "@type": "HowToTool", "name": "[Tool 1]" },
{ "@type": "HowToTool", "name": "[Tool 2]" }
],
"supply": [
{ "@type": "HowToSupply", "name": "[Supply/requirement 1]" },
{ "@type": "HowToSupply", "name": "[Supply/requirement 2]" }
],
"step": [
{
"@type": "HowToStep",
"position": 1,
"name": "[Step 1 title]",
"text": "[Step 1 instructions]",
"image": "[Step 1 screenshot URL]"
},
{
"@type": "HowToStep",
"position": 2,
"name": "[Step 2 title]",
"text": "[Step 2 instructions]",
"image": "[Step 2 screenshot URL]"
}
]
}
Recipe Schema — Food, Skincare DIY, and Craft Posts
This is a big one for stores selling food products, skincare ingredients, candle-making supplies, or any product where customers make something at home. Recipe rich results are some of the most visually prominent in Google search — they show images, cook time, ratings, and calorie counts right in the results page.
{
"@context": "https://schema.org",
"@type": "Recipe",
"name": "[Recipe Name]",
"description": "[Brief recipe description]",
"image": "[Recipe photo URL]",
"author": {
"@type": "Person",
"name": "Veronica Jeans"
},
"datePublished": "[YYYY-MM-DD]",
"prepTime": "PT[X]M",
"cookTime": "PT[X]M",
"totalTime": "PT[X]M",
"recipeYield": "[e.g., 4 servings]",
"recipeCategory": "[e.g., Dessert, Main Course, Skincare]",
"recipeCuisine": "[e.g., American, DIY, Artisan]",
"keywords": "[keyword1, keyword2, keyword3]",
"nutrition": {
"@type": "NutritionInformation",
"calories": "[X] calories",
"servingSize": "[e.g., 1 cup]"
},
"recipeIngredient": [
"[Ingredient 1 with amount — e.g., 2 cups flour]",
"[Ingredient 2 with amount]",
"[Ingredient 3 with amount]",
"[Ingredient 4 with amount]"
],
"recipeInstructions": [
{
"@type": "HowToStep",
"position": 1,
"name": "[Step 1 title]",
"text": "[Step 1 detailed instructions]",
"image": "[Step 1 photo URL — optional]"
},
{
"@type": "HowToStep",
"position": 2,
"name": "[Step 2 title]",
"text": "[Step 2 detailed instructions]"
},
{
"@type": "HowToStep",
"position": 3,
"name": "[Step 3 title]",
"text": "[Step 3 detailed instructions]"
}
]
}
recipeCategory field appropriately (e.g., "Skincare" or "Craft" instead of "Main Course").VideoObject Schema — Posts with Embedded Videos
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "[Video Title]",
"description": "[Video description — what viewers will learn]",
"thumbnailUrl": "[Video thumbnail image URL]",
"uploadDate": "[YYYY-MM-DD]",
"duration": "PT[X]M[Y]S",
"contentUrl": "[Direct video file URL — if available]",
"embedUrl": "[YouTube or ScribeNow embed URL]",
"author": {
"@type": "Person",
"name": "Veronica Jeans"
}
}
Product Review Schema — Blog Posts Reviewing Products
{
"@context": "https://schema.org",
"@type": "Product",
"name": "[Product Name]",
"description": "[Product description]",
"image": "[Product image URL]",
"brand": {
"@type": "Brand",
"name": "[Brand Name]"
},
"review": {
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "[1-5]",
"bestRating": "5"
},
"author": {
"@type": "Person",
"name": "Veronica Jeans"
},
"reviewBody": "[Your review summary]"
},
"offers": {
"@type": "Offer",
"url": "[Product page URL]",
"priceCurrency": "USD",
"price": "[Price]",
"availability": "https://schema.org/InStock"
}
}
How to Validate Your Schema Markup
Never publish a blog post without validating your schema first. Broken structured data doesn't just fail to show rich results — it can trigger warnings in Google Search Console that affect your entire site's standing.
Schema Validation Workflow
- Save your JSON in the Shopify metafield — Shopify's built-in validation catches syntax errors
- Publish the blog post and wait 30 seconds for the page to go live
- Copy the live blog post URL
- Paste it into Google's Rich Results Test — this shows exactly what Google sees
- Check for green checkmarks on Article, FAQ, HowTo, Recipe, or whatever types you've added
- Fix any errors — click the error to see which field has an issue
- Also test at Schema.org Validator for comprehensive validation beyond Google's supported types
"Missing field: image" — You left the image URL as a placeholder. Replace it with your actual featured image URL.
"Invalid date format" — Dates must be in YYYY-MM-DD format. "February 15, 2026" won't work — use "2026-02-15".
"Missing field: author" — Your Article schema needs the complete author object, not just a name string.
"JSON-LD syntax error" — Usually a missing comma, extra comma after the last item in a list, or unclosed bracket. Shopify's JSON metafield catches most of these on save.
Watch the Full Tutorial
Frequently Asked Questions
Your Blog Now Speaks Google's Language
You've just built something most Shopify store owners never even think about — a complete, theme-independent structured data system that makes every blog post eligible for rich results. No app dependencies, no monthly fees, no code files that break on theme updates.
Your Article schema tells Google you're a credentialed expert. Your FAQ schema puts expandable answers directly in search results. Your HowTo schema displays your tutorials with numbered steps and images. And your Recipe, Video, and Product Review schemas make specialized content stand out from every competitor who's still publishing plain blog posts with zero structured data.
This is infrastructure. The kind of thing that works in the background on every post you publish from today forward, compounding your SEO advantage over time. The store owners who build systems like this are the ones who stop trading hours for traffic and start building authority that generates revenue while they sleep.
Want help implementing this across your store and optimizing your entire Shopify SEO foundation? Let's build the systems that put your store in front of the right customers — consistently.
Veronica Jeans
eCommerce Strategist | Shopify Expert | 7-Figure Business Coach
I have integrated my extensive knowledge in the field of eCommerce and Shopify, along with my international financial expertise, to offer up a playbook for generating income online.