Integrations 15 marca 2026 11 min read

How to Connect Your Store to Ceneo via an XML Feed — Guide

The Ceneo comparison engine pulls your products from a single XML file — if the feed is misconfigured, offers won't appear or will be rejected. This guide shows how to prepare, connect, and verify the feed step by step.

How to connect your store to Ceneo via an XML file — in brief

To connect your store to the Ceneo price-comparison engine, you don’t upload products manually. You share a single URL pointing to an XML file (product feed) that Ceneo fetches on a regular cycle and uses to build and update your offers. The whole integration comes down to four things: generating a valid feed in your store panel, filling in the required fields (above all EAN, manufacturer, and manufacturer code), mapping your store categories to Ceneo categories, and pasting the feed URL into the Ceneo panel and choosing a billing model.

Below you’ll find the exact file structure, step-by-step configuration, a checklist for verifying the feed before you submit it, and a rundown of the most common errors that get offers rejected or keep them from appearing in the comparison engine at all.

What the Ceneo XML feed is and what it looks like inside

The feed is an ordinary text file in XML format, generated automatically by your store software and available at a fixed, public URL (usually something like yourstore.pl/ceneo.xml). Ceneo fetches it at regular intervals, so every change in price or stock level has to make its way into the feed — you don’t enter it manually on the comparison engine’s side. This is the key premise: the feed is the only channel of communication between your store and Ceneo.

The structure is built around a single root element, <offers>, inside which each product is a separate <o> node (short for offer). A simplified skeleton of a single offer looks like this:

  • <offers version=”1″> — the root element of the whole file,
  • <o id=”123″ url=”…” price=”149.00″ avail=”1″ stock=”8″> — a single offer with its attributes,
  • <cat>Electronics/Audio/Headphones</cat> — the category path,
  • <name>XYZ Wireless Headphones</name> — the product name,
  • <imgs><main url=”…”/></imgs> — images,
  • <desc>…</desc> — the description in limited HTML,
  • <attrs><a name=”EAN”>5901234567890</a></attrs> — attributes, including EAN, manufacturer, and manufacturer code.

Attributes placed directly on the <o> tag describe the logistics of the offer (price, availability, stock), while the child elements describe the product itself (name, category, images, description, parameters). The table below gathers the most important offer attributes.

Attribute Required? Description
id yes A unique, permanent identifier for the offer (up to ~100 characters). Once an id has been used, it must not be assigned to another product.
url yes A direct link to the specific product variant (up to ~1,000 characters).
price yes Gross price with a period as the decimal separator, e.g. 149.00.
avail yes Shipping time/availability. Allowed values include 1, 3, 7, 14, 90, 99, 110 (approximate — check the current list in the Ceneo specification).
stock optional Number of units in stock (a positive integer).
weight optional Weight in kilograms with a period, e.g. 0.35. The field must not be empty or equal to 0 if you provide it.
basket optional Value 0 or 1 — whether the offer takes part in the “Buy Now” purchasing service.

Configuring the XML feed step by step

Step 1. Generate the feed in your store panel

Most e-commerce platforms (including Shoper, PrestaShop, WooCommerce, Comarch e-Sklep) have a built-in “Price comparison engines” or “Integrations → Ceneo” module that generates a feed in the Ceneo schema automatically. You enable the module and the system hands you a ready-made file URL. You don’t have to write the XML by hand — and if your platform has no native export, the feed can be built by dedicated plugins or marketplace integrators. On open-source platforms (like WooCommerce) it’s worth checking whether the plugin generates the feed statically (a file refreshed every X hours) or dynamically (on every fetch) — this affects how current your prices and stock levels are.

Step 2. Fill in the required fields (EAN, manufacturer, manufacturer code)

This is the most common source of trouble. Ceneo matches your offer to an existing product card mainly by the EAN code (an 8- or 13-digit barcode) and by the manufacturer + manufacturer code pair. If you sell books, the equivalent of the EAN is the 13-digit ISBN, and for OTC medicines and supplements it’s the 7-digit drug code. Without this data, the offer will either not be matched to the right product card or will fail validation entirely. In your store panel, fill in these fields on each product’s card (usually the “Manufacturer identifier / EAN” and “Manufacturer” fields).

Step 3. Map your store categories to Ceneo categories

