E-commerce Marketing and GrowthMarketplaces, social commerce, product feeds and paid acquisition · Lesson 13 of 20

Google Merchant Center and product feeds

Article · 8 min · 9 min lecture

Video lecture

Google Merchant Center and product feeds

14 chapters · about 9 min · full transcript

Coming soon

Chapter 1 of 14

Google Merchant Center and product feeds

  • Your most neglected ad asset
  • Required and key attributes
  • Titles, submission, the Merchant API
  • Disapprovals, free listings, AI

The narrated lecture is in production

Every chapter is scripted and ready. Browse the chapters and read the full transcript now — the video will appear here when it’s published.

Chapters

Why the product feed is now your most important ad asset

A product feed is a structured list of your products — IDs, titles, descriptions, prices, availability, images, identifiers and more. Google Merchant Center uses it for free listings on Google (Shopping tab, Search, Images, Maps/YouTube in eligible markets) and for Shopping ads and Performance Max. The same data powers Meta and TikTok catalogues, marketplaces and increasingly AI shopping experiences. A clean, rich feed improves visibility everywhere; a messy one quietly limits every channel.

Required and key attributes (Google Merchant Center)

AttributeNotes
idUnique, stable per variant (e.g. SKU). Changing IDs resets performance history.
titleUp to 150 characters. Front-load what shoppers search: brand + product type + key attributes (material, size, colour, gender, model).
descriptionUp to 5,000 characters; accurate, no promotional text or competitor comparisons.
linkLanding page for the exact variant; must match the feed price and availability.
image_linkHigh-quality image of the product; no watermarks or promotional overlays on the main image.
availabilityin_stock, out_of_stock, preorder, backorder.
priceNumber + ISO currency, e.g. 189.00 AED; must match the landing page.
brandRequired for most new products with a brand.
gtinRequired when the product has one assigned (EAN/UPC/ISBN). Use mpn + brand if no GTIN; identifier_exists = no only when neither exists (e.g. custom-made).
conditionnew, refurbished or used.
Variant attributesitem_group_id, color, size, gender, age_group (required for apparel in many countries).
shipping / taxShipping cost and speed settings (account-level or in feed); tax settings in some countries (e.g. US).
Optional but valuablesale_price + sale_price_effective_date, product_highlight, product_detail, additional_image_link, custom_label_0-4, google_product_category, product_type.

Always check the current Product data specification in Merchant Center Help — requirements differ by country and category and change over time.

Ways to submit and manage the feed

  • Platform integrations: Shopify's Google & YouTube channel app, WooCommerce's Google for WooCommerce extension, and marketplace-style connectors sync products automatically.
  • Scheduled file fetch (CSV/TSV/XML hosted on your server) or Google Sheets.
  • API: the Merchant API replaced the Content API for Shopping, which was scheduled to shut down on 18 August 2026. If a developer or feed tool integrated with the Content API, confirm it has migrated. File uploads, scheduled fetches and Sheets are not affected.
  • Supplemental feeds add or override attributes (custom labels, better titles) without touching the primary feed.
  • Feed management tools (e.g. Feedonomics, Channable, Productsup, DataFeedWatch) help at scale and across channels.

Hands-on: validate a feed before Google does

import csv

REQUIRED = ["id", "title", "description", "link", "image_link", "availability", "price", "brand", "condition"]
AVAILABILITY = {"in_stock", "out_of_stock", "preorder", "backorder"}
CONDITION = {"new", "refurbished", "used"}

def gtin_ok(gtin: str) -> bool:
    """GS1 check digit for GTIN-8/12/13/14."""
    if not gtin.isdigit() or len(gtin) not in (8, 12, 13, 14):
        return False
    digits = [int(d) for d in gtin]
    check = digits.pop()
    total = sum(d * (3 if i % 2 == 0 else 1) for i, d in enumerate(reversed(digits)))
    return (10 - total % 10) % 10 == check

