- Shopify admin access with staff permissions to install apps
- A Google account to own the Merchant Center account
- Your live store domain, with a working checkout
- Barcodes (GTIN) for branded products, or your brand and MPN data
- Shipping rates and a return policy you can publish
Introduction:
Most Shopify stores that want Google traffic only think about paid Shopping ads. Free listings are the cheaper route: products can appear in Google's Shopping tab and Google Images with no ad spend. The catch is that Merchant Center is strict. A missing barcode, a price that does not match your product page, or a missing return policy can keep every product from showing.
This guide walks you through the setup in the order that avoids most rejections: connect the store, prepare product data, set shipping and returns, meet policy requirements, then fix diagnostics before you expect any traffic.
In short
Connect the Google & YouTube app + Verify your website + Valid GTINs + Matching prices and stock + Shipping and returns policies + Clean diagnostics = Free listings that get approved and stay live
What You'll Achieve With This Setup
After following these steps, your store will:
Appear in the Shopping tab for free
Reach shoppers actively searching products
Get a clean feed ready for paid Shopping later
Stop manual feed uploads
Before You Start: Requirements Checklist
Requirements
Have these ready first
1Create and verify your Merchant Center account
- Go to merchants.google.com and sign in with the Google account you want to own the store.
- Enter your business name, country, and time zone. Use the legal or trading name that matches your policy pages.
- Add your website URL and claim it. The simplest method is the Google Analytics or Google Tag Manager option if you already use them on the same domain.
- Turn on Automatic item updates later, once the feed is connected. This keeps prices and stock in sync.
2Connect Shopify with the Google & YouTube app
Shopify's Google & YouTube app builds and syncs your product feed. Use it instead of manual CSV uploads, which go stale quickly.
- In Shopify admin, install the Google & YouTube app from the sales channels section.
- Sign in with the same Google account that owns Merchant Center, then select your Merchant Center account.
- Turn on the free listings option in the app's settings. Free listings do not require a Google Ads account.
- Choose the products or collections to sync. Start with your best-selling products and expand after they are approved.
3Fix product data before the first sync
Google approves products based on the feed attributes below. Check these in Shopify first, because the feed copies whatever is stored there.
| Attribute | Where it comes from in Shopify | Rule that avoids rejection |
|---|---|---|
gtin | Variant barcode field | Use valid UPC, EAN, or ISBN. Do not paste SKUs here. |
brand | Product vendor | Real brand name, not your store name, unless you own the brand |
mpn | Variant SKU | Use it when the manufacturer part number is known |
title | Product title | Include brand, product type, and key attribute such as color or size |
price | Variant price | Must match the product page exactly, with the same currency |
availability | Inventory | Out-of-stock items should show as out of stock, not in stock |
image_link | Product image | Plain background, no logos or text overlays, at least 800 x 800 px |
google_product_category | Product category | Use Google's taxonomy, not a generic label |
4Set shipping, tax, and returns in Merchant Center
- In Merchant Center, go to Shipping and returns and add shipping services for each country you sell to.
- Match shipping prices to your Shopify shipping rates. A mismatch is a common cause of disapproval.
- Set your return policy: the return window, the process, and who pays return shipping.
- Add tax settings for the countries where tax is shown in the price.
5Publish the policy pages Google checks
Google reviews your store before approving free listings. Publish these pages on the same domain and link them in the footer:
- Refund and return policy, with the return window and steps
- Shipping policy, with delivery times and costs
- Privacy policy and Terms of service
- Contact page with a business email, phone, and physical address
- About page that clearly identifies the business
In Shopify, add the first four under Settings, then Policies, so they stay in sync with checkout.
6Add product structured data (recommended)
Shopify themes already output some product data, but adding the GTIN and brand to Product schema helps Google match your pages to the feed. Place this in your product template, after the existing product markup, and check that the barcode is a valid GTIN.
{%- comment -%} Product schema with GTIN and brand {%- endcomment -%}
{%- if product -%}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": {{ product.title | json }},
"image": {{ product.featured_image | image_url: width: 1200 | json }},
"description": {{ product.description | strip_html | truncate: 300 | json }},
"sku": {{ product.selected_or_first_available_variant.sku | json }},
{%- if product.selected_or_first_available_variant.barcode != blank -%}
"gtin": {{ product.selected_or_first_available_variant.barcode | json }},
{%- endif -%}
"brand": {
"@type": "Brand",
"name": {{ product.vendor | json }}
},
"offers": {
"@type": "Offer",
"url": {{ shop.url | append: product.url | json }},
"priceCurrency": {{ cart.currency.iso_code | json }},
"price": {{ product.selected_or_first_available_variant.price | divided_by: 100.0 | json }},
"availability": {%- if product.selected_or_first_available_variant.available -%}"https://schema.org/InStock"{%- else -%}"https://schema.org/OutOfStock"{%- endif -%}
}
}
</script>
{%- endif -%}Edge cases: products with variants that have different barcodes should use the selected variant. Test one product with the Rich Results Test before rolling out to the whole catalog, and do not add a GTIN that fails validation.
7Check diagnostics and fix disapprovals
- In Merchant Center, go to Products, then Diagnostics.
- Sort by the number of affected products. Fix the issue that touches the most items first.
- After each fix, wait for the next scheduled sync, or trigger a manual sync from the Google & YouTube app.
- Review Errors first. Warnings do not block listings, but they can reduce ranking.
8Verify free listings are live
- Search for one of your products by exact name in Google, then open the Shopping tab.
- In Merchant Center, check Free listings under Growth, then Manage programs, for the status by country.
- Link your Merchant Center account to Google Search Console so you can see the impact on search traffic.
Common Mistakes to Avoid
- Using SKUs in the GTIN field
- Prices that differ from the product page
- Two feeds running for the same products
- Missing or unclear return policy
- Product images with text or promo banners
- Syncing out-of-stock items as in stock
Troubleshooting: Symptom, Cause, Fix
| Symptom | Likely cause | Fix |
|---|---|---|
| "Missing GTIN" disapproval | Barcode empty or invalid | Add valid barcodes, or set identifier_exists to false with brand and MPN |
| "Price mismatch" disapproval | Feed price differs from the page | Sync again after the price change, and check currency and Markets settings |
| "Missing shipping" or "missing returns" | No shipping service or policy in Merchant Center | Add shipping services per country and publish the return policy |
| Products approved but never show | Free listings not enabled, or store not eligible in that country | Enable free listings and check country eligibility in Merchant Center |
| Two products merged into one listing | Shared barcode or wrong item group | Give each product its own GTIN and check variant grouping |
Pro Tips
Get more from free listings
- Write titles as "Brand + product type + key attribute" for better matching
- Use bundles and variants with clear color or size in the title
- Check diagnostics weekly, especially after adding new products
- Add high-margin products first, then expand the feed
- Keep product pages fast so shoppers do not leave after the click