**TL;DR.** Google Merchant Center feeds power both paid Shopping ads and free shopping placements (Google search shopping carousel, Image Search shopping). The fundamentals: required attributes, price-parity with your landing page, accurate availability. Most rejections are fixable in minutes once you know what to look for.

## What Merchant Center is

Google Merchant Center is the catalog Google uses to display products in:

- Shopping ads (paid CPC).
- "Surfaces Across Google" — free placements: Search shopping carousel, Image Search shopping, Lens.
- YouTube shopping integrations.

Even merchants who don't run Shopping ads should submit a feed for the free surfaces.

## Required attributes

The minimum viable product feed entry:

| Attribute            | Required?            | Example                                       |
| -------------------- | -------------------- | --------------------------------------------- |
| `id`                 | Yes                  | `SKU-12345`                                   |
| `title`              | Yes                  | `Brown Leather Bag — Large`                   |
| `description`        | Yes                  | `Handcrafted full-grain leather...`           |
| `link`               | Yes                  | `https://example.com/products/leather-bag`    |
| `image_link`         | Yes                  | `https://example.com/.../leather-bag.jpg`     |
| `availability`        | Yes                  | `in_stock` / `out_of_stock` / `preorder`      |
| `price`              | Yes                  | `149.00 USD`                                  |
| `brand`              | Yes (most categories) | `Example Brand`                              |
| `gtin` or `mpn`       | Yes for new products  | `1234567890123` or `MFR-MODEL-001`            |
| `condition`          | Yes                  | `new` / `refurbished` / `used`                |
| `shipping`           | Conditional          | See "shipping" section                        |
| `google_product_category` | Recommended      | `Apparel & Accessories > Handbags`            |

Recommended attributes for better matching:

- `color`
- `size`
- `material`
- `pattern`
- `gender`
- `age_group`
- `product_type` (your own taxonomy)
- `additional_image_link` (up to 10)
- `mobile_link` (if different from `link`)

## Title best practices

The `title` is what matches user queries. Format:

```
[Brand] [Product Name] [Key Attribute (size/color/material)] [Variant]
```

Examples:

- ✅ `Acme Leather Bag — Large Brown`
- ✅ `Lush Wool Coat — Women's Medium Charcoal`
- ❌ `BUY NOW!!! Best leather bag 2026 free shipping!!!`
- ❌ `Bag` (too short)

Title limit: 150 characters; Google shows ~70 in placements.

## Description best practices

The `description` is read by Google's quality algorithms to confirm the product matches the title and ranks for relevant queries.

- 500–5000 characters (Google says 5000 max).
- Plain text. Strip HTML tags.
- Include key attributes (material, size, fit, use case).
- Avoid promotional language ("BEST DEAL!", "SHOP NOW!") — flagged as spam.
- Avoid keyword stuffing.

## Pricing — price parity is critical

Google validates feed price against landing page price. Mismatches trigger account-level warnings; persistent mismatches lead to suspension.

Rules:

- Feed price must match the price the user sees on the landing page.
- Currency must match the regional Merchant Center settings.
- Tax — depends on region:
  - **US**: feed price excludes tax (tax handled in Shopping cart).
  - **EU, UK, AU, BR**: feed price **includes** VAT/GST.
- Sale price: use `sale_price` attribute separately. Don't put sale price in `price`.

```xml
<price>199.00 USD</price>
<sale_price>149.00 USD</sale_price>
<sale_price_effective_date>2026-05-01T00:00-08:00/2026-05-31T23:59-08:00</sale_price_effective_date>
```

## Availability — keep it accurate

Selling an item that's marked `in_stock` but actually out of stock is the second-most-common rejection cause. Update availability:

- Real-time via the Content API (preferred for large catalogs).
- Daily feed refresh (acceptable for slow-moving inventory).
- On every order completion if you're under volume threshold.

`preorder` and `backorder` are valid — use them honestly with `availability_date`.

## GTIN, MPN, Brand

For new products (`condition=new`), Google requires either:

- `gtin` (Global Trade Item Number — UPC/EAN/ISBN), or
- `mpn` (Manufacturer Part Number) + `brand`.

For used/refurbished: GTIN is optional.

If you make your own products, set `mpn` to your SKU and `brand` to your store name. If you resell, use the manufacturer's GTIN.

