Skip to content
Kelkoo
Price comparison

Kelkoo feed for Shopify

Kelkoo Group runs comparison-shopping sites in 25 countries, from kelkoo.co.uk to kelkoo.cz, all fed by one product-data format. Feedflock turns your Shopify catalog into the XML that format documents: ten required attributes per offer, one product per variant, numeric availability codes and a flat delivery cost, hosted on a stable URL that Kelkoo fetches on a per-country timetable, as often as 14 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 · kelkoo.xmlUpdated just now
<product>
<id>SKU-2048</id>
<title><![CDATA[Linen shirt Sand M]]></title>
<price>49.00</price>
<description><![CDATA[A breathable linen shirt in a regular cut.]]></description>
<brand>Nordlin</brand>
<gtin>8594000123453</gtin>
<sku>SKU-2048</sku>
<availability>5</availability>
<currency>EUR</currency>
<color>Sand</color>
<product_url>https://shop.example/products/linen-shirt-sand?variant=9087654322</product_url>
<landing_page_url>https://shop.example/products/linen-shirt-sand</landing_page_url>
<merchant_category>Apparel &gt; Men &gt; Shirts</merchant_category>
<image_url>https://cdn.shop.example/img/linen-shirt-sand.jpg</image_url>
<delivery_cost>4.99</delivery_cost>
<delivery_time>2 to 5 days</delivery_time>
</product>
Category mapping

Your product types. The channel's categories.

The channel files offers under its own category tree. Feedflock suggests a category for each Shopify product type and you just confirm. One mapping covers every product of that type, including products you add later.

Full category path in the feed
One mapping per product type
Override per individual product
Shopify typeproducts
Channel category
Men's shirts
Catalog coverage79 %
4 images per product
1
In the feed
2
In the feed
3
In the feed
4
No slot
3images in the feed
1without a slot
Image gallery

Three extra image slots. The fourth stays in Shopify.

Kelkoo takes a main image plus exactly three additional ones (image_url_2, image_url_3 and image_url_4), and each must show a different picture. Every image needs at least 300 × 300 px, no watermarks or promotional text, and a fresh image takes up to 72 hours to appear on Kelkoo.

Feed health

Catch feed issues before Kelkoo 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 · kelkoo.xml
76 / 100
To review: 4
No delivery cost entereddelivery_cost is required and Kelkoo warns the product may not be displayed without it. The template leaves it empty on purpose, because 0 would declare free shipping.
Missing GTIN on 14 offersEvery product with a manufacturer barcode needs its gtin: 8, 12, 13 or 14 digits. Kelkoo keys its own product pages on GTIN.
Variant titles without size or colour on 9 offersKelkoo wants every variant to carry a distinguishing feature in the title: colour or size. The template's default appends the variant title.
Category path too short on 7 offersmerchant_category must be your full path: Men > Men's Shoes > Casual Shoes, not just Shoes. A generic path degrades placement silently.

Setup

Live in five steps

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

  1. Sign up with Kelkoo Group

    Kelkoo works through an account manager, not a self-serve form: you register as an advertiser, set up a campaign per country and hand over the URL of your feed. Password protection or an IP allowlist is arranged on request.

  2. Install Feedflock

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

  3. Pick the Kelkoo template

    Create a new feed and choose the Kelkoo template. id, title, description, both URLs, image, price, availability and your category path are mapped from the start: one product per variant, with the variant named in the title.

  4. Enter your delivery cost

    delivery_cost is required and Shopify has no per-product shipping price, so the template deliberately leaves it empty until you enter your real rate, since 0 declares free home delivery.

  5. Hand over the feed URL

    Give the hosted feed URL to your Kelkoo account manager and keep it stable: the file name must stay the same over time. Kelkoo fetches it on the country's timetable; Feedflock regenerates it every hour on the same address.

    https://feedflock.appfleece.com/f/demo-kelkoo/kelkoo.xml

The feed

What the channel receives

kelkoo.xml
<product>
  <id>SKU-2048</id>
  <title><![CDATA[Linen shirt Sand M]]></title>
  <price>49.00</price>
  <description><![CDATA[A breathable linen shirt in a regular cut.]]></description>
  <brand>Nordlin</brand>
  <gtin>8594000123453</gtin>
  <sku>SKU-2048</sku>
  <availability>1</availability>
  <currency>EUR</currency>
  <color>Sand</color>
  <product_url>https://shop.example/products/linen-shirt-sand?variant=9087654322</product_url>
  <landing_page_url>https://shop.example/products/linen-shirt-sand</landing_page_url>
  <merchant_category>Apparel &gt; Men &gt; Shirts</merchant_category>
  <image_url>https://cdn.shop.example/img/linen-shirt-sand.jpg</image_url>
  <delivery_cost>4.99</delivery_cost>
  <delivery_time>2 to 5 days</delivery_time>
