Skip to content
Beslist.nl
Price comparison

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.

01 · ShopifyProduct in the catalog
Linen shirt SandNordlin · Men's shirtsSKU-2048 · S–XL
Price
49 €
In stock
0 pcs
When out of stock
02 · beslist.xmlUpdated just now
<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[Niet leverbaar]]></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>
−20% off compare-at
Productprijs_​oudPrijs
Linen shirt Sand49.00 €39.20 €
Mug Fjord 350 ml15.00 €12.00 €
Backpack Ridge 28 l75.00 €60.00 €
Soy candle Les14.00 €11.20 €
Wool scarf Fjell29.00 €23.20 €
36.40 €saved across these products
5 / 5products carrying an offer
Sale prices

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.

7 images per product
1
In the feed
2
In the feed
3
In the feed
4
In the feed
5
In the feed
6
No column yet
7
No column yet
5images in the feed
2without a column today
Image gallery

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.

Feed health

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.

Feed quality · beslist.xml
76 / 100
To review: 4
No main image on 5 productsImage is mandatory, and Beslist's rule for a missing photo is an empty field, never a placeholder. These products have no image in Shopify, so the feed reports them instead.
Verzendkosten still 0,00 across the catalogThe shipping column defaults to 0,00, a claim of free delivery that Beslist counts into its total-price sorting. If you charge for shipping, set the real rate.
Clothing rows without Maat on 9 variantsMaat, Geslacht and Variantcode are mandatory for clothing and shoes, and only sizes present in the feed appear when visitors filter Beslist by size.
Sold-out variants dropped from the feed (4)Beslist asks for the complete assortment: keep the rows and mark them Levertijd “Niet leverbaar” or Weergave 0 instead of filtering them out.

Setup

Live in five steps

From a bare Shopify store to a listed offer: the whole setup fits into one coffee break.

  1. 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.

  2. Install Feedflock

    Add Feedflock from the Shopify App Store. It reads your products, variants, stock and images directly through the Shopify API.

  3. 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.

  4. 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.

  5. 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

beslist.xml
<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>
Live preview
Linen shirt Sand

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

01

How Beslist reads your feed

  • One XML or CSV file on a public https URL (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 URL must 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.

02

The columns Beslist calls mandatory

  • titel, prijs, product URL, image URL, 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/EAN is 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.

03

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.

04

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.

feedflock · mcp

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

Only for products that have one. Beslist lists GTIN/EAN among the mandatory fields but explicitly exempts products that were never assigned a code: a barcode-less catalogue is legal. If a GTIN does exist and you leave it out, Beslist warns the product's performance can suffer. The code is 13 digits; Feedflock fills it from the Shopify barcode.
They stay in the feed, the opposite of Heureka's rule. Beslist asks for the complete assortment, variants and sold-out items included, marked with Levertijd “Niet leverbaar” or Weergave 0. Feedflock's default does exactly that; filtering sold-out products out is possible, but it is not what Beslist wants.
You send two prices: the current selling price in Prijs and the pre-discount price in prijs_oud, both in the comma-decimal format. Beslist computes and shows the offer itself, and warns against fictitious old prices. Feedflock emits prijs_oud from the Shopify compare-at price only when it really is higher, so a sale you set in Shopify appears on Beslist by itself.
Yes, one feed serves both beslist.nl and beslist.be. The only per-country split Beslist documents is a separate shipping-cost column per country, which the template carries as Verzendkosten_BE and Levertijd_BE. An NL-only feed simply omits them.
No. Beslist's documentation speaks of columns, not tags, and its team maps your feed by hand before the first import. A Google Shopping feed is an explicitly supported route. Feedflock's template uses the vocabulary of the long-standing Beslist XML convention (Titel, Prijs, Deeplink…), which their side maps without any action from you.
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. Feedflock regenerates the file every hour on a stable URL, so each read picks up current data.

Get on every marketplace that matters this afternoon.

Install free, connect your first feed in minutes, and let Feedflock keep it fresh and validated.

.myshopify.com