
Beslist.nl feed for Shopify
Beslist.nl is the Dutch price-comparison marketplace, and the same feed also lists you on its Flemish sibling Beslist.be. Feedflock turns your Shopify catalog into the XML Beslist expects (comma-decimal prices incl. VAT, one row per size, sold-out items kept in the feed the way Beslist asks) and hosts it on a stable URL that Beslist imports at least four times a day.

Two prices in, and Beslist builds the discount itself.
Beslist reads the current selling price from Prijs and the pre-discount price from prijs_oud (same comma-decimal format for both) and computes the offer badge on its side: “Op beslist.nl wordt automatisch een aanbieding weergegeven op basis van prijs en Prijs_Oud”. Feedflock sends the compare-at price only when it really is higher, because Beslist warns against fictitious old prices. At 0 % the element leaves the feed and the product sells at full price.
Five images reach the feed. Beslist takes thirteen.
Beslist's gallery is not a repeated element but numbered columns, Extra_Image_1 up to Extra_Image_13, each at least 800 × 800 px, on a white background, without watermarks or logos. The feed writes your main image plus four gallery shots; anything beyond the fifth waits on your Shopify until you add the remaining columns.
Catch feed issues before Beslist.nl 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.
Register in the Client Portal
Create your shop account at Beslist. Onboarding ends in a human step: a Beslist employee checks your feed before the first import and gets in touch if something needs adjusting.
Install Feedflock
Add Feedflock from the Shopify App Store. It reads your products, variants, stock and images directly through the Shopify API.
Pick the Beslist template
Create a new feed and choose Beslist. The mandatory columns are mapped from the start: Titel, the comma-decimal Prijs, Deeplink with the ?variant= link, Image, Productcode from the variant SKU, Verzendkosten and Levertijd.
Set shipping, plus fashion fields if you sell apparel
Verzendkosten ships as 0,00, which declares free delivery for your whole catalog and feeds Beslist's total-price sorting. Set your real rate. Selling clothing or shoes? Maat, Geslacht and Variantcode are mandatory there.
Paste the feed URL in the Client Portal
The URL goes to Integratie ▸ Productfeed. Feedflock regenerates the file every hour on the same address. Never change the URL without telling Beslist, or the import stops.
https://feedflock.appfleece.com/f/demo-beslist/beslist.xml
The feed
What the channel receives
<Product> <Titel><![CDATA[Linen shirt Sand]]></Titel> <Omschrijving><![CDATA[A breathable linen shirt in a regular cut.]]></Omschrijving> <Prijs>49,00</Prijs> <Deeplink>https://shop.example/products/linen-shirt-sand?variant=44718293450817</Deeplink> <Image>https://cdn.shop.example/img/linen-shirt-sand.jpg</Image> <Extra_Image_1>https://cdn.shop.example/img/linen-shirt-sand-back.jpg</Extra_Image_1> <Extra_Image_2>https://cdn.shop.example/img/linen-shirt-sand-detail.jpg</Extra_Image_2> <Categorie><![CDATA[Kleding > Heren > Overhemden]]></Categorie> <Merk><![CDATA[Nordlin]]></Merk> <EAN>8594000123453</EAN> <SKU>SKU-2048</SKU> <Productcode>SKU-2048</Productcode> <Verzendkosten>0,00</Verzendkosten> <Levertijd><![CDATA[Op voorraad]]></Levertijd> <Maat><![CDATA[M]]></Maat> <Variantcode>8236409175213</Variantcode> <Kleur><![CDATA[Zand]]></Kleur> <Materiaal><![CDATA[Linnen]]></Materiaal> <Geslacht><![CDATA[Heren]]></Geslacht> <Conditie>Nieuw</Conditie> <Modelcode>NRD-2048</Modelcode> <Weergave>1</Weergave> </Product>

