Technical guide

Your product feed after the euro. What Merchant Center rejects, and why.

Bulgaria switched currency in January. Most product feeds were built before that, and the price attribute is the single most enforced field in Merchant Center. This is the one place a Bulgarian store is most likely to fail a check nobody warned it about.

Magnet Minds 23 August 2026 9 min read

A product feed is a file, or a live connection, that hands Google your catalogue: what each product is called, what it costs, whether it is in stock, and where the picture lives. Shopping ads are built entirely from it. Get it wrong and you do not get a bad ad, you get no ad at all.

Most guides about feeds are written for markets that have had Shopping for a decade. Bulgaria has a complication none of them cover, and it is currently the most likely reason a Bulgarian feed fails.

The euro problem nobody wrote a guide for

Bulgaria adopted the euro on 1 January 2026. Since 1 February the euro has been the sole legal tender, at a fixed rate of 1 EUR = 1.95583 BGN. The mandatory dual-pricing period, where shops had to display both, ran until 8 August 2026. That deadline has now passed.

This matters for feeds in three specific ways, and they are all silent failures.

The three ways this breaks a feed

1. Currency mismatch. The feed declares BGN, the landing page now shows EUR. Merchant Center compares the two and disapproves the product. The feed is not "wrong" in any way the platform will warn you about beforehand.

2. Rounding drift. A price converted from lev at 1.95583 rarely lands on a clean number. If the shop rounds for display and the feed carries the unrounded figure, the two do not match and the item is rejected. A cent of difference is enough.

3. Leftover dual pricing. Plenty of shops still render both currencies in the price element because it was a legal requirement for a year. Scrapers and structured-data checks can read the wrong one.

The fix is unglamorous: make one currency the source of truth in the platform, let everything else derive from it, and confirm the feed and the page agree to the cent. If you did the changeover by editing prices in bulk rather than switching the store currency properly, that is where to look first.

Connecting the feed

You almost never build a feed by hand. Where it comes from depends on the platform:

  • Shopify - the Google & YouTube channel app syncs the catalogue directly. Least work, and the sync handles updates automatically.
  • WooCommerce - a feed plugin generates an XML file at a fixed URL, which you register in Merchant Center as a scheduled fetch.
  • OpenCart and Magento - extension-generated XML, same scheduled-fetch pattern.
  • Custom build - you produce the XML or a Google Sheet yourself and either schedule a fetch or push via the Content API.

Whichever route, set the refresh to at least daily. Feeds fetched weekly go stale between updates, and every stale price is a disapproval waiting to happen.

Want us to check the feed before Google does?

Send the store link. We will tell you what would be rejected, including the currency issues above, before the format goes live in Bulgaria. No pitch, no obligation.

Get my feed checked Or email the link to [email protected]

Fields that are genuinely required

Miss any of these and the product does not appear at all:

  • id - unique and stable. Do not recycle IDs between products, and do not let it change when the product is edited.
  • title - what the customer sees and what Google matches against. Brand, product type, then the distinguishing attribute.
  • description - real detail. Google reads it, customers rarely do.
  • link - the product page, working, on the domain claimed in Merchant Center.
  • image_link - product on a plain background, no text or badges burned in.
  • availability - in stock, out of stock or preorder, matching reality.
  • price - in euro, matching the landing page to the cent, VAT included.

Fields that are optional and still decide whether you win

These are not required, which is exactly why most catalogues skip them and then wonder why they show less often than competitors.

  • gtin - the barcode. It is how Google knows your product is the same one three other shops sell, which is what lets you appear in comparisons at all. Never put a SKU here.
  • brand - required in practice for anything branded, even though the spec is softer.
  • google_product_category - Google's own taxonomy. Left empty, Google guesses, and it guesses badly for furniture, cosmetics and anything niche.
  • product_type - your own category path. Useful for structuring campaigns later, so fill it now.
  • shipping - can be set in the feed or in Merchant Center. One or the other must exist and must match the checkout.
  • sale_price - use this for promotions rather than overwriting price, so the strike-through renders and the comparison stays honest.
A feed with every required field will technically pass. A feed with the optional ones filled is what actually shows up.

Checking it before Google does

The diagnostics tab in Merchant Center tells you what was rejected, but only after the fetch. These checks catch most of it beforehand:

  1. Pick three products at random and compare feed price to page price to the cent, with VAT. If any differ, the problem is systemic, not a one-off.
  2. Search your own feed for "BGN" or for a lev symbol. There should be no hits.
  3. Open five product images at full size. Any badge, watermark or promotional text means rejection.
  4. Count how many items have a real GTIN rather than a SKU pasted into the field. This one is usually worse than people expect.
  5. Load three product pages on a phone on mobile data, not office wifi. Google checks the destination and a page that fails there fails the review.
  6. Confirm the returns policy and contact details are visible on the site itself, not buried in terms.

None of this is difficult. It is just specific, and it takes longer than anyone plans for, which is the entire argument for starting before the format opens rather than the week it does. Once the feed is clean, the next question is what to actually launch on day one. The wider timeline is in the preparation guide, and we track the launch date on a separate page.

Questions

Euro. The euro has been Bulgaria's sole legal tender since 1 February 2026 and the mandatory dual-pricing period ended on 8 August 2026. The feed must declare EUR and match the landing page exactly, VAT included.

It matters if the feed and the page disagree after rounding. Conversion at 1.95583 rarely produces clean numbers, and if the shop rounds for display while the feed carries the raw figure, Merchant Center sees a mismatch and disapproves. Make one value the source of truth and derive the rest.

Not to pass validation, but effectively yes to compete. GTIN is how Google matches your product to the same product in other shops. Without it you are far less likely to be shown, and you cannot appear in the comparisons where Shopping does its best work. Own-brand products with no barcode are the legitimate exception.

Daily at minimum. If you run promotions, more often. Almost every price-mismatch disapproval traces back to a feed that updated more slowly than the shop did.

Yes, and that is the point. Merchant Center accounts, website claiming, feed connection and error clearing are all available now and none of them depend on Shopping being live in the market.

Get the feed clean while there is still time.

A 30-minute call. We look at your catalogue, tell you what Merchant Center would reject today, and what it takes to fix it.

Book the callNo payment, no obligation. You keep the findings either way.
Book WhatsApp Call now