problems = 0
with open("products.tsv", newline="", encoding="utf-8") as f:
    for n, row in enumerate(csv.DictReader(f, delimiter="\t"), start=2):
        issues = [f"missing {k}" for k in REQUIRED if not (row.get(k) or "").strip()]
        if len(row.get("title", "")) > 150: issues.append("title > 150 chars")
        if row.get("availability") and row["availability"] not in AVAILABILITY: issues.append("bad availability value")
        if row.get("condition") and row["condition"] not in CONDITION: issues.append("bad condition value")
        if len((row.get("price") or "").split()) != 2: issues.append("price should be like '189.00 AED'")
        gtin = (row.get("gtin") or "").strip()
        if gtin and not gtin_ok(gtin): issues.append(f"gtin {gtin} fails check digit")
        for i in issues:
            problems += 1
            print(f"line {n} id={row.get('id', '?')}: {i}")
print(f"{problems} problem(s) found")

Example TSV (header + one row):

id	title	description	link	image_link	availability	price	brand	gtin	condition	item_group_id	color	size	custom_label_0
LNS-SAND-M	ExampleBrand Linen Relaxed Shirt - Sand - Men's M	Breathable 100% linen shirt, relaxed fit.	https://example.com/p/linen-sand?variant=m	https://example.com/i/linen-sand-1.jpg	in_stock	189.00 AED	ExampleBrand	5012345678900	new	LNS-SAND	Sand	M	margin_high

Common disapprovals and how to avoid them

IssueTypical causeFix
Price mismatchFeed not updated after a sale; currency/tax display differsSync prices automatically; use sale_price with effective dates
Availability mismatchStock changes faster than feed updatesMore frequent syncs; structured data on the page matching the feed
Missing identifiersNo GTIN/brand/MPNAdd GS1 GTINs; identifier_exists only when truly none
Misrepresentation (account level)Unclear business identity, missing policies, misleading claimsClear contact details, returns/delivery policies, honest pricing and claims
Image problemsWatermarks, promo text, placeholder imagesClean main images; lifestyle images as additional images

Free listings, promotions and ratings

  • Free listings can bring clicks at no cost once the feed is approved — a strong reason for every store to use Merchant Center, even without ads.
  • Promotions (e.g. "10% off with code EID10") can appear on listings; terms must match your site and pass review.
  • Product ratings and store ratings can show when you have enough genuine reviews from supported sources.
  • Local inventory features let stores with physical locations show in-store availability.

AI and the feed

Merchant Center includes AI tools (for example Product Studio for image editing and generation, and suggested title/description improvements). Use them to improve imagery and fill gaps, but check accuracy: AI-generated backgrounds are fine; AI changes to the product itself (colour, shape, included items) are misleading. Remember that AI shopping experiences — Google's and others' — read your structured product data, so accurate, complete attributes help you appear for detailed queries like "breathable linen shirt for 40°C".

Key takeaways

  • A clean product feed powers free listings, Shopping ads, Performance Max, social catalogues, marketplaces and AI shopping answers.
  • Get the essentials right: stable IDs, titles up to 150 characters front-loaded with searched attributes, matching prices and availability, and GTINs where assigned.
  • The Merchant API replaced the Content API for Shopping (scheduled shutdown 18 August 2026); check any API-based integrations — file and Sheets feeds are unaffected.
  • Most disapprovals come from price/availability mismatches, missing identifiers, image rule breaches and unclear business information.
  • Use supplemental feeds and custom labels (e.g. margin tiers, seasons) to structure campaigns, and keep AI-edited images faithful to the real product.

Check your understanding

Quick questions to lock in the lesson. They don’t count towards your certificate.

  1. Your feed shows 189.00 AED but the landing page shows a weekend sale price of 159.00 AED. What is the best fix?
  2. Which title is most likely to match real shopper searches?
  3. A developer built your feed integration on the Content API for Shopping several years ago. What should you check?

Put it into practice

Export your product feed, run the validator from this lesson, fix every flagged row, and rewrite the titles of your ten highest-traffic products with brand, product type and key attributes. Check Merchant Center diagnostics a week later.

Enrol for free to save your progress

Reading is always free. Enrol to keep your place, take the final assessment and earn a verifiable certificate.