Every product has to land in a specific category in the Ceneo tree. Store software usually provides a mapping tool where you assign your categories to their Ceneo counterparts. Correct mapping speeds up offer approval and minimizes the risk of a wrong assignment. Avoid generic, marketing-style categories like “Clearance,” “Promotion,” or “New arrivals” — Ceneo rejects them because they don’t describe a real product category.

Step 4. Connect the feed URL in the Ceneo panel

Log in to the partner panel at biznes.ceneo.pl, add your store, and paste in the feed URL you generated in step 1. Ceneo will fetch the file, run technical validation (schema compliance), and show a report: how many offers were loaded and how many were rejected and why. This report is your main diagnostic tool — you’ll come back to it after every major change to the feed.

The first import and moderation of new offers usually take some time — don’t assume products will show up in the comparison engine immediately after you connect the feed. After every big change to the file (e.g., remapping categories), wait for the next fetch cycle and check the report again before you conclude the change worked. It’s also worth adding UTM parameters to the URLs so that in your store’s analytics you can tell Ceneo traffic apart from other sources.

Step 5. Choose a billing model

Ceneo bills stores mainly on a CPC (cost per click) model — you pay for each user who clicks through from the comparison engine to your store. The cost per click depends chiefly on the product category and runs roughly from about 0.39 zł to 1.03 zł (check current rates in the Ceneo price list — they can change). Billing works on a prepaid model: you top up your store’s billing account, and funds are drawn down as traffic comes in; any unused balance is refunded when you close the account. The minimum top-up is roughly about 375 zł — also worth verifying at the source.

File structure — the offer’s child elements

Besides the attributes on the <o> tag, every offer contains elements that describe the product. Below are the most important ones, along with their limits and notes.

Element Required? Limit / note
cat yes Category path (up to ~255 characters), e.g. Computers/Monitors/LCD Monitors. No generic categories like “Promotion.”
name yes Product name without sales taglines (up to ~150 characters). No “HIT!,” “PROMOTION,” “cheapest.”
imgs / main yes Main image in <main>, additional ones in <i>; up to ~20 images, each URL up to ~2,048 characters.
desc recommended Description in limited HTML (including p, h2, h3, ul, li, strong, br), up to ~100,000 characters. No external links or store details.
attrs / a yes for EAN and manufacturer Attributes in the form <a name=”EAN”>…</a>, <a name=”Producent”>…</a>, <a name=”Kod_producenta”>…</a>, etc.

Images should show the product against a light, preferably white background, with no watermarks, store logos, or sales taglines. The description should contain concrete information about the product — no links to your own store, contact details, or advertising slogans.

Product variants and grouping offers

If you sell products in multiple variants (size, color, capacity), treat each variant as a separate <o> offer with its own unique id and — if the variants have different barcodes — its own EAN. The url attribute should lead precisely to the given variant, not to a general product page, so that after clicking the customer lands on the specific item with the right price and availability. A mismatch between the variant in the feed and the landing page is a common cause of complaints and lower offer quality.

Pass the parameters that distinguish variants in the <attrs> section as additional <a name=”…”> attributes, not as add-ons in the product name. This way Ceneo will correctly match the offer to the card, and the filters in the comparison engine will work in your favor. Keep the name field clean and consistent with catalog naming — no size, color, or marketing slogans crammed into the title.

How to verify the feed before submitting — a checklist

Before you connect the feed in the Ceneo panel, go through this list. Catching errors at this stage saves days of waiting for re-moderation.

  1. Encoding and XML validity. The file must be UTF-8, and the structure must close properly (every tag closed). Open the feed in a browser or an XML validator — if the file won’t parse, Ceneo will reject the whole thing.
  2. The feed URL is public and stable. The URL must open without a login and must not return a 500/404 error. Check it in incognito mode.
  3. EAN / manufacturer code in every offer. Review whether the fields are non-empty and have the correct number of digits (EAN: 8 or 13).
  4. Prices consistent with the store. The price in the feed must be identical to the price on the product page — discrepancies result in the offer being suspended.
  5. Availability that matches reality. Don’t set avail=”1″ for products you don’t have in stock.
  6. Specific, not marketing, categories. No “Clearance” or “New arrivals.”
  7. Images work and are clean. Open a few image URLs — they must load and be free of watermarks.
  8. Unique ids. No two offers may share the same id.

