Google Shopping Feed for Shopify: Setup, Sync and Common Mistakes
How to set up a Google Shopping product feed from Shopify, keep it in sync with Merchant Center, and avoid the errors that get products disapproved.
Published 2 May 2026 · 7 min read
Google Shopping puts your products in front of people who are actively searching to buy. Not browsing — buying. The intent is high, the competition is visible, and the cost is pay-per-click. Setting it up takes effort, but the ongoing return makes it worth it. The tricky part is not the initial configuration. It is keeping the feed correct once it is live.
What Google Merchant Center actually needs
Google Merchant Center is the intermediary between your Shopify store and your Shopping ads. You submit a product feed — an XML or structured data file — and Merchant Center reads it, validates it, and makes approved products available for campaigns.
The required fields are: id, title, description, link, image_link, price, availability, brand, gtin, and condition. Miss any of these and products get disapproved.
Several optional fields are important enough to treat as required: sale_price and sale_price_effective_date for promotional pricing, shipping for markets where Google expects it (most of Europe), and product_type for your own campaign organisation.
The field that causes the most confusion is gtin — the barcode. Google uses GTIN to match your product listing against its own product catalogue. When there is a match, your listing inherits rich content: reviews, standardised descriptions, and better placement. Products without a valid GTIN are not disqualified, but they compete at a disadvantage. If your suppliers provide GTINs, include them. All of them.
The most common feed errors that kill performance
Missing or incorrect GTIN. A wrong GTIN is worse than no GTIN. If you submit a barcode that does not match any product in Google's catalogue, Merchant Center flags it. Clean your GTIN data before you submit.
Price mismatch. The price in your feed must match the price on the landing page at all times. If a customer clicks through from Shopping and sees a different price on your site, Merchant Center disapproves the product. This is one of the most common reasons accounts get flagged. The fix is automated sync — your feed updates whenever your Shopify prices change.
Missing sale_price. When you mark a product on sale in Shopify, you set an original price and a reduced price. If your feed only outputs the current price — the sale price — without also outputting the original as price and the reduced as sale_price, Shopping shows no strikethrough, no sale indicator, and no urgency. You are leaving conversion rate on the table.
Stale availability. Products go out of stock. If your feed still lists them as in_stock, Merchant Center will show them in Shopping, customers will click through and find nothing available, and you will pay for those clicks. Availability needs to reflect your Shopify inventory in near real time.
How often should your feed update?
Google recommends refreshing your feed at least once per day. For stores with frequent price changes — promotions, repricing, supplier updates — daily is not enough.
The problem with manual feed exports is that they are always out of date by the time they are submitted. You export on Monday morning, prices change Monday afternoon, and Merchant Center is running Monday's data until Tuesday. If you are running a weekend sale, that mismatch compounds.
Automated sync means your feed reflects your live Shopify store within a few hours, not days. Google allows up to four scheduled fetches per day via Merchant Center. Most stores benefit from fetching every six hours.
Sale price support: why it matters more than you think
Shopping ads display the sale price with a strikethrough of the original price. A product that was £89 now showing at £59 with a visible markdown is a meaningfully different ad unit than a product just showing £59. Click-through rates on sale items with visible strikethroughs are consistently higher than the same item displayed at its regular price.
This only works if your feed correctly outputs both price (the original) and sale_price (the reduced amount). You should also include sale_price_effective_date to bracket the promotion. Google uses this to end the sale indicator automatically once the campaign is over.
Most Shopify stores with manually managed feeds miss the sale_price field entirely. Customers see the full price in Shopping, even when you have a live promotion running on site.
Competitive filtering: don't advertise products you cannot win on
Google Shopping is pay-per-click. You pay every time someone clicks, regardless of whether they buy. If your product is the third cheapest option on a comparison page and no one clicks it, you are accumulating impressions that cost you nothing — but the moment someone does click from a low-quality position, you are paying for traffic that was never going to convert.
The practical answer is to filter your feed to include only products where you are price-competitive. If you are within a few percent of the lowest price, you are in the game. If you are 20% above the market without a clear reason — better warranty, faster delivery, exclusive stock — you are paying for visibility that does not pay back.
Competitive filtering requires knowing where your prices sit relative to the market in real time. That means combining your feed with live competitive pricing data, so the feed only exports products worth advertising.
Keeping a Google Shopping feed accurate, complete, and competitive is not a one-time task. It is an ongoing operational discipline. The stores that get the most from Shopping are the ones that treat their feed as a live data source, not a periodic export.
If you want a product feed that stays in sync automatically — with full sale price support, stock accuracy, and competitive filtering built in — see how ATHOMIC Product Feeds handle it.