DEV Community

Peter Panda
Peter Panda

Posted on

Product Feed Hygiene for Google Merchant Center: A Script-Friendly Checklist for Cross-Border Stores

For cross-border stores running Shopping or Performance Max campaigns, the product feed is the ad. A messy feed means disapproved items, wrong prices shown to buyers, and wasted spend. This checklist is written for developers who generate the feed, with checks you can automate.

Identity fields

  • id stable across exports; never reuse an ID for a different product.
  • gtin where it exists; do not invent GTINs. Use identifier_exists = no for custom goods.
  • brand consistent spelling across all items.

Price and currency per target country

Each target country needs prices in a currency Merchant Center accepts for that country, and they must match the landing page the buyer sees. If your site converts currencies by geolocation, make sure the crawler sees the same price you submit.

def check_price(item, page_html):
    shown = extract_price(page_html, item["currency"])
    return abs(shown - item["price"]) < 0.01
Enter fullscreen mode Exit fullscreen mode

Run this against a sample of landing pages every day.

Availability and shipping

Out-of-stock items must say so. Shipping settings must cover each target country, or items will be limited. Cross-border sellers often forget this when adding a new market.

Titles that work in each language

Titles should be in the language of the target country, start with the most important attributes, and avoid promotional text like "free shipping" or "best price", which can trigger disapprovals.

Images

Use clean product images without watermarks or overlaid promotions. Check image URLs return 200 and are not blocked by hotlink protection.

Automated pre-flight checks

REQUIRED = ["id", "title", "description", "link", "image_link", "price", "availability"]

def validate(item):
    errs = [f for f in REQUIRED if not item.get(f)]
    if len(item.get("title", "")) > 150: errs.append("title too long")
    if "free shipping" in item.get("title", "").lower(): errs.append("promo in title")
    return errs
Enter fullscreen mode Exit fullscreen mode

Fail the export if more than a small percentage of items have errors.

Monitor diagnostics

Merchant Center's diagnostics change daily. Pull the item status report through the Content API on a schedule and alert on sudden increases in disapprovals.

Account-level issues

Misrepresentation suspensions usually come from missing business information, unclear return policies or checkout problems, not from the feed itself. Make sure your contact page, refund policy and checkout are complete before scaling.

Shopping is one channel among many. If you are comparing account requirements and costs across Google, Meta, TikTok and others, see our ad platform account cost comparison.

Published by PandaWM, an overseas marketing team based in Hong Kong.

Top comments (0)