
Microsoft Shopping feed for Shopify
Microsoft Shopping campaigns put your products on Bing and across the Microsoft Advertising Network. The feed borrows Google's attribute names but follows Microsoft's own rules, and the differences are where offers get rejected. Feedflock turns your Shopify catalog into the tab-delimited file Microsoft Merchant Center fetches, with those rules already applied, and regenerates it every hour.

Germany and Austria require a shipping column.
Microsoft reads the shipping column as country : service : price, a bare number, no currency, 0 means free. For feeds targeting Germany or Austria the column is mandatory; everywhere else it is optional.
Catch feed issues before Microsoft Bing does.
Before every generation Feedflock checks that every field the channel requires is filled, and, on templates verified against the channel's own spec, that the values fit its rules. Most problems are fixed with one click, without editing products in Shopify.
Setup
Live in five steps
From a bare Shopify store to a listed offer: the whole setup fits into one coffee break.
Create a Microsoft Merchant Center store
In Microsoft Advertising, create a Merchant Center store and verify your domain. The store is approved before it can serve, and a new store link can take up to three business days to review. Product links must be on the same domain and must not sit behind a password page.
Install Feedflock
Add Feedflock from the Shopify App Store. It reads your products, variants, stock and images directly through the Shopify API.
Pick the Microsoft Shopping template
Create a new feed and choose Microsoft Shopping (Bing). id, title, description, link, image_link, price, availability and brand are mapped already, with gtin from the Shopify barcode, item_group_id from the product and color and size from your variant options.
Add what Shopify can't supply
Selling to Germany or Austria? Type the shipping column once, for example DE:Standard:4.90. For handmade or custom goods with no GTIN, brand or MPN, set identifier_exists to FALSE.
Register the feed URL
In Merchant Center, add the feed by URL on a daily, weekly or monthly schedule. Microsoft downloads a hosted file once every 24 hours. On a new feed, the “Use feed for testing only” switch validates it without serving ads.
https://feedflock.appfleece.com/f/demo-bing/bing.txt
The feed
What the channel receives
id title description link image_link price availability brand condition google_product_category item_group_id size 46012345678901 Linen shirt Sand M Breathable linen shirt with a relaxed regular fit. https://shop.example/products/linen-shirt-sand https://cdn.shop.example/img/linen-shirt-sand.jpg 49.00 EUR in stock Nordlin new Apparel & Accessories > Clothing > Shirts & Tops 8812345678901 M