## Shipping

Configure shipping at the **account level** in Merchant Center settings. This covers most stores.

For products with different shipping (oversized, hazmat, perishable), override per product:

```xml
<shipping>
  <country>US</country>
  <service>Standard</service>
  <price>9.99 USD</price>
</shipping>
```

## Feed format

Three formats supported:

- **XML** (Google's RSS 2.0 + Google Merchant namespace): the historical default.
- **TSV** (tab-separated values): easier to debug, less verbose.
- **Content API** (JSON over HTTP): real-time push for large catalogs.

XML example structure:

```xml
<?xml version="1.0"?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
  <channel>
    <title>Example Store</title>
    <link>https://example.com</link>
    <description>Product feed</description>
    <item>
      <g:id>SKU-12345</g:id>
      <title>Acme Leather Bag — Large Brown</title>
      <description>Handcrafted full-grain leather...</description>
      <link>https://example.com/products/leather-bag</link>
      <g:image_link>https://example.com/.../leather-bag.jpg</g:image_link>
      <g:availability>in_stock</g:availability>
      <g:price>149.00 USD</g:price>
      <g:brand>Acme</g:brand>
      <g:gtin>1234567890123</g:gtin>
      <g:condition>new</g:condition>
      <g:google_product_category>Apparel &amp; Accessories &gt; Handbags</g:google_product_category>
      <g:color>brown</g:color>
      <g:material>leather</g:material>
    </item>
    <!-- ... more items ... -->
  </channel>
</rss>
```

## Submitting

Two options:

1. **Scheduled fetch**: host the feed at `https://yourdomain.com/feeds/google-merchant.xml` and configure Merchant Center to fetch it (daily, weekly).
2. **Upload**: manual or SFTP/Google Cloud Storage. Less common.

Most stores use scheduled fetch — the URL is stable and your platform serves the latest catalog.

## Monitoring

Merchant Center → Products → Diagnostics:

| Severity      | Action                                       |
| ------------- | -------------------------------------------- |
| Errors        | Fix within 24h; products disapproved until fixed |
| Warnings      | Fix within 1 week; affect quality score      |
| Notifications | Informational; consider improvements          |

Common rejections and fixes:

| Rejection                                  | Fix                                       |
| ------------------------------------------ | ----------------------------------------- |
| "Price mismatch"                            | Update feed or landing page to match       |
| "Missing GTIN"                              | Add GTIN or MPN+brand                      |
| "Promotional text in title"                  | Strip "Free shipping!" from title          |
| "Image too small"                            | Use ≥ 800×800px images                     |
| "Insufficient product information"            | Add color, size, material attributes        |
| "Restricted product"                          | Some categories require pre-approval        |

## How Ordiko generates feeds

Ordiko emits per-store feeds at:

- `/feeds/google-merchant.xml` — Google Merchant Center.
- `/feeds/bing-merchant.xml` — Bing Shopping.
- `/feeds/facebook-catalog.xml` — Facebook/Instagram Shopping.
- `/feeds/pinterest.xml` — Pinterest Catalog.

The feeds pull from the live catalog with cache-tag invalidation on product mutations. All required attributes are emitted from your product schema; optional attributes (color, size, material) auto-populate from variant attributes.

Configure feed-level settings at **Settings → Feeds** in the dashboard.

## FAQ

**Do I need a feed if I'm not running Shopping ads?**
Yes for free Surfaces Across Google (organic shopping placements, Google Search shopping carousel, Image Search shopping results, Google Lens). The free placements use Merchant Center data; a feed unlocks them even without paid Shopping campaigns.

**How often should the feed update?**
Daily for stores with frequent inventory changes; weekly if your catalog is stable. Real-time updates via the Content API are an option for large catalogs with hourly inventory movement.

**What's the most common rejection reason?**
Price mismatch between feed and landing page, usually caused by feed being stale or landing page showing a discount that the feed doesn't reflect. Followed by missing GTIN/MPN/brand combination on new products.

**Does Ordiko generate Merchant Center feeds?**
Yes. Ordiko emits per-store Google Merchant, Bing Merchant, Facebook Catalog, and Pinterest product feeds at /feeds/google-merchant.xml etc. The feeds pull from your live catalog and refresh on cache invalidation.
