How to solve Offer not found issue while uploading the local inventory feed.

If Google Merchant Center reports “offer not found” (or “no offers found” / “offer does not exist”) when you upload your local inventory feed, the feed itself is fine — the problem is that the items it describes have no matching product to attach to. This guide explains the relationship between a primary product feed and a local inventory feed, why the error happens, and exactly how to fix it in CTX Feed so your in-store availability data links up correctly.

Why this error happens

A Local Inventory Ads setup in Google Merchant Center uses two feeds that work together:

  • The primary product feed describes each product — title, description, price, images, and the all-important product id. This is your normal Google Shopping feed.
  • The local inventory feed describes store-level data only — for each store_code, the item’s local price and quantity. It does not re-describe the product. Instead, it links back to the primary feed by matching the id.

“Offer not found” means Google received a local inventory row for an id that has no matching offer in a processed primary feed for the same country and language. The local feed is pointing at a product Google does not (yet) have on file.

The usual causes

  • The primary feed was not uploaded or processed first. The local feed was submitted before the product feed existed or finished processing.
  • The id values do not match between the two feeds. Out of the box both CTX Feed templates send the WooCommerce product ID as id, so they match. They stop matching if you remapped id in one feed only (for example to the SKU) or added a prefix or suffix to one of them.
  • The two feeds export variations differently. If one feed uses All Variations (each variation’s own ID) and the other Variable Products (Parent) (the parent’s ID), the variation IDs exist in only one of them.
  • Country or language mismatch. The primary feed targets one country/language and the local feed targets another, so Google looks for the offer in the wrong catalog.
  • The products are disapproved or expired in the primary feed, so there is no active offer to attach to.
  • store_code does not match the store codes registered in your Google Business Profile / Merchant Center store list.

How to fix it in CTX Feed

Work through these in order.

  1. Create and upload the primary Google Shopping feed first. In CTX Feed, build a Google Shopping feed on the Make Feed screen, generate it, and submit its feed URL to Merchant Center. Let Merchant Center fully process it before you touch the local feed. (See How to upload WooCommerce product feed to Google Merchant Center.)
  2. Build the local inventory feed with the Google Local Product Inventory template. Pick Google Local Product Inventory in the Template dropdown — not Google Local Inventory Ads, which is a different, product-level feed without a store_code row. The template pre-maps store_code, id, quantity, price, sale_price, availability and the pickup fields; the required ones are id, store_code, quantity, and price.
  3. Make the id match the primary feed exactly. This is the fix for most “offer not found” cases. Both templates start with id mapped to Product Id, so if you haven’t changed either, they already match. If you changed the primary feed’s id (for example to the SKU) or added a prefix, make the local feed’s id row identical. Also set Include variations to the same option in both feeds.
  4. Set store_code to your real store codes. The store_code row starts empty, so fill it in. The values must match the store codes you registered for your physical stores in Merchant Center / Google Business Profile.
  5. Match country and language. Configure the local feed for the same country and language as the primary feed so Google looks for the offers in the right catalog.
  6. Confirm products are approved. In Merchant Center, make sure the products in your primary feed are approved (not disapproved or expired). A row can only link to an active offer.
  7. Re-upload the local inventory feed and re-check the diagnostics. Give Merchant Center time to re-process; the “offer not found” items should resolve once the ids match approved offers.

Tips and troubleshooting

  • Match on id, not title. Google links the two feeds strictly by id. Identical product names are not enough — the id strings must be character-for-character identical.
  • Regenerate after any change. After you adjust the id mapping or store_code, regenerate the feed in CTX Feed so the file Google fetches reflects the change, then re-submit.
  • Only some items fail? The mismatch is item-specific — usually those products are missing from the primary feed, disapproved, or have a different id. Compare the failing id values across both feeds.
  • Local inventory is a program you enable. “Offer not found” can also appear if the Local Inventory Ads / free local listings program is not set up for your account. Confirm the program and your store list are configured in Merchant Center.
Try CTX Feed for WooCommerce - Free Download or Upgrade to Pro

Leave a comment.