---
title: "Schema Markup for Shopify"
description: "What schema Shopify Dawn ships by default, what it leaves out, and how to add JSON-LD manually to earn rich results in Google."
canonical: https://lionelz.com/en/blog/schema-markup-shopify/
lang: en
---

SEO

# Schema Markup for Shopify

What schema Shopify Dawn ships by default, what it leaves out, and how to add JSON-LD manually to earn rich results in Google.

**Lionel Fenestraz** · 22 May 2026 · 16 min read · Updated: May 2026 Google Partner · CXL Certified Optimizer · 7+ years in Google Ads and Meta Ads

![Example of rich results in Google for a Shopify product page showing rating, price and availability](https://lionelz.com/images/blog/2026/05/shopify-schema-markup-json-ld.webp)

In this article

[Contents](#contents) [What is schema markup and why does Google reward it with rich results?](#what-is-schema-markup-and-why-does-google-reward-it-with-rich-results) [What schema does Shopify Dawn generate automatically?](#what-schema-does-shopify-dawn-generate-automatically) [What schema does Shopify NOT generate, and should you add yourself?](#what-schema-does-shopify-not-generate-and-should-you-add-yourself) [How do you add JSON-LD to custom pages with theme snippets?](#how-do-you-add-json-ld-to-custom-pages-with-theme-snippets) [When does FAQPage make sense on product pages?](#when-does-faqpage-make-sense-on-product-pages) [Product + AggregateRating: when can you use it safely?](#product--aggregaterating-when-can-you-use-it-safely) [How do you validate your schema before publishing?](#how-do-you-validate-your-schema-before-publishing) [Schema apps or your own code? What changes on the invoice](#schema-apps-or-your-own-code-what-changes-on-the-invoice) [Frequently asked questions](#frequently-asked-questions) [Schema only matters if the page backs it up](#schema-only-matters-if-the-page-backs-it-up)

In this article

[Contents](#contents)[What is schema markup and why does Google reward it with rich results?](#what-is-schema-markup-and-why-does-google-reward-it-with-rich-results)[What schema does Shopify Dawn generate automatically?](#what-schema-does-shopify-dawn-generate-automatically)[What schema does Shopify NOT generate, and should you add yourself?](#what-schema-does-shopify-not-generate-and-should-you-add-yourself)[How do you add JSON-LD to custom pages with theme snippets?](#how-do-you-add-json-ld-to-custom-pages-with-theme-snippets)[When does FAQPage make sense on product pages?](#when-does-faqpage-make-sense-on-product-pages)[Product + AggregateRating: when can you use it safely?](#product--aggregaterating-when-can-you-use-it-safely)[How do you validate your schema before publishing?](#how-do-you-validate-your-schema-before-publishing)[Schema apps or your own code? What changes on the invoice](#schema-apps-or-your-own-code-what-changes-on-the-invoice)[Frequently asked questions](#frequently-asked-questions)[Schema only matters if the page backs it up](#schema-only-matters-if-the-page-backs-it-up)

Free review · 30 min

I go through your site with you and tell you what to fix first to gain visibility.

[Book a call →](https://calendar.app.google/G3jeffmFY52dg38GA)

Most Shopify stores I audit have the same blind spot: they think they aren’t doing anything with schema markup, and it turns out Shopify is already injecting half of it for them. The real issue isn’t “Shopify ships no schema”. The issue is that it ships just enough for a basic listing, leaves out everything that could actually move the needle in rich results, and when you stack apps on top you end up with duplicated JSON-LD that breaks rendering in Google.

According to the [official Google Search Central documentation](https://developers.google.com/search/docs/appearance/structured-data/product), a correctly implemented `Product` markup is the hard requirement to show up in product rich results with stars, price and availability. Google doesn’t invent that visual block: it reads it from your page’s JSON-LD. If your theme doesn’t emit it, or emits it poorly, you lose that visual real estate to the competitor who does. This guide is the technical inventory your theme developer should hand you but almost never does. If you landed here after reading the [pillar Shopify SEO guide](https://lionelz.com/en/blog/shopify-seo-ecommerce-2026/), this is the missing deep dive.

> **Key Takeaways**
> 
> -   Shopify Dawn auto-generates `Product`, `Offer` and `Organization` in `product.json.liquid`, but it won’t reliably emit `FAQPage`, `HowTo`, `Article` or `BreadcrumbList` ([Shopify.dev](https://shopify.dev/docs/storefronts/themes/architecture/templates/product), 2025)
> -   Product pages with valid `Product` + `AggregateRating` markup are eligible for star rich results, but only when reviews come from verified customers ([Google Search Central](https://developers.google.com/search/docs/appearance/structured-data/review-snippet), 2025)
> -   Google’s [Rich Results Test](https://search.google.com/test/rich-results) checks eligibility for visual features; the [Schema Markup Validator](https://validator.schema.org) checks pure syntax
> -   Duplicating schema (app + theme + another app) is the most common mistake I see: Google can ignore all of it when it detects a conflict
> -   A well-integrated reviews app usually costs less than paying a developer for a custom snippet, if you have a high product volume

---

## Contents

1.  [What is schema markup and why does Google reward it with rich results?](#what-is-schema-markup-and-why-does-google-reward-it-with-rich-results)
2.  [What schema does Shopify Dawn generate automatically?](#what-schema-does-shopify-dawn-generate-automatically)
3.  [What schema does Shopify NOT generate, and should you add yourself?](#what-schema-does-shopify-not-generate-and-should-you-add-yourself)
4.  [How do you add JSON-LD to custom pages with theme snippets?](#how-do-you-add-json-ld-to-custom-pages-with-theme-snippets)
5.  [When does FAQPage make sense on product pages?](#when-does-faqpage-make-sense-on-product-pages)
6.  [Product + AggregateRating: when can you use it safely?](#product--aggregaterating-when-can-you-use-it-safely)
7.  [How do you validate your schema before publishing?](#how-do-you-validate-your-schema-before-publishing)
8.  [Schema apps or your own code? What changes on the invoice](#schema-apps-or-your-own-code-what-changes-on-the-invoice)
9.  [Frequently asked questions](#frequently-asked-questions)
10.  [Schema only matters if the page backs it up](#schema-only-matters-if-the-page-backs-it-up)

---

## What is schema markup and why does Google reward it with rich results?

Schema markup is a structured vocabulary defined at [Schema.org](https://schema.org/), a collaborative project founded by Google, Microsoft, Yahoo and Yandex. The recommended way to implement it is JSON-LD, confirmed as the preferred format by [Google Search Central](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data). Without that markup, Google reads your page as plain text. With it, Google understands there’s a product, a price and stock.

The visible reward is rich results: star ratings, price range, availability, expandable FAQ, breadcrumb in the snippet. Google doesn’t hand these out by decree. It grants them when it detects valid markup, content that matches what’s marked up and a minimum reputation on the URL. That last point gets forgotten a lot. You can have pristine JSON-LD and still get no rich results because Google thinks your page is weak.

The confusion I run into most: people think schema markup hands them rankings. It doesn’t. Google’s documentation states plainly that it isn’t a direct ranking factor. What it does is raise the odds that, when you already rank, your snippet takes up more pixels on the SERP and earns a higher CTR. That gap can move traffic. But if you don’t rank, piling on more schema won’t put you at the top.

> **Citable capsule:** Schema markup is a structured vocabulary from Schema.org, implemented in JSON-LD format per Google Search Central. It isn’t a direct ranking factor, but it enables rich results (stars, price, availability, FAQ) that boost the snippet’s visual presence on the SERP. Source: Google Search Central, 2025.

---

## What schema does Shopify Dawn generate automatically?

Dawn is Shopify’s free reference theme. According to the [Shopify.dev product templates documentation](https://shopify.dev/docs/storefronts/themes/architecture/templates/product), the `product.json.liquid` file builds a default `Product` JSON-LD block containing name, description, image, SKU, brand and at least one `Offer` with price, currency and availability. That block is emitted by the layout itself, not by an app.

### Product schema (Product + Offer)

This is what Dawn injects into every `/products/*` page:

```
{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "Camiseta básica algodón orgánico",
  "url": "https://tu-tienda.com/products/camiseta-basica",
  "image": "https://cdn.shopify.com/s/files/1/.../camiseta-basica.jpg",
  "description": "Camiseta de algodón orgánico certificado GOTS.",
  "brand": {
    "@type": "Brand",
    "name": "Tu Marca"
  },
  "sku": "CAM-BAS-001",
  "offers": {
    "@type": "Offer",
    "price": "29.90",
    "priceCurrency": "EUR",
    "availability": "https://schema.org/InStock",
    "url": "https://tu-tienda.com/products/camiseta-basica"
  }
}
```

The actual code that generates it in Dawn lives in the `snippets/product-media.liquid` snippet and in `sections/main-product.liquid`. Values are read from the Liquid `product` object, so if you change the name or price in the admin, the JSON-LD updates on the next build.

### Organization schema (Organization)

On the home page, Dawn emits a simple `Organization` block with name and logo, as long as you’ve uploaded a logo in `theme settings`. It won’t emit `sameAs` with social links unless you add them yourself. If your Google Business profile or Knowledge Panel is built on your social accounts, that matters.

### What looks like schema but isn’t

Shopify also emits Open Graph meta tags and Twitter Cards. They’re useful for Facebook and X, but they don’t count as structured data for Google. Don’t mix them up when you’re doing your inventory.

When auditing stores running older custom themes (pre-2021, before Dawn launched), I often find schema in `microdata` format instead of JSON-LD, or `Product` blocks missing `priceCurrency` or `availability`. Google tolerates microdata, but the Rich Results Test tends to complain more with those themes. If you’re migrating to an OS 2.0 theme, that’s the moment to clean it up.

> **Citable capsule:** Shopify Dawn injects JSON-LD by default with the types `Product`, `Offer` and `Organization`. The `Product` block on product pages includes name, image, SKU, brand, price, currency and availability, pulled from the Liquid `product` object. Source: Shopify.dev, 2025.

---

## What schema does Shopify NOT generate, and should you add yourself?

Here’s the real gap. Dawn doesn’t emit `FAQPage` in any default template, it doesn’t emit `HowTo` (it never has), and it generates `BreadcrumbList` inconsistently depending on the template. On blog pages (`article.json.liquid`) it doesn’t emit `Article` with all the fields Google asks for to appear in Top Stories either.

### Gap inventory by page type

Page

Dawn generates

Missing

Impact if you add it

Product

`Product`, `Offer`

`AggregateRating`, `Review`, `FAQPage`

Stars and FAQ on SERP

Collection

Nothing reliable

`ItemList`, `BreadcrumbList`

Better context, little visual

Home

Minimal `Organization`

`sameAs`, `WebSite` with `SearchAction`

Sitelinks Searchbox

Blog post

Partial `Article`

Full `author`, ISO `datePublished`, structured `image`

Top Stories eligibility

Custom page

Nothing

Whatever the page needs

Depends on content

### Why are they missing?

Schema.org has hundreds of types. Shopify can’t presume what you want to mark up: it doesn’t know if your product page has a real FAQ, if your reviews come from verified customers, or if your blog is editorial journalism. Loading schema that doesn’t match the content is worse than not loading any. According to the official documentation, Google can apply a [manual action for structured data spam](https://developers.google.com/search/docs/monitor-debug/manual-actions).

That’s why the sane approach is: you decide what to mark up based on real content. If you don’t have a genuine FAQ on the page, don’t add `FAQPage`. If you don’t have reviews collected by a verified app, don’t invent `AggregateRating`.

A detail that almost never shows up in tutorials: since 2023, Google has drastically restricted `FAQPage` rich result eligibility to “official or government authority” sites for most queries, per the [Google policy update](https://developers.google.com/search/blog/2023/08/howto-faq-changes). Marking up your FAQ is still useful for AI Overviews and for ChatGPT Search, but expecting the classic expandable panel on the SERP is no longer realistic for most stores.

---

## How do you add JSON-LD to custom pages with theme snippets?

The sane pattern is to create a Liquid snippet, render it only where it applies, and pass variables from the template. According to the [Shopify Liquid documentation](https://shopify.dev/docs/api/liquid/tags/render), `render` isolates variables and avoids conflicts, unlike the deprecated `include`. That gives you maintainable schema and doesn’t inject dead code on pages where it doesn’t belong.

### Step 1: create the snippet

In the theme code editor, create `snippets/schema-faq.liquid`:

```
{%- comment -%} snippets/schema-faq.liquid {%- endcomment -%}
{%- if faq_items and faq_items.size > 0 -%}
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {%- for item in faq_items -%}
    {
      "@type": "Question",
      "name": {{ item.question | json }},
      "acceptedAnswer": {
        "@type": "Answer",
        "text": {{ item.answer | json }}
      }
    }{%- unless forloop.last -%},{%- endunless -%}
    {%- endfor -%}
  ]
}
</script>
{%- endif -%}
```

Liquid’s `| json` filter escapes quotes, line breaks and unicode characters automatically. Skip that filter and drop in raw text, and your JSON will break the moment an answer contains an apostrophe.

### Step 2: call the snippet from the template

In `templates/page.faq.json` or in a section block:

```
{% assign faq_items = section.blocks | where: "type", "faq_item" %}
{% render 'schema-faq', faq_items: faq_items %}
```

If your page uses metafields, pass `faq_items: product.metafields.custom.faq.value`. If it uses a theme block, assign the array from `section.blocks`.

### Step 3: validate

Before publishing the theme, paste the page URL into the [Rich Results Test](https://search.google.com/test/rich-results). If it flags a syntax error, it’s almost always an unescaped quote, a trailing comma or an empty required field.

The mistake that keeps showing up in audits is dropping JSON-LD into the global `<head>` block of `theme.liquid`. The result: every page on the site announces the same FAQ, including checkout, cart and 404. Google penalizes the inconsistency. Render the snippet only where it belongs.

> **Citable capsule:** To add custom JSON-LD in Shopify, the recommended pattern is to create a Liquid snippet with the `| json` filter to escape values, render it with `{% render %}` only on templates where it applies, and validate with Google’s Rich Results Test. Source: Shopify.dev, 2025.

---

## When does FAQPage make sense on product pages?

It makes sense when the FAQ visibly exists on the page, answers real customer questions and doesn’t overlap with the description. According to [Google’s structured data policy](https://developers.google.com/search/docs/appearance/structured-data/faqpage), all content marked up as `FAQPage` has to be visible to the user and can’t be promotional or contradict the page.

### When yes, when no

-   Yes: a block with 4-6 real questions about sizing, materials, shipping, returns
-   Yes: questions that resolve pre-purchase doubts and cut down on support tickets
-   No: an invisible FAQ, buried just for the schema
-   No: questions copied from the shipping page
-   No: promotional content dressed up as FAQ (“Why are we the best brand?”)

Even though the classic rich result has been restricted since 2023, marking up the FAQ still delivers two measurable benefits: it improves page comprehension for AI systems that summarize products (AI Overviews, ChatGPT Search, Perplexity), and it raises the chance of being cited as a source in those answers.

### Minimum working code

Reusing the snippet from the previous section, the output on a product page looks like this:

```
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What's the right size?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The t-shirt has a regular cut. If you're between two sizes, pick the larger one for a relaxed fit."
      }
    },
    {
      "@type": "Question",
      "name": "How long will the order take?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Domestic shipping in 24-48 business hours. International in 3-7 days."
      }
    }
  ]
}
```

---

## Product + AggregateRating: when can you use it safely?

Only when the reviews are collected by a verifiable system and displayed visibly on the page. Google explicitly requires, in its [review snippet guidelines](https://developers.google.com/search/docs/appearance/structured-data/review-snippet), that reviews come from real customers, live at the URL that’s marked up, and aren’t self-submitted by the business.

### Which apps actually comply

The Shopify review apps (Judge.me, Loox, Yotpo, Okendo, Shopify Product Reviews) all emit their own JSON-LD with `AggregateRating` when you install them with the review block on the product page. You don’t need to touch any code. What you do need to check is that there’s no duplication with Dawn’s native schema.

### The double schema problem

I see this constantly: the theme emits `Product` with a price. The review app emits another `Product` block with `AggregateRating`, repeating name, image and offer. Google detects two `Product` blocks on the same URL and can ignore both. The standard fix is to merge them into a single block.

Code that merges both in the theme snippet (requires the app to expose the data as a metafield or Liquid variable):

```
{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "Camiseta básica algodón orgánico",
  "sku": "CAM-BAS-001",
  "brand": {"@type": "Brand", "name": "Tu Marca"},
  "offers": {
    "@type": "Offer",
    "price": "29.90",
    "priceCurrency": "EUR",
    "availability": "https://schema.org/InStock"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "128"
  }
}
```

For it to work without duplicates, turn off schema emission in the app (most have a toggle in settings) and have the theme read the aggregated data from the app via metafield or API.

Schema markup coverage map in Shopify Dawn by template type. Source: inventory based on Shopify.dev and Dawn code review, 2025.

---

## How do you validate your schema before publishing?

With two complementary tools: the [Google Rich Results Test](https://search.google.com/test/rich-results) and the [Schema.org Markup Validator](https://validator.schema.org). They do different jobs. According to the [Google Search Central documentation](https://developers.google.com/search/docs/appearance/structured-data), the first checks whether your page is eligible for visual features on the SERP; the second checks Schema.org syntax independently of whether Google uses it.

### Two-step validation workflow

First, paste the URL (or the code if it’s still on staging) into Rich Results Test. It tells you which rich result you’re eligible for and which errors block that eligibility. Typical errors: missing `priceCurrency`, `image` in relative format instead of absolute, `availability` with an invalid string.

Second, if the page passes Rich Results but your schema is broader (it includes types Google doesn’t use but other agents do, like `Product` with `material`, extended `color`, `weight`), validate it in Schema Markup Validator. It tells you if your JSON is syntactically valid and if the types exist in the vocabulary.

### What to do after publishing

After 2-3 days, check [Google Search Console](https://search.google.com/search-console) in the “Enhancements” section. It shows detected types, URLs per status and specific errors. If a URL comes back as “Valid with warnings”, fix the warnings: they don’t block, but they limit performance.

A cosmetics client came to me with 400 products and AggregateRating on every one. After running Rich Results Test URL by URL during the audit, we discovered the review app was emitting `reviewCount: 0` on products with no reviews, and Google was ignoring all the schema because of that empty field. We filtered the emission so it only appeared on products with at least 3 reviews. The rich result showed up on the SERP in under two weeks.

---

## Schema apps or your own code? What changes on the invoice

It depends on the volume, the catalog complexity and how long the theme will stay in use. According to the [official Shopify marketplace](https://apps.shopify.com/search?q=schema), there are dozens of schema markup apps, with monthly prices ranging from free to $30-50 a month. A custom snippet written by a certified Shopify developer usually runs $300-800 at most European agencies, based on published rate cards.

### App advantages

-   Zero code for the merchant
-   Automatic updates when Google’s rules change
-   Plug-and-play integration with reviews, FAQ, variants
-   Support included

### Custom code advantages

-   One-off cost, not recurring
-   Full control over the output
-   No risk that the app injects JS and slows the page
-   No dependency on the app still being around in 3 years

### When to pick each option

-   Small catalog (under 50 products) and a theme you’re not changing soon: custom code
-   Large catalog, active reviews, little technical time: review app with built-in schema
-   Site with an in-house developer: custom code almost always wins
-   Store with no technical resources: an app, even a free one like JSON-LD for SEO

The healthiest hybrid I see working: an app only for reviews (which they handle well because they also manage the UI), and custom code in `snippets/schema-*.liquid` for FAQ, BreadcrumbList and Article. That way you don’t pay recurring fees for things that don’t need them.

> **Citable capsule:** The comparative cost of implementing schema in Shopify ranges from monthly apps at $0-50 to custom development at $300-800 paid once, based on published rate cards. The recommended hybrid is an app for reviews and your own Liquid snippets for FAQ and BreadcrumbList. Source: Shopify App Store, 2025.

---

## Frequently asked questions

### Does Shopify generate schema markup automatically on every theme?

It does on Dawn and on most OS 2.0 themes in the official theme store, but not on every custom theme or legacy theme. The guaranteed block is `Product` on product pages and `Organization` on the home page if you’ve uploaded a logo. Everything else depends on the theme. Check your `product.json.liquid` or run a product URL through the Rich Results Test before you assume coverage.

### Can I add schema without touching the theme code?

Yes, with a schema markup app from the Shopify App Store. Apps like JSON-LD for SEO, Smart SEO or Schema Plus add FAQ, BreadcrumbList, Article and AggregateRating without editing Liquid. The risk is duplication with the native schema and with review apps, which can cancel out the effect. If you use an app, turn off the types your theme already emits to avoid conflicts.

### Why aren’t my stars showing up in Google even though my schema is valid?

Having valid schema is necessary, not sufficient. According to [Google Search Central](https://developers.google.com/search/docs/appearance/structured-data/review-snippet), Google grants the stars rich result only when it decides the URL has enough reputation and the reviews come from a verifiable system. For new stores or stores with few reviews, it can take weeks or months before the stars show up, even with perfect schema.

### Does schema markup help with ChatGPT, Perplexity and AI Overviews?

Yes, more than it used to help with traditional Google. Generative AI systems extract structured data to cite products, prices and answers. Marking up your content with `Product`, `FAQPage` and `Article` increases the odds those systems cite you as a source. It’s the main reason to keep investing in FAQ schema even though the classic rich result has been restricted since the [2023 update](https://developers.google.com/search/blog/2023/08/howto-faq-changes).

### How do I avoid duplicating schema between theme and apps?

Run an inventory: open View Source on a product page, search for `application/ld+json` and count the blocks. If there’s more than one with `@type: Product`, you have duplication. The fix is to turn off emission in the app (app settings) or in the theme (comment out the snippet), leaving just one source. Never both. The Rich Results Test flags duplication explicitly.

---

## Schema only matters if the page backs it up

Schema markup is one of the few [technical SEO](https://lionelz.com/en/seo-audit/) elements where the ratio of effort to visible impact is high and direct. It won’t lift your rankings, but when you do rank, it expands the real estate your snippet occupies. On a Shopify store, that difference shows up fast: stars, visible price, availability, FAQ, breadcrumbs. Each of those elements cuts click friction.

What doesn’t change is the underlying principle: Google rewards schema that matches real content. Marking up what doesn’t exist on the page is asking for a penalty. What works is inventorying what Dawn gives you for free, identifying the gaps in your specific case, and closing them with your own snippets or a well-configured app. No duplicates. Validated before publishing. Reviewed in Search Console afterward.

If your store is at the point where you know there’s schema but you don’t know if it’s complete or if your apps are breaking it, a technical audit saves you weeks of trial and error. [Book 30 minutes with no commitment](https://calendar.app.google/G3jeffmFY52dg38GA) and I’ll tell you what your Shopify has today and what’s missing. 30-min session · No commitment.

Free audit

Room to improve your account?

30 minutes to review together. No commitment.

[Book a call →](https://calendar.app.google/G3jeffmFY52dg38GA)

No commitment · 30 min · Google Meet

Share

[LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https://lionelz.com/en/blog/schema-markup-shopify/) [X / Twitter](https://twitter.com/intent/tweet?url=https://lionelz.com/en/blog/schema-markup-shopify/&text=Schema%20Markup%20for%20Shopify)

Related service

**SEO Audit**

Technical, content and on-page review with clear priorities.

[See service →](https://lionelz.com/en/seo-audit/)

## Related articles

[

![](https://lionelz.com/images/blog/2026/09/claude-auditar-competidores-seo-mobile-hero.webp)

SEO

### Audit competitor SEO with Claude: the working method

September 2026

](https://lionelz.com/en/blog/claude-auditar-competidores-seo/)[

![](https://lionelz.com/images/blog/2026/09/shopify-site-speed-auditoria-mobile-hero.webp)

SEO

### Shopify site speed: a real audit, and real fixes

September 2026

](https://lionelz.com/en/blog/shopify-site-speed-auditoria/)[

![](https://lionelz.com/images/blog/2026/09/shopify-black-friday-seo-checklist-mobile-hero.webp)

SEO

### Shopify Black Friday SEO: technical checklist 2026

September 2026

](https://lionelz.com/en/blog/shopify-black-friday-seo-checklist/)

![Lionel Fenestraz — Freelance Google Ads & Meta Ads Consultant](https://lionelz.com/images/lionelfenestraz.webp)

Lionel Fenestraz

Freelance PPC & CRO Consultant · Google Partner · CXL Certified · Google Ads Search Certified

7+ years managing Google Ads and Meta Ads for vacation rental, B2B and ecommerce. Trilingual ES/EN/FR.

[LinkedIn](https://www.linkedin.com/in/lionelfenestraz/) [About](https://lionelz.com/en/about/) [Google Ads Cert ↗](https://skillshop.credential.net/20a1e11a-8586-42e3-a5ae-ac63b6074518) [Book a call →](https://calendar.app.google/G3jeffmFY52dg38GA)

Trusted by

-    OVO Network logo, client 
-    Sun Chemical logo, client 
-    Brildor logo, client 
-    Powergym logo, client 
-    USU logo, client 
-    Luman Technology logo, client 
-    Suites and Villas logo, client 
-    Chef Tours logo, client 
-    Trasteando logo, client 
-    C-System logo, client 
-    ConfiVet logo, client 
-    Luxury Homes London logo, client 

Free first call

## Could your ad campaigns  
_perform better?_

30 minutes to review your situation and tell you exactly what I would change. No pitch, no sales proposal.

[Book a call →](https://calendar.app.google/G3jeffmFY52dg38GA) 30 min · Google Meet · No commitment

---

> Markdown version of https://lionelz.com/en/blog/schema-markup-shopify/ (same content as the HTML page). Site index for agents: https://lionelz.com/llms.txt · full content: https://lionelz.com/llms-full.txt · sitemap: https://lionelz.com/sitemap-index.xml