Nordlin
Linen shirt Sand
49 €
Feed fields
Titel
Linen shirt Sand
Omschrijving
A breathable linen shirt in a regular cut.
Prijs
49,00
Deeplink
https://shop.example/products/linen-shirt-sand?variant=44718293450817
Categorie
Kleding > Heren > Overhemden
Merk
Nordlin
EAN
8594000123453
SKU
SKU-2048
Productcode
SKU-2048
Verzendkosten
0,00
Levertijd
Op voorraad
Maat
M
Variantcode
8236409175213
Kleur
Zand
Materiaal
Linnen
Geslacht
Heren
Conditie
Nieuw
Modelcode
NRD-2048
Weergave
1
The channel
One feed, two countries
Beslist.nl and its Flemish sibling Beslist.be read the same file. The only per-country split Beslist documents is a separate shipping-cost column. The template carries it as Verzendkosten_BE.
Sold out does not mean invisible
Unlike most comparisons, Beslist wants the complete assortment: variants, sold-out and temporarily hidden items included. A sold-out size stays listed with “Niet leverbaar”, so shoppers still find the product and come back for it.
Ranked on the total price
Beslist's sorting counts the shipping cost into the total price. An honest Verzendkosten column is a ranking lever, not a formality, and the discount badge is computed from your Prijs and prijs_oud, not from a claim.
The feed
- The Beslist template maps the mandatory set from the start (Titel, Prijs, Deeplink, Image, Productcode, Verzendkosten and Levertijd), ready for the human check Beslist runs before go-live
- Prices in Beslist's exact format: incl. VAT, excl. shipping, comma decimal with two places and no € sign, and prijs_oud goes out only when the compare-at price really is higher
- One Product per variant, each with its own Productcode and ?variant= deep link; sizes of one colour share a Variantcode and colours share a Modelcode, exactly as Beslist's own worked table shows
- Sold-out variants stay in the feed with Levertijd “Niet leverbaar”: Beslist's rule, and the opposite of what most channels want
- The gallery renders as numbered Extra_Image_1…5 elements (never a repeated Image), and Belgium rides along through the Verzendkosten_BE / Levertijd_BE columns when you list there
- The feed review lists every mandatory value that comes out empty (a missing image, an unmapped size) before Beslist's employee sees the file
- A stable hosted URL, regenerated as often as every hour, with fetch tracking that warns you if Beslist stops importing
Deep dive
How Beslist reads your feed
- One
XMLorCSVfile on a public httpsURL(or S-FTP), at most 500 MB - Beslist fetches the full feed at least four times a day and applies price and delivery-time increments in between
- Changes are live within about an hour of a read; a new product appears overnight
- Onboarding ends with a human: “Medewerker checkt de feed”, and the feed
URLmust never change unannounced
Technical details
Beslist pulls your file on its own schedule: a full import at least four times a day, which adds new items and removes the ones no longer in the feed, plus incremental reads in between that pick up only the price and delivery-time rows you changed, live within about an hour. The cap is 500 MB per file, with no stated limit on the number of items.
The first import is gated by a person, not a parser: a Beslist employee checks the feed and contacts you if something needs adjusting. After that, stability is the rule: change the feed URL only in consultation, or the import simply stops. Feedflock hosts the file on a stable URL and regenerates it every hour, so every one of those four daily reads is current.
The columns Beslist calls mandatory
- titel, prijs, product
URL, imageURL, unieke code, verzendkosten and levertijd: without these an item does not go live - Prijs is the full price incl.
BTW, excl. shipping: “1234,56”, two decimals, comma, no currency sign GTIN/EANis 13 digits, mandatory with an exemption for products that genuinely have none- The main image is at least 800 × 800 px, no watermark, and no photo means an empty field, never a placeholder
Technical details
Beslist's mandatory list is short and blunt: title, price, product URL, image URL, a unique code, shipping cost and delivery time, plus GTIN/EAN, with an explicit exemption for products that were never assigned one (though Beslist warns their performance will suffer). The price format is quoted to the character: two decimals behind a comma, no thousands separator, no € or EUR. Shipping is one number, incl. VAT (text like “gratis” is not allowed), and it feeds the total-price sorting.
Two rules in this list cost products. The main image must be at least 800 × 800 px, free of watermarks, logos and promotional text, and if a product has no photo, the field stays empty rather than carrying a placeholder, because a “No Image” URL is on Beslist's own error list. And Conditie becomes mandatory the moment an offer is not new.
Variants the Dutch way: Variantcode and Modelcode
- Every available size goes on its own product row: one row per variant is the rule
- All sizes of one product in one colour share a Variantcode; different colours must not
- All colours of one product share a Modelcode, which is what builds the colour dropdown
- International sizes carry the country code (“41 EU”, not “41”); only feed sizes appear in the size filter
Technical details
For clothing and shoes, Beslist adds three mandatory fields: maat, geslacht and variantcode. Every size is its own row with its own unieke code; the sizes of one colour are tied together by a shared Variantcode, and every colour of one product shares a Modelcode. Beslist's own worked example is a shoe: sizes 41–43 in grey share variantcode 4628-grijs, the red ones 4628-rood, and all of them modelcode 4628.
Details matter here: an international size carries its country code (“41 EU”), and only products whose size is in the feed show up when a visitor filters by size. Sold-out sizes stay in the feed with levertijd “Niet op voorraad” or weergave 0, so the variant structure never breaks.
No prescribed tag names: a mapping conversation
- Beslist's documentation speaks of columns, never of tags: it maps whatever names arrive
- An existing Google Shopping feed is a supported route; Beslist's own WooCommerce guide recommends the Google template
- A wrong element name is a conversation with their team, not a silent drop like on Heureka or Zboží
- The category is your shop's own full path, and Google Shopping category names are also accepted
Technical details
The single most unusual fact about this channel: Beslist does not prescribe element names. Its pages list the columns by meaning and a person wires your feed up, so a differently named field is a mapping conversation, not the silent drop it would be on Heureka or Zboží. Their own guides even offer “use your existing Google Shopping feed” as a route.
The same holds for categories: you send your shop's own full category path (“Vermeld altijd de volledige categorisatie”) and Beslist places the products automatically. Google Shopping category names, spelled out, are also accepted. Feedflock sends your product type by default, and a catch-all like “Sale” is exactly what their examples warn against.
The takeaway
One URL, an hourly refresh and a template that already speaks Beslist's language: comma-decimal prices, one row per size, and sold-out items that stay listed instead of disappearing. Your Shopify catalog stays the single source of truth, and Beslist's four daily imports always read its current state.
Claude · ChatGPT
Or set up your Beslist.nl feed in chat
Connect Feedflock to Claude or ChatGPT and ask. It creates the feed as a draft, maps your categories to Beslist.nl's own tree and tells you what is still missing. You approve every change.
Create a Beslist.nl 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
Related feeds
Explore all 101 channelsGet on every marketplace that matters this afternoon.
Install free, connect your first feed in minutes, and let Feedflock keep it fresh and validated.