# SEO and structured data

> How search engines see a Smootify store. Covers the text and SEO settings that come from the CMS, the product structured data Smootify adds to product pages, alt texts, and Google Shopping.

Status: Ready (Smootify 2.0)  
URL: https://www.smootify.io/docs/start/seo  
Updated: 2026-10-01

A Smootify store is a Webflow site, so search engines index it as they index any Webflow site: its pages, titles, URLs and sitemap are Webflow’s. Smootify adds the live data from Shopify and, on product pages, the product’s structured data for Google. This page says what comes from the CMS, what Smootify adds, and what you set yourself.

## Let the CMS give each page its text

Your product, collection and vendor pages are CMS template pages. Webflow publishes them with the text of their CMS items, so that text is in the page before Smootify loads.

- **Bind the visible text.** Bind the product’s title to the **Name** field and its description to the **Description** field, even on elements that Smootify also fills. Smootify then writes the live values from Shopify over them. See [Build the product page](https://www.smootify.io/docs/build/product-page).
- **Bind the SEO settings.** In the template page’s settings, bind the title tag and the meta description to the **SEO Title** and **SEO Description** fields. The CMS sync fills them from the SEO fields in Shopify, or from the title and the description when those are empty. See [CMS collections and sync](https://www.smootify.io/docs/start/cms).
- **Keep the URLs stable.** A page’s slug is the Shopify handle. If you change a handle in Shopify, the page’s URL changes after the next sync: add a 301 redirect from the old URL in Webflow’s site settings.

Webflow’s sitemap lists the CMS pages with the other pages of the site.

## Product structured data

On a product page, Smootify adds the product’s structured data (JSON-LD) to the page, so that Google can show the product as a rich result. There is nothing to add or set.

It holds, from Shopify:

- the name, the description, the images and the brand (the vendor);
- for each variant: the SKU, the barcode when it is a valid GTIN, the price and currency of the visitor’s market, whether it is in stock, on backorder or sold out, and its link with `?variant=`;
- the options Google knows, when the product’s options are named Color, Size, Material or Pattern, in English, Italian, French, German or Spanish (every name is below);
- the rating, when the page shows it (see below).

The option names Smootify recognises, in any capitals:

| Google option | Names |
|---|---|
| Color | Color, Colour (English), Colore (Italian), Couleur (French), Farbe (German), Color (Spanish) |
| Size | Size (English), Taglia, Misura (Italian), Taille (French), Größe, Grösse (German), Talla, Tamaño (Spanish) |
| Material | Material (English), Materiale (Italian), Matériau, Matière (French), Material (German), Material (Spanish) |
| Pattern | Pattern (English), Fantasia (Italian), Motif (French), Muster (German), Estampado (Spanish) |

A product with one variant is described as one product. A product with several variants is described as a group, with one entry per variant. When the visitor changes market, the prices and the currency follow.

**Which pages.** Smootify adds it only on product pages: the page’s URL is under your products folder (`products`, or the value of `productsBase`), and its last part is the Shopify handle. There is none on collection pages, on the home page or on the cart.

**The rating.** Google recommends showing the rating on the page that carries it. If a review app writes Shopify’s own review metafields, `reviews.rating` and `reviews.rating_count`, show both inside `smootify-product`: Smootify then adds the rating to the structured data.

```html
<smootify-product data-id="{Shopify ID}">
  <div metafield="rating" namespace="reviews">4.5</div>
  <div metafield="rating_count" namespace="reviews">12</div>
</smootify-product>
```

Both need `namespace="reviews"`: without it, Smootify reads the `custom` namespace. Stars and review widgets: see [Product reviews](https://www.smootify.io/docs/features/reviews).

**Your own structured data wins.** If the page already has Product structured data, from an SEO app or from custom code in the template, Smootify leaves it alone and adds nothing. To use Smootify’s instead, remove yours.

**Turn it off.** Set `structuredData` to `false` in Smootify’s options, in the site’s head code before the loader:

```html
<script>
  window.SmootifyUserOptions = {
    structuredData: false,
  };
</script>
```

If you already have an options script, add the line to it: use only one. See [Install Smootify 2.0](https://www.smootify.io/docs/start/install).

**Check it.** Smootify adds the structured data after the page loads, so the page source does not show it. Test the page with Google’s Rich Results Test, or with the URL inspection in Search Console. Google decides whether a rich result shows.

## Google Shopping

For Google Shopping, Google reads product markup that is added by scripts less often. The product feed of Shopify’s Google & YouTube app stays the reference there.

## Images and alt text

On the images it fills, Smootify writes the alt text of the image in Shopify. When the Shopify image has no alt text, the image keeps the one you set in Webflow. Write alt texts in Shopify, on the product’s media.

The structured data also takes its images from the product’s media in Shopify, not from images in the CMS. A product without media in Shopify has no image there.

If you group gallery images by alt text, the variant tag is part of the public alt text: see [Product gallery and media](https://www.smootify.io/docs/build/product-gallery).

## The Shopify storefront

Shopify’s own storefront, the Online Store, can still show your products on the `.myshopify.com` address. If you do not use it, send its visitors to your Webflow site: see [Domains and checkout](https://www.smootify.io/docs/start/domains).

## Where people get stuck

> [!STUCK]
> - **The structured data is not in the page source.** Smootify adds it after the page loads. Check with the Rich Results Test or the URL inspection in Search Console.
> - **A product page has no structured data.** Its URL is not under the products folder set in `productsBase`, its slug differs from the Shopify handle, or `structuredData` is `false`.
> - **Smootify's structured data never appears.** The page already has Product markup, often old custom code in the template or an SEO app. Remove it.
> - **No rating in the structured data.** Both metafields must be on the page, with `namespace="reviews"`, and the count must be above zero.
> - **No image in the structured data.** The product has no media in Shopify. Images in the CMS are not used.
> - **No GTIN.** The barcode in Shopify is not a valid GTIN, such as an internal code: it is left out.
> - **The product is missing from Google Shopping.** Shopping relies on the product feed of the Google & YouTube app.
