Required attributes
These must be present and valid for a product to be eligible at all:
- id: a unique, stable identifier for each product.
- title: clear and specific; lead with the most important details, avoid keyword stuffing and promotional text.
- description: accurate product description, not marketing fluff or policy-violating claims.
- link: the product landing page URL, matching the price and availability shown.
- image_link: a high-quality main image with no promotional overlays or watermarks.
- availability: in stock, out of stock, preorder, or backorder.
- price: must match the landing page exactly, in the correct currency.
- A product identifier: brand plus GTIN or MPN for most categories; use identifier_exists where genuinely not applicable.
Conditional and recommended attributes
These are required in specific situations or strongly improve performance:
- sale_price and sale_price_effective_date: for promotions, so the strikethrough price shows correctly.
- item_group_id: groups variants (size, color) so the right one shows.
- google_product_category and product_type: taxonomy that improves matching and lets you segment campaigns.
- custom_label_0 to custom_label_4: your own segmentation (margin, bestseller, season) for bidding.
- additional_image_link: extra images, a good place for badged/lifestyle creative since the main image must stay clean.
Common disapproval reasons
Most Google Shopping disapprovals trace back to a short list:
- Missing GTIN or brand for a product that needs an identifier.
- Price or availability mismatch between the feed and the landing page.
- Promotional text or overlays on the main image.
- Titles or descriptions that are too short, generic, or keyword-stuffed.
- Missing or invalid product category.
How MartechFlow keeps you approved
MartechFlow maps your source to the Google spec, scores catalog health, and gives you a ranked fix queue for exactly these issues. Connect Merchant Center and it reads back real per-product disapproval reasons. Badges go on additional images so the main image stays policy-clean, and every scheduled refresh re-validates before it publishes.