Microsoft Shopping campaigns run on the same kind of file as Google Shopping, and Microsoft says so out loud: its feed documentation accepts Google-formatted feed files and ships a one-click tool that pulls your catalogue straight out of Google Merchant Center. For a store that already has a Google feed, this is the cheapest channel left to add — and Romania is on the supported market list, alongside most of Europe.
The catch is that “accepts Google's format” is not the same as “behaves like Google”. A handful of attributes are read and quietly ignored, the price rules differ by country, and every offer you upload expires after 30 days whether you notice or not. This guide is the difference list.
Before the feed: claim the domain
You cannot create a Microsoft Merchant Center store until Microsoft agrees the website is yours. There are two routes (Microsoft's verification article): verify the URL in Bing Webmaster Tools, or, if you already have a Universal Event Tracking tag on the site, select “Validated via UET tag”. The UET route has a waiting period worth planning around — the tag has to register at least 50 events, and the domain can take another 48 hours to appear in the list.
The destination URL you claim then constrains the whole feed: every link must be a sub-path of that URL or of a subdomain of it. Product URLs on another domain are rejected, which is also the usual cause of the “store domain mismatch” error when importing from Google.
Two ways in, and the one most stores should take
The Google Merchant Center import tool signs into your Google account and copies the offers across, on demand or on a daily, weekly or monthly schedule (Microsoft's import article). It imports everything — including pending and disapproved offers — but only online offers, only Shopping destinations, and only for markets Microsoft supports. Local-channel products are skipped. There is a find-and-replace for tracking parameters in the URL, which is how you stop Google's utm values from attributing Bing clicks to Google.
Your own feed is the other route, and the one to take if your Google feed is itself generated rather than hand-kept — importing a copy of a copy adds a day of staleness for nothing. Microsoft accepts a tab-delimited text file, or XML if it is Google-formatted; there is no Microsoft XML schema of its own. The file rules are strict enough to be worth a checklist (feed file article):
- Tab-delimited plain text:
TXT,ZIP,GZ,GZIP,TAR.GZ,TGZ. XML only if Google-formatted. - File name: no spaces, 50 characters maximum, and for FTP it must match the name set in the feed's settings. An archive must contain exactly one file.
- One header row, one offer per line, no HTML, no trailing tabs, no tabs or line breaks inside a value.
- Manual upload under 4 MB; FTP/SFTP under 1 GB (3 GB uncompressed); fetch-from-URL under 1 GB, downloaded once every 24 hours.
One line in that article decides your architecture: fetch-from-URL is the only method with built-in scheduling. Manual uploads and FTP have to be scheduled by something you run yourself. There is also a Content API if you would rather push than be pulled.
The required attributes
Six fields are required for every offer, plus the identifiers (Microsoft's product attributes reference). The header row of a minimal feed:
id title description link image_link price brand gtin mpn SKU-1234 Acme Trail Jacket Men Blue L Waterproof shell… https://shop.example/p/trail-jacket https://cdn.example/trail-jacket.jpg 489.99 RON Acme 8590000000012 ACM-TJ-BL-L
title— 150 characters, no all-caps, no promotional text.description— up to 10,000 characters, no HTML, no promotional text, and it must be the description on the landing page.image_link— one image only; bmp, gif, exif, jpg, png or tiff; minimum 220×220 px, or 250×250 px for clothing and shoes; under 16 MB; no watermarks or shipping text. Extra angles go inadditional_image_link, up to ten, comma-separated.link— HTTP(S), no redirects. If you need one, put it inads_redirect, a Microsoft-only field.price— number plus an ISO 4217 currency code, two decimals, no symbol:489.99 RON. Auction prices are not allowed.shipping— required in Austria and Germany only, and ignored everywhere else.
Identifiers follow the same logic Google uses: send gtin, brand and mpn where the manufacturer assigned them, brand and mpn for own-brand goods, and identifier_exists=FALSE for handmade or vintage items with none of the three. If you have been putting that off for Google, the barcode guide applies here unchanged.
What Microsoft reads from a Google feed — and what it drops
Microsoft publishes the full mapping (what Google feed file attributes can I use), where each Google attribute is either used or “accepted but ignored”. The ignored column is the interesting one:
tax,shipping,shipping_weight— not used, except in Germany, where shipping is required and read.loyalty_points— not used.- Google's
installment— not used. Microsoft has its owninstallmentfield, but only for mobile phones and tablets; for every other category it is discarded. excluded_destination— not used from a Google feed, though it exists as a native Microsoft field. If you rely on it to keep certain products out of Shopping, check after the first import that they really are out.product_typeloses its multiple values. Google accepts several; Bing treats the comma-separated string as one value, so an auto-target has to exact-match the whole string. This is the one that silently breaks campaign structure copied over from Google.
One more worth a look rather than an assumption: Microsoft's own attribute list documents all five custom labels, while the table of Google attributes lists custom_label_0, 1, 2 and 4. If your campaign filters hang off custom_label_3, verify it arrived after the first import instead of trusting it did.
Prices, VAT and the mismatch rule
Microsoft's feed tax policy names the countries where tax must be inside the price — Australia, Germany, France, the United Kingdom — and the United States, where it must be outside. Romania and most of the rest of the EU are not in that table, which is not permission to improvise: the binding rule sits in the price field itself, where the price in the feed must be the price on the landing page. Romanian stores display VAT-inclusive prices, so the feed carries VAT-inclusive prices. Same reasoning, same failure mode, as a Google price mismatch.
sale_price and sale_price_effective_date are both read. Send them together — a sale price without an end date keeps applying.
The 30-day expiry nobody plans for
This is the failure we see most on this channel, and it is documented in three places at once. A feed expires after 30 days and its products stop publishing. The expiration_date attribute caps out at 30 days from upload and defaults to 30 days if you omit it. Offers brought in by the Google import tool expire after 30 days too, so a one-time import empties itself a month later. Microsoft's own recommendation is to upload daily.
The practical consequence: an uploaded-once catalogue looks perfect for four weeks and then goes to zero with no error to explain it. Either schedule a recurring Google import, or use fetch-from-URL against a feed URL that regenerates itself.
Review times, and what re-triggers a review
A submitted file usually finishes processing in minutes, though a large one can take hours. Editorial review takes up to 24 hours; if an offer fails the first pass it goes to a second review of up to three business days. What catches people out is that this is not a one-time cost: editing an existing item's title, description, price, availability, image URL, brand or product URL sends it back to pending review. Price and availability updates process in up to 24 hours, shipping updates in up to eight. Deleting a product can take 12 hours, which is why Microsoft advises setting availability to out of stock first.
availability accepts in stock, out of stock and preorder, and defaults to in stock when empty — so a blank column publishes your entire out-of-stock range. condition defaults to new the same way.
Supplemental feeds have a short field list
You can override fields in the primary feed without rebuilding it, matched on feed label, language and product ID. But only seven fields are supported: product ID, the five custom labels, title, description, promotion ID, size and colour. You cannot add or remove products this way, only modify them — anything else, including price and availability, belongs in the primary feed.
Selling into more than one country
A single feed can target several countries, set through the feed label or country of sale plus a default currency. Microsoft converts the currency at serve time and shows the converted amount with the country of sale's amount in brackets — but only if your feed carries currency codes in the price field or the feed settings. The countries in the feed have to match the campaign's location targets, or the products are ineligible in the places they were meant for.
How FeedRobin handles it
Microsoft Merchant Center is served from the same product data as your Google feed, which is the whole point of the channel: one catalogue, one set of barcodes and prices, rendered to the format Microsoft accepts and kept inside the rules above — VAT-inclusive prices matched to the landing page, a single image_link with the rest as additional images, redirects moved into ads_redirect, and a feed URL that regenerates so the 30-day expiry never arrives. If you would rather use the Google import tool, that works too; schedule it rather than running it once.
To see what Microsoft would make of the feed you already have, paste it into the free feed check — missing barcodes, images below the minimum size and descriptions that fail review are the same problems on both channels.
Sources
Microsoft Advertising documentation: What is Microsoft Merchant Center?, creating and organizing feed files, product attributes, what Google feed file attributes can I use, importing from Google Merchant Center, the feed tax policy, verifying and claiming your website, Product ads and market availability, and the Content API catalogues reference. Google's product data specification is the format all of the above is measured against.