Skip to content
Gaurav TiwariDocs

Google Product Feed

Updated November 5, 2026

Google shows products from stores it knows about in free listings across Search, Shopping, Images and Lens, and in Shopping ads. To know about yours, Google Merchant Center needs a product feed: a file it fetches on a schedule with each product’s price, stock, images and identifiers. WooCommerce doesn’t make one, so most stores add a feed plugin or connect a separate service.

Google Product Feed builds that file from your catalog. It is rebuilt a few minutes after products change and once a day, it leaves out products Google doesn’t allow, and it tells you why each one is missing.

Set Up the Feed

  1. Open Stackless → Dashboard and turn on Google Product Feed. The first build starts within a few minutes.
  2. Open Stackless → Product feed and copy the feed URL. It is /stackless-feed/google.xml on your site, or /?stackless_feed=google without pretty permalinks.
  3. In Google Merchant Center, verify and claim your site. The Google verification field in your SEO plugin works for this.
  4. Go to Products → Add product source → Add products from a file, choose the option to enter a link to your file, paste the feed URL and set a daily fetch.
  5. Set your shipping and return policies in Merchant Center. Virtual and downloadable products are listed with free shipping to your target country.
Stackless Product feed screen: 13 items in the feed from 13 products, 9 left out, built 48 seconds ago, with the feed URL and Copy URL, Open feed and Rebuild now buttons

The screen shows how many items are in the feed, how many were left out and when it was last built. Use Rebuild now when you want a change in the feed straight away.

What Goes Into Each Item

Each simple product and each variation becomes one item. Variations of the same product share an item group, and each links to the product page with that variation selected. Prices are in your store currency, never a visitor’s switched currency.

Feed attributeWhere it comes from
Title and descriptionThe product name (with the variation’s attributes) and its short description or description
ImagesThe variation or product image, then the gallery
Price and sale priceThe price the product page shows, with WooCommerce’s sale price and scheduled sale dates
AvailabilityIn stock, out of stock or on backorder, from WooCommerce
Yearly subscriptionsListed at the price of their first year, signup fee included
GTIN and brandWooCommerce’s GTIN, UPC, EAN or ISBN field, and WooCommerce Brands, then the default brand setting
ConditionThe condition setting, New by default
Google category and product typeYour category mapping, and the product category path
ShippingWeight for physical products, free shipping to your target country for virtual and downloadable ones

What Is Left Out

Google doesn’t allow some products. The feed leaves these out and lists each one under Left out of the feed with the reason:

  • Products you exclude on the feed screen
  • Drafts, private and password-protected products, and products hidden from the catalog
  • External products sold on another site, and service products
  • Products a signed-out visitor can’t buy, for example when Hide Price Until Login hides the price
  • Products with no price or a zero price
  • Subscriptions billed more often than yearly, and subscriptions with a set number of renewals. Google allows only yearly prepaid software subscriptions
  • Products with no image

Ebooks stay in the feed for free listings and are kept out of Shopping ads, which don’t allow them. One-time software licenses are included, but Merchant Center may still disapprove them.

Left out of the feed: a monthly membership and a coffee subscription not billed yearly, a service, a free product, an external product, a 3-payment plan and a wholesale product whose price is hidden from signed-out visitors

Under In the feed, click Exclude to leave a product out. It moves to the left-out list, where Include puts it back. Changes show in the feed after the next build.

Feed Settings

Go to Stackless → Settings → Google Product Feed:

  • Default brand: used when a product has no brand in WooCommerce Brands.
  • Condition: New, Used or Refurbished.
  • Target country: the country on the free shipping line of virtual and downloadable products. It starts as your store country.
  • Subscriptions: include yearly subscriptions only, or leave out all subscriptions.
  • Secret key: adds a key to the feed URL, and the feed refuses requests without it. Your product pages already show this data, so most stores leave the feed public.

Google Categories

Mapping is optional. On the feed screen, enter a Google product category ID or full path from Google’s list next to each product category, then click Save categories. A category without one uses its parent’s. Tick Ebooks for a category of ebooks to keep it out of Shopping ads.

Sale Prices on the Product Page

Merchant Center checks that the feed’s price matches the product page. WooCommerce already puts the regular price next to the sale price in the product’s structured data, so a sale in the feed matches the page with nothing to set up.

Good to Know

  • Updates: a burst of product edits makes one rebuild, five minutes after the first change. Large catalogs are built in batches in the background.
  • No half-built feeds: the feed file is only replaced once a build finishes, so Merchant Center always gets a complete file.
  • Caching: the feed tells caches they can keep it for an hour and answers repeat fetches with “not modified”. Nothing is purged when it rebuilds.
  • Item IDs: each item’s ID is wc_ plus the product or variation ID. It never changes, so Merchant Center keeps each item’s history.
  • Other feed plugins: the module pauses while Google for WooCommerce or another product feed plugin is active, so Merchant Center doesn’t get the same products twice. The Dashboard says which plugin paused it.
  • Turning the module off: the feed URL stops working. Your settings and category mapping stay saved.

For Developers

stackless_product_feed_item changes one item before it is written. It receives the item’s attributes, the product or variation, and the parent product. Return null to leave the item out:

add_filter('stackless_product_feed_item', function ($item, $product, $parent) {
    $item['custom_label_0'] = 'launch';
    return $item;
}, 10, 3);

stackless_product_feed_built runs after each build with the build summary. WP-CLI can build the feed, show its status, or print one product’s item and why it was left out:

wp stackless feed build
wp stackless feed status
wp stackless feed item 123
Share

Was this helpful?

Still stuck? Open a support ticket