</product>
Live preview
Linen shirt Sand

Nordlin

Linen shirt Sand

49 €

Feed fields

id

SKU-2048

title

Linen shirt Sand M

price

49.00

description

A breathable linen shirt in a regular cut.

brand

Nordlin

gtin

8594000123453

sku

SKU-2048

availability

1

currency

EUR

color

Sand

product_url

https://shop.example/products/linen-shirt-sand?variant=9087654322

landing_page_url

https://shop.example/products/linen-shirt-sand

merchant_category

Apparel > Men > Shirts

delivery_cost

4.99

delivery_time

2 to 5 days

The channel

One format, 25 country sites

A single product-data format serves the whole Kelkoo Group family: 23 European countries plus Brazil and the UAE, kelkoo.cz included. The country decides the currency, language and fetch schedule, not the vocabulary, and the group reports 10,000+ advertisers across 29 markets.

A comparison engine and a CSS in one

Kelkoo Group sells more than its own sites: it runs managed Google and Bing CSS campaigns alongside the Kelkoo Group Shopping Network. The feed you send can fuel Shopping ads as much as the comparison listing itself.

Identifiers feed the matching

Kelkoo's own product pages are keyed on GTIN, and the spec is direct about why identifiers matter: when Kelkoo understands what you sell, it can boost the performance of your campaigns. A gtin, an mpn with the brand, and a full category path are what get you matched.

The feed

  • All ten required attributes (id, title, description, product_url, landing_page_url, image_url, price, availability, merchant_category and delivery_cost) mapped from the start; the delivery cost is the one value only you can enter
  • The current underscored attribute names from the specification (product_url, image_url, merchant_category, delivery_cost, gtin), not the hyphenated spellings Kelkoo's own stale samples still show
  • The title pairs product and variant name, because Kelkoo wants a distinguishing feature such as colour or size on every variant
  • product_url deep-links the exact variant and may carry your UTM tracking; landing_page_url stays the clean final URL with no parameters, exactly as the spec splits them
  • Availability goes out as Kelkoo's numeric codes 1–6, and a sold-out variant stays in the feed as 6 instead of disappearing
  • Prices leave as bare numbers with no currency sign, delivery excluded; descriptions are stripped of HTML and capped at the spec's 3,000 characters
  • The readiness check lists required attributes with gaps (the delivery cost you have not entered, a missing image, an empty category path) before Kelkoo's first fetch

Deep dive

01

One XML file Kelkoo comes to fetch

  • A bare <products> root with one <product> per offer, no namespace, values as child elements
  • XML is what Feedflock renders; a delimited TXT with a header row is also accepted
  • Kelkoo pulls your hosted URL on a published per-country timetable: 3 fetches a day in Belgium, 4 in Czechia, 14 in France
  • The feed URL must stay constant; password protection and IP allowlisting are arranged with Kelkoo
Technical details

Kelkoo's format is a plain UTF-8 XML file: a <products> root, one <product> per offer, every value as a child element, free text in CDATA. A delimited TXT with a header row of attribute names works too, but XML is what the template renders. There is no published item or file-size cap.

