Guide
Fixing disapproved products in Google Merchant Center
Disapproved products in Google Merchant Center have two kinds of cause: data in the feed that is wrong or missing, and problems on the site or with policy that no feed can change. The first kind (missing GTIN, over-long or promotional titles, price and availability that do not match the page) is fixed once with a feed rule and stays fixed. Sort the issues by type in Merchant Center, then fix each type with one rule.
We connect your store, build the feed and keep it in sync. Updated 2026-10-27.
At a glance
- Find the issues in Merchant Center: Products → Needs attention, filter by issue, and download the CSV of affected products. Textfinity cannot read disapprovals from Merchant Center; this step is yours.
- Feed-fixable: missing or invalid GTIN, title over 150 characters or with promotional text, mismatched price, mismatched availability, incorrect language.
- Not feed-fixable: policy violations, unavailable or 404 landing pages, prices rendered by JavaScript, promotional overlays on images, account suspensions.
- After a fix, Google re-crawls automatically, which typically takes 24 to 72 hours; manual reviews can take up to 7 business days.
What Textfinity can and cannot see
Textfinity does not import Merchant Center diagnostics: it cannot read which products Google disapproved or why. What it can do is change the data Google receives, at the rule level, for every product at once, and profile the catalog before Google sees it. Feed hygiene flags empty GTIN columns, titles over the 150-character limit, mixed languages and malformed URLs, which are the data behind several of the most common disapprovals.
So the workflow is: read the issue list in Merchant Center, group it by type, find the data behind each type, change the rule in Textfinity, and let the next fetch carry the fix. One rule fixes every product that shares the cause, including future ones. You send us the issue list; we change the rules.
Disapprovals the feed can fix, and how
| Merchant Center issue | Usual cause in the data | Feed rule in Textfinity |
|---|---|---|
| Missing or incorrect GTIN [gtin] | Barcode column not mapped; supplier export lacks GTINs; restricted prefixes (2, 02, 04) | gtin: rename Barcode; merged source keyed by SKU for supplier GTINs; leave empty if it matches regexp ^(2|02|04) |
| Product has no identifiers | Custom or private-label goods sent without identifier_exists | identifier_exists: static value no, with the condition Barcode matches regexp ^\s*$, on the custom-made range only |
| Title too long / promotional text | Variant options and promo words appended; titles over 150 characters are truncated | title: remove from regexp (?i)\b(free shipping|sale|% off)\b; combine fewer fields; AI title within 150 characters |
| Mismatched price | Sale shown on site but not sent; currency missing; feed refreshed less often than prices change | price from compare-at, sale_price from price when a sale exists; currency suffix; shorter shop sync schedule |
| Mismatched availability | Stock quantity not translated to Google's values; preorders without a date | availability: advanced if/then on stock; availability_date for preorder |
| Incorrect language | Untranslated fields in a translated feed | One feed per language; translated title and description via AI config or store locale |
Issue names and rules from Google Merchant Center Help (title, GTIN, identifier_exists, availability, mismatched price), checked 2026-10-27.
Disapprovals a feed cannot fix
- Policy violations (restricted or prohibited products, misrepresentation): these concern what you sell and how the business presents itself. Fix the site or appeal in Merchant Center.
- Landing page unavailable or returning 404: fix the URL on the site. A feed rule can only correct links that are malformed in the data.
- Price rendered by JavaScript or changed by IP geolocation: Googlebot reads the HTML the server returns, so the site has to show the price there.
- Promotional overlays or watermarks on images: Textfinity does not edit images. If the store has a clean second image, map that column to image_link.
Fixing a GTIN missing error in Google Merchant Center
Google calls GTIN recommended for every product that has one assigned by the manufacturer, and warns that a product with a GTIN that is not submitted could be disapproved; missing or incorrect values can also limit visibility. Accepted lengths are 8, 12, 13 or 14 digits with a valid check digit; spaces and dashes are ignored.
If the store holds the barcode (Shopify's Barcode field, a WooCommerce meta column), rename it to gtin. If only the supplier has it, join the supplier file as a merged source on SKU. If the product has none (custom, private label), send brand and mpn where you can and identifier_exists no.
Sources checked
- Google Merchant Center Help: GTIN attribute
- Google Merchant Center Help: identifier_exists attribute
- Google Merchant Center Help: Title attribute
- Google Merchant Center Help: Availability attribute
- Google Merchant Center Help: How to fix mismatched product price
- Google Merchant Center Help: How to fix Incorrect language
Examples
Worked examples, by situation
Four stores, four disapproval patterns, four rules that cleared them in bulk.
Missing GTIN on 640 products, GTINs in the supplier file
Before
id: HP-2201 gtin: (empty) supplier_prices.csv: HP-2201;0840268915432
After
id: HP-2201 gtin: 0840268915432
How we set it up
We join the supplier CSV as a merged source on SKU and map gtin by rename from the supplier's EAN column, with the store's own barcode first through a conditional rule (if Barcode matches regexp ^\s*$, use the merged column). Feed hygiene completeness on gtin goes from 64% to the share the supplier covers.
Titles truncated and flagged as promotional
Before
title: SALE!! Organic Cotton Hoodie - Free Shipping - Heather Grey / XL / Relaxed Fit / Eco Collection 2026
After
title: Organic Cotton Hoodie color: Heather Grey size: XL
How we set it up
We map title with remove from regexp (?i)(sale!*\s*|\s+-\s+free shipping.*$) on the Shopify title; color and size go to their own attributes by rename instead of being appended. Feed hygiene's length distribution confirms no title is over 150 characters.
Mismatched price during a sale
Before
price: 4995 SEK site shows: 3995 kr, was 4995 kr
After
price: 4995.00 SEK sale_price: 3995.00 SEK
How we set it up
We map price with an advanced rule: if [variant_compareAtPrice] is not empty then [variant_compareAtPrice] + " SEK" else [variant_price] + " SEK"; sale_price gets a conditional rule: if variant.compareAtPrice matches regexp ^\s*$, leave empty, else advanced [variant_price] + " SEK". The shop's sync schedule is tightened for the sale week so the feed follows price changes.
Availability mismatch from raw stock numbers
Before
availability: 0 availability: 14 availability: preorder (no date)
After
availability: out_of_stock availability: in_stock availability: preorder + availability_date: 2026-12-01
How we set it up
We map availability with an advanced rule: if [qty] equals "0" then "out_of_stock" else "in_stock", with a conditional rule for the preorder tag first, and availability_date by rename from the release_date column of the Magento export.
Copy this plan
Plan: clear a wave of disapprovals in one pass
Step 1 happens in Merchant Center; steps 3 to 5 are rules we set up in Textfinity; step 6 is back in Merchant Center.
01
Export the issue list from Merchant Center
Open Products → Needs attention, group by issue, and download the CSV of affected products for each issue type. Textfinity cannot pull this list, so you send it to us.
02
Sort issues into feed-fixable and site-fixable
Use the two lists above. Send policy, landing-page and image-overlay issues to whoever owns the site; keep the data issues.
03
Find the shared cause in the data
Open a few affected products and compare the source value with what the feed sends. Run a hygiene check to see how many products share the pattern.
What we set up: We compare the per-product mapping output in the product explorer and run a new feed hygiene check.04
Fix the rule, not the product
Change the mapping for the column involved: gtin, identifier_exists, title, price, sale_price, availability or link.
What we set up: We change that column's rule: rename, advanced, remove from regexp or add suffix.05
Hold back what cannot be fixed yet
Products with no possible GTIN and no brand, or with no valid image, can be excluded until the data exists.
What we set up: We add an exclude filter: [product.featuredImage.url] is blank (or the export's own image column).06
Let Google re-fetch and re-crawl
The edited feed is rebuilt within about five minutes. Merchant Center picks it up on its next fetch; re-crawls typically take 24 to 72 hours, and you can request a review for products you believe were flagged in error.
Customization tips
Make it yours
Fix by issue count, largest first
One rule that clears 600 GTIN warnings is worth more than ten hand edits. The trade-off is that a bulk rule can be wrong in bulk: check twenty products before the next fetch.
Do not answer a price mismatch by excluding the product
Excluding hides the symptom and loses the sales. Send the sale correctly with sale_price and sale_price_effective_date, and refresh the feed as often as prices change.
Never fake identifiers
Inventing GTINs or setting identifier_exists to no on branded products to silence a warning creates a worse problem. Google checks check digits and warns when a product marked no has a known GTIN.
Edit in the feed, not in Merchant Center
Edits made on a product inside Merchant Center are overwritten by the next fetch of the feed. A rule in the feed survives every rebuild.
FAQ
Questions about google merchant center disapproved products
Why are my products disapproved in Google Merchant Center?
Either the product data breaks a requirement (missing GTIN, title over 150 characters, price or availability that does not match the landing page, wrong language) or the product, page or business breaks a policy. Products → Needs attention in Merchant Center lists each issue per product.
How do I fix a GTIN missing error in Google Merchant Center?
Map the product's barcode to the gtin attribute (8, 12, 13 or 14 digits with a valid check digit). If the store lacks barcodes, join them from a supplier file by SKU. If the product has no GTIN at all, such as custom or private-label goods, send brand and mpn where available and set identifier_exists to no.
How long does it take for disapproved products to be approved after a fix?
Google re-crawls automatically, typically within 24 to 72 hours of the corrected data arriving. Manual reviews you request can take up to 7 business days.
Can Textfinity show me which products are disapproved?
No. Textfinity does not import Merchant Center diagnostics. It fixes the data behind disapprovals with feed rules, and its feed hygiene check flags missing identifiers, over-long titles, mixed languages and broken URLs before the feed reaches Google.
Set up for you
Have the data behind your disapprovals fixed once, for every product.
Send us your store and the issue list from Merchant Center. We rebuild gtin, title, price and availability with feed rules in Textfinity and profile the catalog before Google fetches it.
Tell us your store and channels. We reply within 24 hours.