Search

Google Shopping feed setup: requirements, refresh and fixes

Google Shopping feed setup: the attributes Merchant Center needs, how often to refresh price and stock, a seven-step build and fixes for disapprovals.

By , Founder
Published 11 min read

Feeding Google Shopping means sending Google Merchant Center a product feed: one row per sellable variant, with the id, price, availability and other attributes Google matches against searches.

The costly errors aren’t the syntax ones Merchant Center flags for free; they are stale prices and stock. With a once-a-day fetch, a changed price stays wrong in Google for 12 hours on average: half the refresh interval, for changes made at random times.

Which attributes does a Google Shopping feed need?

A Google Shopping feed needs at least an id, title, description, link, image_link, price and availability for every product, plus brand and gtin for most branded goods.

A feed is a table: each row is one sellable variant, each column an attribute with its own rule. Fill a cell wrong and the row either fails approval or matches searches it shouldn’t.

For how the feed fits between your shop, Merchant Center and Google Ads, see how a Google product feed works.

Attribute Requirement Rule or limit Example value
id Required Stable and unique, maximum 50 characters ACME-TR-BLK-10
title Required Up to 150 characters; lead with brand, product type and key attribute Acme Trail Runner Men’s Black Size 10
description Required Plain text, up to 5,000 characters Waterproof trail runner with a 6 mm lug sole
link Required The exact landing page for this variant Product page URL
image_link Required Public https URL; at least 500 × 500 px, enforced from 31 January 2027 Product image URL
price Required Number with currency code, tax included where the country requires it 89.00 EUR
availability Required in_stock, out_of_stock, preorder or backorder in_stock
brand Required for most new products The brand name as sold, up to 70 characters Acme
gtin Required when assigned 8, 12, 13 or 14 digits with a valid check digit 12-digit UPC
item_group_id Required for variants in many countries One shared value across every size and colour ACME-TRAILRUN
google_product_category Optional A category from Google’s product taxonomy Apparel & Accessories > Shoes

The limits come from Google’s product data specification, which also lists the extra attributes for apparel, such as size, colour, gender and age group. Books, films and music are the exceptions to the brand requirement.

Which attributes cause the most disapprovals?

Brand and GTIN gaps block approvals on branded goods faster than any other attribute, so audit those first. A product that has no manufacturer GTIN is declared with identifier_exists set to no; where a GTIN does exist, sourcing it from the manufacturer is the better fix.

The id causes the quietest damage. Keep it identical across every export: regenerate it and Google reads a brand-new item, splits the product’s history and can serve the same product twice under two ids.

Before the first upload, export your products, count the blanks in each column of the table and fix the biggest count first. On branded goods, brand and GTIN blanks usually outnumber everything else combined.

What makes a title and category match the right searches?

Titles do the matching. Lead with brand, product type and the attribute shoppers type, so “Acme Trail Runner Men’s Black Size 10” beats a line about grip; the field takes 150 characters, but an ad shows far fewer. Google Shopping title optimisation has the patterns per product type.

The google_product_category decides which comparison set a product competes in. When the categories have drifted, fix misclassified products in your feed before you scale spend behind them.

How should the feed reach Merchant Center, and how often?

A scheduled fetch suits most shops, and the Merchant API suits products whose price or stock changes several times a day. The delivery method sets a ceiling on how fresh the data in Google can be, so choose it by how often your prices and stock move.

Method Best for Refresh pattern Setup effort
Scheduled fetch A feed file at a stable web address Daily or several times a day Low: set the URL once
File upload A test batch or a few dozen products Manual, each time someone uploads Low, but easy to forget
Merchant API Large ranges or fast-changing prices and stock Per product, close to real time High: needs developer time
Supplemental feed Labels and extra attributes on top of the primary feed Its own schedule Medium: a second file or sheet

The fetch is the default because nobody has to remember anything on a busy Friday: you publish a file at a stable address and Google pulls it on a timetable.