You do not upload the file. Kelkoo fetches it. You host the feed at a URL that must keep the same name over time, and Kelkoo pulls it on a published timetable that runs from 3 fetches a day (Belgium) through 4 (Czechia, the UK, Germany's neighbours) to 14 (France). Feedflock hosts the file on a stable URL and regenerates it every hour, so every fetch reads current prices and stock.

02

The required ten

  • Required on every offer: id, title, description, product_url, landing_page_url, image_url, price, availability, merchant_category, delivery_cost
  • title: max 150 characters, plain text, matching the landing page, with a distinguishing feature on every variant
  • description is required: max 3,000 characters, no HTML, no store links or sales talk
  • id: max 50 characters, stable across updates and never reused for a different product
Technical details

Ten attributes are unconditionally required: a stable id, the title, a description, both URLs, the main image, the price, availability, your category path and the delivery cost. A missing required attribute may keep that particular product from showing up, and Kelkoo has no merchant-facing diagnostics page to tell you, which is why the template warns instead.

The title is capped at 150 characters, must be plain text without promotional phrases or all-caps, must match the landing page, and every variant needs a distinguishing feature such as colour or size. Kelkoo's own example is “Adidas Retrorunner Sneakers - Blue - UK 7”. The description is required too: up to 3,000 characters about the product only, stripped of HTML. The price is a bare number without the currency, and it must exclude delivery costs, voucher-code reductions and any ecotax, which has its own field.

03

Two URLs, two jobs

  • product_url leads to the product's landing page and MAY be a tracking URL; UTM tags are recommended
  • landing_page_url must be the final URL on your own domain, with no tracking and no URL parameter at all
  • So the ?variant= deep link belongs on product_url, and every variant of a product shares one landing_page_url
  • Kelkoo's UTM convention: utm_source=kelkoo + country, utm_medium=cpc, utm_campaign=kelkooclick
Technical details

Kelkoo is one of the few channels that asks for two product URLs, and they are not interchangeable. product_url is the link the offer points to: it must start with https and it may be a tracking URL that redirects. Kelkoo explicitly recommends UTM parameters so you can attribute the traffic. landing_page_url must be the final URL the user sees, on your own domain, with no tracking solution and no URL parameter whatsoever.

The consequence is tidy: the ?variant= deep link that preselects the right size belongs on product_url, while landing_page_url stays the clean product address every variant shares. Feedflock's template maps both by default: the variant deep link on the first, the plain product URL on the second.

04

Your category path, numeric availability, flat delivery

  • merchant_category is your OWN full path; Kelkoo publishes no taxonomy and maps your path internally
  • New merchants take a few days to be categorised; a generic path like “Shoes” degrades placement silently
  • availability is a numeric enum, 1 = In stock to 6 = Not in stock; left blank it reads as unknown and limits exposure
  • delivery_cost is required, home delivery only, 0 for free, no carriers, no COD, no free-above threshold
Technical details

Kelkoo publishes no category tree at all. merchant_category carries your own full category path (“Men > Men's Shoes > Casual Shoes”, not just “Shoes”), and Kelkoo maps it to its taxonomy internally, which for a new merchant can take a few days. An optional second track, google_product_category, exists for a Google taxonomy path or id.

Availability is Kelkoo's numeric enum: 1 = In stock, 2 = Stock on order, 3 = Unknown, 4 = Pre-order, 5 = Available on order, 6 = Not in stock. Text is accepted but the numbers are preferred, and an out-of-stock item stays in the feed as 6. Delivery is two flat fields: delivery_cost, which is required, covers home delivery only and takes 0 for free, and delivery_time as free text. There is no carrier vocabulary, no COD element and no free-above threshold: weight-based rules are something you agree with your account manager, not something the feed can express.

The takeaway

One stable URL, an hourly refresh and an XML that already speaks Kelkoo's current vocabulary: ten required attributes, variant by variant, delivery included. Your Shopify catalog stays the single source of truth for all 25 country sites at once.

Claude · ChatGPT

Or set up your Kelkoo feed in chat

Connect Feedflock to Claude or ChatGPT and ask. It creates the feed as a draft, maps your categories to Kelkoo's own tree and tells you what is still missing. You approve every change.

feedflock · mcp

Create a Kelkoo 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

An XML file with a <products> root and one <product> per offer, or a delimited TXT with a header row of attribute names. Feedflock renders the XML with the current underscored attribute names from Kelkoo's specification table. One file serves one country campaign, and the country sets the currency and language.
On a published per-country timetable: from 3 fetches a day in Belgium through 4 in Czechia, the UK, Poland and others, 8 in Germany, up to 14 in France. Feedflock regenerates the file every hour on the same URL, so every fetch reads current data, and the URL must stay constant, which a hosted feed guarantees.
product_url is the offer's link and may be a tracking URL with UTM parameters; landing_page_url must be the final URL on your own domain with no parameters at all. The template puts the ?variant= deep link on the first and the clean product URL on the second. Both are required.
For every product that has a manufacturer-assigned barcode, yes: UPC-E, UPC-A, EAN-8, EAN-13, EAN-14 and ISBN-13 are all accepted, so 8, 12, 13 or 14 digits, and unlike Heureka a GTIN-14 with a leading zero passes. A product without a GTIN needs an mpn paired with the brand; a genuine exemption goes through your account manager.
As one flat delivery_cost per offer (a bare number, 0 for free home delivery), plus delivery_time as free text like “2 to 5 days”. The format has no carrier list, no COD and no free-above threshold; the template leaves the cost empty until you enter your rate, because 0 declares free shipping.
Not by emptying the feed. For safety reasons Kelkoo keeps the last successfully downloaded product list online when the feed is empty or unreachable. Delisting all products goes through your Kelkoo Group account manager.

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