Skip to content
Ceneo
Price comparison

Ceneo feed for Shopify

Ceneo is Poland's price comparison site, with its own Kup teraz (Buy Now) basket built into the listing. Feedflock turns your Shopify catalog into the XML file Ceneo expects, every variant its own offer, the integration attributes Ceneo pairs on already filled, sold-out variants left out, and keeps it fresh on a stable public URL.

01 · ShopifyProduct in the catalog
Linen shirt SandNordlin · Men's shirtsSKU-2048 · S–XL
Price
219 zł
In stock
0 pcs
When out of stock
02 · ceneo.xmlUpdated just now
<o id="9087654322" url="https://shop.example/products/linen-shirt-sand?variant=9087654322" price="219.00" avail="1" weight="0.3" stock="12" basket="0">
<cat><![CDATA[Moda/Odzież męska/Koszule]]></cat>
<name><![CDATA[Linen shirt Sand]]></name>
<imgs>
<main url="https://cdn.shop.example/img/linen-shirt-sand.jpg"/>
<i url="https://cdn.shop.example/img/linen-shirt-sand-back.jpg"/>
</imgs>
<desc><![CDATA[<p>A breathable linen shirt in a regular cut.</p>]]></desc>
<attrs>
<a name="Marka"><![CDATA[Nordlin]]></a>
<a name="Kod producenta"><![CDATA[SKU-2048]]></a>
<a name="EAN"><![CDATA[8594000123453]]></a>
<a name="Rozmiar"><![CDATA[M]]></a>
</attrs>
</o>
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
Koszule męskie
Catalog coverage79 %
Feed health

Catch feed issues before Ceneo 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 · ceneo.xml
76 / 100
To review: 4
Empty <desc> on 6 offersCeneo marks the description as required; these products have no description in Shopify, so the element is left out.
No category path on 9 offers<cat> is required and fills from the product type, which these products lack. Ceneo cannot place an offer without it.
Sold-out variants still in the feed (4)The sold-out exclusion is switched off. Ceneo forbids offers the customer cannot order.
No Marka on 7 offersThe Shopify vendor field is empty. Marka, Kod producenta and EAN are the integration attributes Ceneo pairs offers on.

Setup

Live in five steps

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

  1. Register with Ceneo

    Set up your shop with Ceneo.pl and register the feed's URL with their team. The file must be freely downloadable, with no password, and its location must not change; a move has to be reported to Ceneo.

  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 Ceneo template

    Create a new feed and choose the Ceneo.pl template. The offer attributes id, url, price and avail and the elements cat, name, imgs, desc and attrs are mapped from the start, and Marka, Kod producenta and EAN fill from vendor, SKU and barcode.

  4. Check dispatch time and category

    avail defaults to 1 (ships within 24 hours). Switch to 3, 7 or 14 if that is what your shop page promises. Make sure each product has a specific category path; a catch-all like "Sale" can keep the offer off Ceneo.

  5. Hand over the feed URL

    Copy the hosted feed URL into your Ceneo registration. Feedflock regenerates the file every hour on the same address, so there is nothing to re-send.

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

The feed

What the channel receives

ceneo.xml
<o id="9087654322" url="https://shop.example/products/linen-shirt-sand?variant=9087654322" price="219.00" avail="1" weight="0.3" stock="12" basket="0">
  <cat><![CDATA[Moda/Odzież męska/Koszule]]></cat>
  <name><![CDATA[Linen shirt Sand]]></name>
  <imgs>
    <main url="https://cdn.shop.example/img/linen-shirt-sand.jpg"/>
    <i url="https://cdn.shop.example/img/linen-shirt-sand-back.jpg"/>
  </imgs>
  <desc><![CDATA[<p>A breathable linen shirt in a regular cut.</p>]]></desc>
  <attrs>
    <a name="Marka"><![CDATA[Nordlin]]></a>
    <a name="Kod producenta"><![CDATA[SKU-2048]]></a>
    <a name="EAN"><![CDATA[8594000123453]]></a>
    <a name="Rozmiar"><![CDATA[M]]></a>
  </attrs>
</o>
Live preview
Linen shirt Sand

Nordlin

Linen shirt Sand

219 zł

Feed fields

cat

Moda/Odzież męska/Koszule

name

Linen shirt Sand

desc

A breathable linen shirt in a regular cut.

a

Nordlin

a

SKU-2048

a

8594000123453

a

M

The channel

Where Poland compares prices

Ceneo.pl is Poland's price comparison site, and its Kup teraz (Buy Now) service lets shoppers buy directly inside the listing. Enrolled offers carry a basket flag right in the feed.

Every size and colour competes

Ceneo wants a variant that changes the price sent as its own offer. Feedflock sends every variant that way, each with its own id and a URL that opens on that variant.

Pairing runs on three attributes

Ceneo names Marka, Kod producenta and EAN as the attributes without which integration is not possible. Fill them and your offers land on the right product cards next to your competitors.