A file upload is fine for 40 products and a liability at 4,000, because it depends on a person. The Merchant API, which replaced the Content API for Shopping, updates one product at a time: the only workable answer when a promotion moves prices several times a day.

What does a slow refresh cost?

A slow refresh costs every click bought at a price the shop no longer charges, and the exposure grows with the gap between fetches: the worst case is the full interval.

Bar chart of hours a price change stays wrong by feed refresh: 12 average and 24 worst at once a day, 3 and 6 at four times a day, 0.5 and 1 hourly.
Each extra daily fetch shortens the window: a feed fetched once a day shows a changed price wrong for 12 hours on average, an hourly one for 30 minutes.Source: Calculated: average window = refresh interval ÷ 2, worst case = the full interval, for changes made at random times; Google's processing time comes on top
Show the data
How long a price change stays wrong in Google
Feed refreshAverage hours wrongWorst case, hours
Once a day12.024.0
Twice a day6.012.0
Four times a day3.06.0
Every hour0.51.0

For example, a flash sale drops a jacket from €89.00 to €60.00 at 09:00, and the daily fetch ran at 06:00. Until 06:00 the next day, the ad shows €89.00 next to competitors’ prices while the page says €60.00, so the sale wins fewer clicks than it should and Google can flag the mismatch.

Raise a price instead, and every click in that window arrives expecting the old, lower one.

An approved product with a wrong price costs more than a disapproved one. The disapproved product stops spending; the stale one keeps going. If you’re weighing per-product updates against a scheduled file, the Merchant API guide for 2026 covers the setup and the developer time involved.

How do you build and submit the feed?

Build the feed from a clean export, freeze the ids, fill the required attributes, connect the variants, then submit a small test batch before the full range.

Take a realistic case: a 2,000-variant apparel shop with sizes and colours, prices that move during sales and a team that keeps adding styles. That range breaks naive setups; the sequence below survives it.

Build and submit a Google Shopping feed
  1. Export one row per sellable variantA parent row for "Trail Runner, all sizes" hides the unit that serves an ad. Pull the live price and current stock in the same export, or the feed mixes two different moments.
  2. Freeze the idGive each internal SKU a permanent identifier of 50 characters or fewer and never regenerate it on export. A changed id creates a duplicate offer and resets the product's history.
  3. Fill the required attributesComplete every required column from the attribute table and validate each GTIN check digit: a malformed or reused code is disapproved or matched to someone else's product.
  4. Connect the variantsGive every size and colour of one style the same item_group_id and item_group_title, so the variants stay linked in reporting and the right one is shown.
  5. Create the primary feed, and only thatAdd a supplemental feed later for extras such as custom labels. Rewriting the core feed for a promotional flag is how two versions of the truth start.
  6. Check feed values against the landing pagesPrice and stock are the fields your shop changes without telling anyone, and the two where a mismatch becomes a disapproval.
  7. Read item-level diagnostics after the first runCheck that the products went active, and why any didn't, before you touch campaigns or budgets.

Why submit a test batch first?

A test batch of 10 to 20 products finds a mapping error before it spreads to the full range. Pick them from the messiest part of your products on purpose: a style with many variants, a product without a GTIN, an item that sells out often. If those go active cleanly, the rest will follow.

Finding a systematic mapping error across 20 rows costs an hour. Finding it across 2,000 costs a week of lost impressions. So a test batch must be active, with no critical issues, before the full upload.

How do you fix disapprovals and warnings?

Fix Merchant Center issues from the item-level diagnostics, worst first by number of affected products. A disapproval stops a product from serving at all. A warning lets it serve with limits, which is often the costlier state, because the product keeps drawing impressions it converts badly.

Item-level diagnostics name the exact attribute and the exact product, while an account-wide approval percentage tells you almost nothing you can act on. Sort by affected items and work down:

Symptom Likely cause Fix
Missing required value Attribute blank in the source data Fill the field at the source and resubmit
Invalid GTIN Wrong length, failed check digit or reused code Correct it from manufacturer data, or set identifier_exists to no when none exists
Price mismatch Feed price differs from the page, often over tax Sync the feed price with the page before each release
Out of stock Feed says in_stock while stock is zero Set out_of_stock when stock runs out and refresh during the day
Image not accessible Image blocked, broken or below the minimum size Serve it publicly over https at the required size
Landing page problem Link errors or redirects to the homepage Point link at the exact product page
Variant not connected Missing or inconsistent item_group_id Give all variants of a style one group id
Duplicate product Same product under two ids Keep one stable id per variant and remove the old rows

The full list, by Google’s own issue names, is in Google Merchant Center errors and their fixes.

Why does one change flag hundreds of products?

One root cause flags every product that shares it. For example, a shop changes how it shows tax on its product pages, and overnight 300 products are flagged for a price mismatch.

Opening 300 product records is the instinct; the fix is one field: include tax in the feed price as the page does, rerun the feed and let the next processing run clear the batch.

Most data issues clear on the next processing run after a correct resubmission. Policy reviews take longer, often several days, so fix the data issues next to a policy flag without waiting for it.

Clicks are scarce. Google Shopping ads had an average click-through rate of 0.86% in 2023, according to Semrush’s compilation of Google Ads statistics, which cites WordStream. Every impression spent on a broken or mismatched variant is one the right product didn’t get.

Do your products serve before you increase budgets?

An approved product isn’t necessarily a serving product: it can be error-free and still not eligible, and only Google Ads’ product reports show it.

There are two. The Shopping product report shows the current state of every product in linked Merchant Center accounts, including items that have never served.

The Shopping performance view holds the history of products that did serve: item id, brand, category, condition and custom attributes, with impressions, clicks, cost and conversions, as Google’s Shopping ads reporting documentation explains.

Run four checks before you increase budgets:

  1. Count what’s active. Compare active products with the number you submitted. A gap of a few dozen across variants usually means orphaned size rows.
  2. List the products that don’t serve. Read the reason for each and group them; they usually come down to two or three root causes.
  3. After two weeks, compare spend and sales per product. Sort clicks and cost by item id and find the products drawing spend without sales.
  4. Test changes per product. Google publishes no general lift from complete attributes, so judge a change with a controlled test, not a hunch.

The stakes rise with scale. Advertiser spending on Google Shopping ads, standard Shopping and Performance Max together, rose 16% year on year in Q3 2024, per Tinuiti’s Q3 2024 Digital Ads Benchmark Report.

By the end of 2024 more than 95% of retail advertisers running Shopping ads had adopted Performance Max, per Tinuiti’s Q4 2024 report.

Step 3 is where doing it by hand stops scaling: across thousands of variants, nobody compares cost and sales per product every week. Product Segmentation does it with machine learning on profitability, stock, product returns, potential and competitor prices; clicks are only one signal.

Segments update in real time over a window of 7 to 365 days (30 by default), and each product’s segment goes back to Merchant Center as a custom label through a supplemental feed.

How do you keep the feed accurate over time?

Keep identity and state apart: one clean primary feed for what a product is, and a supplemental feed or API updates for what changes daily. Merchant Center merges the supplemental rows onto the primary ones by id, so labels and prices can change without touching the record underneath.

Attribute Layer How often it changes
id Primary feed: identity Never
brand, gtin Primary feed: identity Rarely
item_group_id Primary feed: identity When a style is added
price Supplemental feed or API: state Daily during sales
availability Supplemental feed or API: state With every stock movement
custom_label_0 to custom_label_4 Supplemental feed: state When a segment or promotion changes

A sale price then changes one row in the state layer, while the identity row, and the product’s history, stay untouched.

Four habits keep the two layers clean:

  1. Map SKU to id the same way every time. One internal key maps to one Merchant Center id, with no transformation that breaks when someone edits a title.
  2. Never let a state change rewrite identity. A price update that also regenerates the id or the item group restarts the product’s history, and promotions and custom labels belong in the state layer.
  3. Run automated checks daily. Look for missing required attributes, invalid GTINs, inconsistent variant values, broken image or landing-page URLs and feed-to-page mismatches, before Google finds them.
  4. Fix the affected rows, don’t reload everything. After each submission, read item-level diagnostics and correct only the affected products. Replacing the whole feed to fix 40 rows is how new errors get in.