If you can’t prepare the file in the required schema on your own, Ceneo lets you send any file you have to their technical support address (wsparciesklepu@ceneo.pl) to have the data checked for correctness.

The most common reasons an offer gets rejected on Ceneo

According to industry data, the vast majority of rejections stem from errors in the file structure itself and non-compliance with the schema, not from a moderator’s “decision.” Below are the most common cases and how to fix them.

Problem Effect How to fix
Missing or incorrect EAN The offer isn’t matched to a product card Fill in an 8- or 13-digit EAN on each product’s card
Missing manufacturer or manufacturer code Rejection or no match Fill in the “Manufacturer” and “Manufacturer code” fields
Category too generic The offer doesn’t land in the right category Map your store category to a specific Ceneo category
Feed price differs from the page Offer suspension, loss of trust Synchronize the price automatically from a single source
avail=”1″ when out of stock Returns, complaints, risk of the store being blocked Keep stock and availability in one, up-to-date source
Watermarks or overlays on images Image rejection Use images on a white background with no overlays
Feed URL unavailable (login/500/404) No updates or no offers at all Make the feed public and ensure server stability
Name with sales taglines Rejection or lower offer quality Remove taglines like “HIT,” “PROMOTION” from the name field

Updating the feed and maintaining offer quality

Connecting the feed is the beginning, not the end. Ceneo fetches the file on a cycle, so any discrepancy between the feed and your store’s real state hits both offer quality and costs. The most common problem is outdated prices and stock — if the feed refreshes less often than you change prices, the customer clicks an offer (which you pay for under the CPC model) and then sees a different price or an out-of-stock item in your store.

That’s why it’s worth keeping prices and stock levels in a single source of truth and syncing them automatically instead of editing them by hand in many places. It’s the same mechanism that protects against overselling in multichannel sales — the more channels (Ceneo, Allegro, your own store), the greater the risk of selling something you no longer have. It’s worth planning inventory synchronization as a process, not a one-time setting, and choosing a feed refresh frequency that matches the pace of change in your assortment.

In practice, as the number of channels grows, it starts to make sense to centralize stock synchronization in a single panel that keeps prices and availability consistent between the Ceneo feed and the rest of your channels. Multichannel CRM tools — the category that Nimo, currently in development, will also belong to — are ultimately meant to connect these sources so that the feed always reflects your real inventory. Until then, the rule is simple: one source of data for price and stock, with the feed generated from it.

Frequently asked questions

Do I have to write the XML file by hand to integrate with Ceneo?

No. In practice, the feed is generated by your store software or a plugin — you just enable the Ceneo module, fill in the product data (EAN, manufacturer, categories), and hand the ready-made URL to the Ceneo panel. Editing the XML by hand is only needed in unusual, non-standard setups.

Why aren’t my products appearing on Ceneo despite a correct feed?

Most often the reason is a missing EAN or manufacturer code (no match to a product card), a category that’s too generic, or a feed URL that isn’t publicly accessible. Check the validation report in the Ceneo panel — it shows the number of rejected offers along with the reason. Also allow time for moderation on the comparison engine’s side.

What values can the avail (availability) field take?

They’re numbers that stand for shipping time — including 1 (available immediately / within 24h), 3, 7, 14 days, plus special values for when availability information is missing. You’ll find the exact, current list of allowed values in the official Ceneo specification — treat specific numbers as approximate and verify them at the source.

How much does a presence on Ceneo cost?

Ceneo usually bills stores on a CPC model — you pay per click leading to your store. The cost depends on the category and runs roughly from about 0.39 zł to 1.03 zł per click, on a prepaid model. Check the current rates and minimum top-up amounts in the Ceneo price list, as they can change.

How often does Ceneo fetch my feed?

The feed is fetched on a cycle, and the frequency depends on your settings and platform. The key thing is that the feed refreshes no less often than your prices and stock change — otherwise the customer (whose click you pay for) will hit an outdated offer. With high assortment turnover, it’s worth ensuring the file updates as frequently as possible, or dynamically.

Read more

Build Nimo with us

Join the waitlist and be among the first to switch to Nimo when early access opens.

You're on the list.

We'll be the first to let you know when early access to Nimo goes live.

A bonus for the first users on the list