The feed

  • The Ceneo template renders the offer the way the spec's sample does: id, url, price and avail as attributes on <o>, cat, name, imgs, desc and attrs as child elements, Polish text in CDATA
  • Marka, Kod producenta and EAN are mapped from the start (vendor, SKU and barcode), spelled exactly as Ceneo's own sample spells them
  • Sold-out variants are left out by default, matching Ceneo's rule that an offer the customer cannot order may not be in the file
  • avail starts at 1, and the template only suggests Ceneo's own dispatch codes: 1, 3, 7, 14, 90, 99 and 110
  • Size, colour, material and gender options become <a> attributes (Rozmiar, Kolor, Materiał, Płeć), and the gallery renders as <main> plus <i> images
  • The readiness check names every required element with gaps (an empty <desc> or <cat>) before you hand the URL to Ceneo

Deep dive

01

How the Ceneo feed works

  • One XML file from a public URL: freely downloadable, no password
  • The file's location must not change; a moved file has to be reported to Ceneo's team
  • Price and availability in the feed must match what the visitor sees on the shop page
  • Hosted on a stable URL and regenerated every hour
Technical details

Ceneo reads one XML file from a public URL. The access rules are strict: the file must be freely downloadable with no password, and its location must not change. A moved file has to be reported to Ceneo's team.

Feedflock hosts the file on a stable URL and regenerates it every hour, which serves Ceneo's core requirement that the file mirror the shop page: price and availability in the feed must match what the visitor sees. Ceneo warns that a mismatch can get offers hidden.

02

Attributes on the offer, details below it

  • Core data (id, url, price, avail, optionally weight, stock and basket) are attributes on <o>
  • Descriptive data (cat, name, imgs, desc and attrs) are child elements, all of them required
  • The price is a bare decimal with a dot separator and no currency anywhere in the file
  • The name is the exact product name, without sales slogans, up to 150 characters
Technical details

A Ceneo offer splits in two. The core data (id, url, price, avail, and optionally weight, stock and basket) are attributes on the <o> element. The descriptive data (cat, name, imgs, desc and attrs) are child elements, all five required, with Polish text wrapped in CDATA.

The price is a bare decimal with a dot separator and no currency anywhere in the file; for a Polish consumer shop that means the gross price. The name is the exact product name without sales slogans, and the description may carry simple HTML (p, h2, lists, bold) but no shop notes such as cheap shipping, no links and no shop data.

03

Seven codes for availability

  • avail is a dispatch time, not a stock state, from a closed set: 1, 3, 7, 14, 90, 99 and 110
  • 1 ships within 24 hours, 7 within a week, 90 is goods on order, 110 a pre-sale
  • stock is a separate optional attribute, a positive whole number
  • Offers the customer cannot order are forbidden. Sold-out variants are excluded by default
Technical details

avail is a dispatch time, not a stock state, from a closed set: 1 ships within 24 hours, 3 within three days, 7 within a week, 14 within 14 days, 90 is goods on order, 99 is "check in the shop" and 110 a pre-sale. The template starts at 1 and offers only these codes; pick the one your shop page actually promises.

Stock is a separate optional attribute, a positive whole number. What may never happen is an offer the customer cannot order: Ceneo's rules keep such offers out of the file entirely, which is why sold-out variants are excluded by default.

04

The integration attributes decide pairing

  • Marka, Kod producenta and the 8- or 13-digit EAN: the attributes without which integration is impossible
  • They render as <a> entries inside <attrs>, filled from vendor, SKU and barcode
  • The category is your shop's own path, levels separated by '/', which Ceneo maps onto its tree
  • Too general a path, or a label like 'Sale', can keep the offer off the listing
Technical details

Ceneo names the attributes without which integration is impossible: Marka (brand), Kod producenta (manufacturer code, with a space, as the spec's sample spells it) and the 8- or 13-digit EAN. They render as <a> entries inside <attrs>; the template fills them from your vendor, SKU and barcode.

The category is your shop's own path, levels separated by "/"; Ceneo maps it onto its own tree, and there is no category id in the feed. By default the path comes from the product type. Too general a path, or a marketing label like "Sale" or "New in", can keep the offer off the listing altogether.

The takeaway

One URL, an hourly refresh and an XML structure that follows Ceneo's spec attribute for attribute. Your Shopify catalog stays the single source of truth, and Ceneo always sees offers your customers can actually order.

Claude · ChatGPT

Or set up your Ceneo feed in chat

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

feedflock · mcp

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

No. The Ceneo template renders the full offer structure (attributes on <o>, child elements in CDATA) for you. If you ever need a custom layout, the Liquid editor builds one in XML, CSV or JSON with a live preview.
Ceneo requires the file to mirror your shop page: price and availability must match. Feedflock regenerates the file every hour on a stable URL, so whenever Ceneo fetches it, it reads data at most an hour old.
They leave the feed. Ceneo's rules forbid offers the customer cannot order, so the template excludes sold-out variants by default and brings them back once they are in stock again. You can turn the exclusion off, but every offer left in would still say avail="1".
8 or 13 digits, the code on the packaging. Feedflock sends the Shopify barcode field as it is, so a 14-digit GTIN or an EAN-13 stored with an extra leading zero has to be corrected in Shopify.
No. Ceneo's spec has no delivery element, carrier code or shipping price at all. The only logistics data are the avail dispatch code and an optional weight in kilograms. Delivery terms are set on the Ceneo side, not in the file.
It marks an offer as active in Kup teraz, Ceneo's Buy Now service: 1 for enrolled products, 0 otherwise. The template sends 0 until you switch it. Do that once you are enrolled in Kup teraz with Ceneo.

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