For changes you want Merchant Center itself to make while it processes the feed, such as filling a missing brand or building a label, see Merchant Center feed rules.

Which feed numbers should you watch every week?

Watch four numbers weekly: item-level disapproval rate, stale-price rate, stale-stock rate and time to correction. They describe the products you’re actually running; an account-wide approval percentage doesn’t, and Google publishes no benchmark for it.

Number How to calculate it A rise usually means
Item-level disapproval rate Disapproved items ÷ submitted items A mapping or source-data error
Stale-price rate Items whose feed price differs from the page ÷ items checked A broken price sync
Stale-stock rate Items in stock in the feed but sold out in the shop ÷ items checked Inventory updates lag behind sales
Time to correction Hours from an issue appearing to its fix going live Nobody owns the fix

For example, the stale-price rate climbs from 1% to 6% in the week a new pricing tool goes live.

Line chart of weekly stale-price rate: flat at about 1% for four weeks, then 6% in week 5 when a new pricing tool went live, and back to 1% after the sync fix. Illustrative data.
A jump from about 1% to 6% in the week a new tool went live points at one broken sync job, not at the feed as a whole.Source: Illustrative data
Show the data
Stale-price rate before and after a pricing tool went live
WeekStale-price rate
Week 11%
Week 21%
Week 31%
Week 41%
Week 56%
Week 66%
Week 71%

Because the number is tracked weekly, the cause shows within days: the jump lines up with one release, so you check that sync job instead of auditing the whole feed. An alert threshold, here 2%, turns the weekly review into a notification.

Final thoughts

The feed that hurts you is rarely the one Merchant Center rejects. It’s the approved one serving yesterday’s price, so put your effort into refresh speed and the stale-price rate before you polish another attribute. Start with your own numbers: how often does your feed refresh, and how often do your prices change?

If you sell refurbished or condition-graded products, a single-brand category page such as Google handsets at Used Mobiles 4 U shows how one brand’s range is laid out by model and condition; apply the same pattern, and the condition attribute, to your own ranges.

For shops that also sell from physical stores, Google’s local product data specification lists the extra attributes local inventory ads need, and notes that products can take up to two days to appear after submission.

For background on why the feed now sits at the centre of Google’s ads, this history of the Google Shopping model traces it from Froogle, a free comparison engine launched in December 2002, through Google Product Search in April 2007 to paid Google Shopping on 31 May 2012.

Written by

, Founder of Product Metrics

1M+ products analysed · Nominated at the Dutch Search Awards for Best Measurement Campaign (2023) and Best Use of Data (2024)

Linkedin

Keep reading.

Frequently asked questions.

Should prices in a Google Shopping feed include VAT?

Yes, in the EU and the UK the feed price includes VAT, matching what the shopper pays on the product page. In the US and Canada it excludes sales tax, which you set in Merchant Center instead. A feed on the wrong tax basis is a common cause of price mismatches.

Can a Google Sheet be your Google Shopping feed?

Yes. Merchant Center accepts a Google Sheet as a product data source and fetches it on a schedule. It suits a few dozen products that someone edits by hand; for hundreds of variants with changing prices, export the feed from your shop instead.

Do you need a feed management tool to feed Google Shopping?

No. Most shop platforms can publish a feed URL or connect to Merchant Center directly, and that covers one channel. A feed management tool earns its cost when you send the same products to several channels, or need rules that rewrite titles and attributes in bulk.

See which of your products to push, fix or pause. Start with your own products, or a 30-second estimate.

Check one product first: work out its break-even ROAS in the calculator. Then see where all your products stand.

Find your hidden profit30-second estimate · no login
Analyse your products for freeFree analysis, no credit card

Questions, or want to spar about your products? Book a demo: a video call with Berend, then a demo account.