Nordlin
Linen shirt Sand
49 €
Feed fields
id
46012345678901
title
Linen shirt Sand M
description
Breathable linen shirt with a relaxed regular fit.
link
https://shop.example/products/linen-shirt-sand
price
49.00 EUR
availability
in stock
brand
Nordlin
condition
new
google_product_category
Apparel & Accessories › Clothing › Shirts & Tops
item_group_id
8812345678901
size
M
The channel
More than Bing
Shopping ads and Performance Max run across the Microsoft Advertising Network (Bing, Yahoo, DuckDuckGo and Microsoft Start) from a single Merchant Center catalog.
The catalog behind Copilot shopping
Microsoft's in-chat checkout in Copilot builds on a Merchant Center account and its product feed. The feed you send for Shopping ads is the same one.
Google's names, Microsoft's rules
Microsoft reads Google's attribute names, so the structure feels familiar. The rules differ, though: no backorder, availability spelled with spaces, identifier_exists as TRUE or FALSE, shipping required for Germany and Austria.
The feed
- The Microsoft Shopping template maps id, title, description, link, image_link, price, availability and brand, plus gtin, item_group_id, color, size and the category
- Tab-delimited .txt exactly as Microsoft asks: one header row, no quotes, no trailing tabs, and tabs or line breaks inside a value flattened so no row breaks
- Prices go out as number, space and ISO currency code; a compare-at price splits into price plus sale_price
- Availability is always sent, from Shopify's own stock status. An omitted value would be read as in stock and advertise sold-out variants
- identifier_exists speaks Microsoft's TRUE/FALSE, with an option that derives it from the barcode and vendor
- Categories from Google's taxonomy, which Microsoft uses with the same IDs; products with a Shopify category map automatically
- Every generation lists required columns that came out empty, such as a product with no image or no brand
- Fetch tracking shows when Microsoft last downloaded the feed and alerts you if it stops
Deep dive
A tab-delimited file, fetched daily
- Tab-delimited plain text:
TXT, or aZIP, GZ orTAR.GZ archive of one - A header row of attribute names, no quotes around values, no
HTMLanywhere - A hosted
URLis downloaded once every 24 hours; manual uploads are capped at 4 MB - Items expire 30 days after the last upload, so a stale feed takes your ads down
Technical details
Microsoft Merchant Center reads a tab-delimited plain-text file (TXT, or a ZIP, GZ or TAR.GZ archive of one) with a single header row, no quotes around values and no HTML. A file that breaks these rules is not processed at all. A hosted URL is downloaded once every 24 hours on the daily, weekly or monthly schedule you set; manual uploads are capped at 4 MB.
Feedflock renders exactly this layout and hosts it on a stable URL, regenerating it every hour. Items expire 30 days after the last upload, so a feed that stops refreshing takes your ads down with it. Fetch tracking shows Microsoft's last download and warns you when it stops.
Google's names, Microsoft's rules
- Availability knows only in stock, out of stock and preorder, no backorder
- An omitted availability silently means in stock, so the template always sends it
- identifier_exists is
TRUEorFALSE, not yes or no; descriptions run to 10,000 characters - Categories come from Microsoft's copy of Google's taxonomy, as a full path or a numeric ID
Technical details
The column set mirrors a Google feed (Microsoft accepts and uses Google's attribute names), but the details are Microsoft's. Availability knows only in stock, out of stock and preorder, spelled with spaces, and there is no backorder; an omitted value silently means in stock, which is why the template always sends it. The description may run to 10,000 characters where Google stops at 5,000, and identifier_exists is TRUE or FALSE rather than yes or no.
Microsoft's category list is Google's product taxonomy as of September 2021, with the same IDs. The template sends it in Google's google_product_category column, which Microsoft reads as its own product_category: a full path separated by >, or the numeric ID, which survives renames and works in any language.
Identifiers and variants
- Send gtin, brand and mpn where the manufacturer assigns them
- Products with none of the three (handmade, custom, antique) carry identifier_exists
FALSE - Your own
SKUis not anMPN, so the template leaves mpn empty unless you map one - Variants share item_group_id and send at least one variant attribute, such as size
Technical details
Microsoft wants all three identifiers for products that have a GTIN, brand plus mpn for products without one, and identifier_exists set to FALSE for goods that have none of the three (handmade, custom or antique), so the missing codes are not held against them. MPNs are assigned by the manufacturer, so the template leaves mpn empty rather than sending your SKU.
Variants of one product share item_group_id (up to 50 characters and different from id), and the group must carry at least one variant attribute; the template fills color and size from your Shopify options. Titles cap at 150 characters, and Microsoft recommends naming colour or size in the title, which the default product-plus-variant title does.
Prices, tax and shipping
- Price is a number with two decimals, a space and the
ISO4217 code: 23.99USD VATis included for Australia, Germany, France and the UK; US prices exclude sales tax- Shipping is country:service:price with a bare number: DE:Standard:4.90, or 0 for free
- Germany and Austria require it; every price or stock change is re-reviewed within 24 hours
Technical details
Price is a number with two decimals, a space and the ISO 4217 code (23.99 USD), and must equal the landing-page price, which Microsoft verifies. Microsoft's tax policy covers five countries: VAT included for Australia, Germany, France and the United Kingdom, sales tax excluded for the United States. Feedflock sends the price exactly as your Shopify storefront shows it.
Shipping is one or more country:service:price groups with a bare number and no currency, such as DE:Standard:4.90, or 0 for free shipping. It is required for feeds targeting Germany or Austria and optional elsewhere; you type it once in the shipping mapping. Microsoft has no free-above-a-threshold attribute. Every change to price or availability puts the item back into review for up to 24 hours.
The takeaway
One URL, an hourly refresh and a tab-delimited file that already follows Microsoft's rules rather than Google's. Your Shopify catalog stays the single source of truth, and Microsoft's daily download always reads its current state.
Claude · ChatGPT
Or set up your Microsoft Bing feed in chat
Connect Feedflock to Claude or ChatGPT and ask. It creates the feed as a draft, maps your categories to Microsoft Bing's own tree and tells you what is still missing. You approve every change.
Create a Microsoft Bing feed for my store and map my categories.
I'll create it as a draft and show you each change before I make it.
FAQ
Get on every marketplace that matters this afternoon.
Install free, connect your first feed in minutes, and let Feedflock keep it fresh and validated.