Skip to content
MySolute
Menu

Turn a Shopify or WooCommerce export into a valid Google Shopping feed

A shop export is not a feed: it has one row per variant, no product URL for WooCommerce or Shopify without your store address, and no currency. The Feed Validator maps the export columns to Google’s attributes and shows what is missing. In the example Shopify export, 3 products are read, 2 rows are skipped (an image row and a draft) and the product link is not in the file.

Upload your export, choose the shop type and the currency – the validator shows what is missing for Google.

Open the Feed Validator

What an export has – and what it does not

Shopify (Products → Export) and WooCommerce (Products → Export) write one CSV row per variant. Shopify puts product fields only on the first row of a product and adds rows that only hold an extra image. WooCommerce has a “variable” parent row and “variation” rows that point to it.

Neither export contains what Google needs as a product URL for every row: Shopify can only build it from the product handle and your store address, WooCommerce has no URL at all. Prices come without a currency. Stock is missing in Shopify exports that have no inventory quantity.

Shopify: which column becomes which attribute

The validator reads Shopify’s current column names and the older ones. Draft and archived products and rows without a price are skipped.

Shopify export columnGoogle attribute
Titletitle
Description (legacy: Body (HTML))description
Vendorbrand
SKU (legacy: Variant SKU)id
Barcodes (legacy: Variant Barcode)gtin
Price, Compare-at priceprice / sale_price
Product image URL (variant image first)image_link
Inventory tracker, Inventory quantityavailability
URL handle + your store URLlink
Option name Color / Size / Material / Patterncolor / size / material / pattern

WooCommerce: which column becomes which attribute

Variable parents and grouped products are skipped, variations are read as products and inherit title, description, image and brand from their parent where their own cell is empty. Unpublished products are skipped.

WooCommerce export columnGoogle attribute
Nametitle
Description (or Short description)description
Brandsbrand
SKU (otherwise the ID)id
Column with GTIN, EAN, UPC or ISBN in its namegtin
Regular price, Sale priceprice / sale_price
Images (first one)image_link
In stock?availability
Parentitem_group_id
Attribute name Color / Size / Material / Patterncolor / size / material / pattern

What you still have to add

Check these before you upload; the validator lists each of them once per file instead of once per row:

  • Product URL (link): enter your store address for Shopify; for WooCommerce add the URLs yourself or let a feed plugin write them.
  • Currency: exports contain prices without a currency, so choose the currency in the validator.
  • GTIN: add the barcode where a product has one; products without one need the identifier setting described in the GTIN guide.
  • Availability: without an inventory quantity in a Shopify export it cannot be derived.
  • Google product category, gender and age group for fashion: Shopify has columns for them, fill them in the Google Shopping fields.

Worked examples: Two small example exports through the validator

Made-up exports: a Shopify file with two variants of one shirt, an image-only row, a draft bag and socks without SKU; a WooCommerce file with a variable tee (two variations), a mug and an unpublished lamp. Example data, not a real shop.

Shopify: products read
3
Shopify: rows skipped (image row, draft)
2
Shopify: IDs generated (no SKU)
1
Shopify: rejected products without store URL
0
WooCommerce: products read / rows skipped
3 / 2

Check the export in the validator before you upload it: it tells you what the export cannot contain, so you fix a few columns instead of hundreds of rows.

Common mistakes and how to fix them

Uploading the raw export as the feed

Why it matters: Variants, image-only rows, drafts and missing URLs lead to disapproved or missing products.

Fix: Convert it with the validator’s mapping and fix the reported columns first.

Leaving out the currency

Why it matters: Prices without a currency are rejected or misread.

Fix: Choose the currency when you check the file.

Giving variants the same ID or no group

Why it matters: Duplicate IDs are errors and variants without a shared group are not shown as variants.

Fix: Use the SKU as ID and the product handle (Shopify) or parent (WooCommerce) as group.

Frequently asked questions

Can I upload a Shopify export to Google Merchant Center?

Not as it is. It needs product URLs, a currency on prices and the right attribute names. The Feed Validator maps the export and shows what is missing.

Why does the validator skip some rows?

Image-only rows, draft or archived products, variable parents and unpublished products are not products you sell, so they are not read.

Where do I get the product URL for WooCommerce?

It is not in the export. Add it from your shop, for example with a feed plugin, or build it from your permalinks.

Does the validator change my file?

It runs in your browser and does not send your file to a server. It shows what to fix and can fix a few things such as all-caps titles and price formats.

Check your whole shop in 2 minutes – free

One product, a few numbers, no sign-up: see what really stays per order and what to do next.

Start the free shop check

Sources

Fees, rates and rules change. We check the official sources listed here regularly – the date shows our last check.