
Okazje.info feed for Shopify
Okazje.info is a Polish price-comparison site run by Grupa Okazje from Łódź, and its whole specification is one 32-page PDF. Feedflock turns your Shopify catalog into the XML file that PDF describes (every variant its own offer, the code and EAN pairing attributes filled, sold-out variants left out) and keeps it fresh on a stable public URL.

A discount in the feed becomes a Promocja badge.
On Okazje.info a promotion lives in two elements: old_price carries the regular price, price the discounted one, and min_price_30d, the lowest price of the last 30 days, is then mandatory. Without it the offer is not labelled Promocja and drops out of the promotion boxes. Feedflock sends both together on every sale offer.
Catch feed issues before Okazje.info 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 with Okazje.info
Registration gives you the Panel Sprzedawcy at admin.okazje.info.pl. That is where the integration is managed and where Okazje confirms the start by e-mail.
Install Feedflock
Add Feedflock from the Shopify App Store. It reads your products, variants, stock and images directly through the Shopify API.
Pick the Okazje.info template
Every element the PDF marks as required comes mapped: id, name, description, url, image, price, category, producer, weight and the code and EAN attributes. Sold-out variants stay out of the feed from the start.
Check identifiers and weight
code fills from the SKU and EAN from the barcode, the pair Okazje matches offers on. weight is required too, formatted with a comma decimal and the unit, like 0,25 kg; Okazje uses it to estimate delivery cost.
Send the feed URL
E-mail the hosted URL to integracja@okazje.info.pl or enter it in the panel's Integracja section. Feedflock regenerates the file every hour on the same address, so there is nothing to re-send.
https://feedflock.appfleece.com/f/demo-okazje/okazje.xml
The feed
What the channel receives
<offer> <id>9087654322</id> <name><![CDATA[Linen shirt Sand M]]></name> <description><![CDATA[A breathable linen shirt in a regular cut.]]></description> <url>https://shop.example/products/linen-shirt-sand?variant=9087654322</url> <price>219.00</price> <category><![CDATA[Odzież/Koszule męskie]]></category> <producer><![CDATA[Nordlin]]></producer> <images> <image>https://cdn.shop.example/img/linen-shirt-sand.jpg</image> <addimage>https://cdn.shop.example/img/linen-shirt-sand-back.jpg</addimage> </images> <weight>0,3 kg</weight> <availability>1</availability> <attribute name="code">SKU-2048</attribute> <attribute name="EAN">5901234123457</attribute> <attribute name="Rozmiar">M</attribute> </offer>

Nordlin
Linen shirt Sand
219 zł
Feed fields
id
9087654322
name
Linen shirt Sand M
description
A breathable linen shirt in a regular cut.
url
https://shop.example/products/linen-shirt-sand?variant=9087654322
price
219.00
category
Odzież/Koszule męskie
producer
Nordlin
weight
0,3 kg
availability
1
attribute
SKU-2048
attribute
5901234123457
attribute
M
The channel
Where Poland hunts for deals
Okazje.info is the price-comparison site of Grupa Okazje from Łódź. Promotions are first-class here: an offer with old_price and the Omnibus min_price_30d earns the Promocja label and a place in the promotion boxes.
Pairing runs on two identifiers
The manufacturer code and the EAN are the required pair that attaches your offer to the right product card and groups it with competing offers. A generic name like "pendrive 8GB" makes comparison impossible.
The description is the search index
Okazje builds its search matching and filters from the offer description. It is not indexed by Google, so your shop text can be reused, but an offer without one simply has no search presence.
The feed
- The template renders the offer exactly as the PDF's field table defines it: child elements, Polish text in CDATA, identifiers as attribute children
- Every required element is mapped from the start: id from the variant ID, name with the variant appended, producer from the vendor, weight as "0,25 kg" with a comma decimal and the unit
- code and EAN fill from the SKU and barcode, and every variant is its own offer with a ?variant= URL, unique per offer as the PDF demands
- Sold-out variants are left out by default, matching Okazje's rule that only available offers belong in the file; availability only ever takes the codes 1, 3, 7 and 14
- old_price and the Omnibus min_price_30d fire together on every sale offer, so a promotion keeps its Promocja label
- The readiness check lists every required element with a gap (an empty description, producer, category or image) before you send the URL to Okazje
Deep dive
How the Okazje.info feed works
- One
XMLfile on a hostedURL, sent by e-mail to integracja@okazje.info.pl or entered in the panel's Integracja section - Root <okazje> wrapping <offers>, one <offer> per variant
ISO-8859-2,UTF-8 or Windows-1250 encoding; the template declares and emitsUTF-8- The
PDFstates no fetch cadence or size caps; Feedflock regenerates the file every hour on a stableURL
Technical details
Okazje reads one XML file from a hosted URL. You hand the address over once (by e-mail to integracja@okazje.info.pl or in the Panel Sprzedawcy's Integracja section), and Okazje confirms the start of the integration by e-mail. The file's root is a bare <okazje> wrapping <offers>, with one <offer> per variant.
The PDF allows ISO-8859-2, UTF-8 or Windows-1250; the template declares and emits UTF-8. It states no download cadence and no item or size caps. Feedflock hosts the file on a stable URL and regenerates it every hour, so whenever Okazje fetches it, it reads current prices and stock.
Every variant is its own offer
- One <offer> per variant, each with its own unique, stable id: a duplicate id keeps one offer and drops the rest, a changed id re-points the listing
- The
URLmust be unique per offer, variants included, and must lead to a direct purchase - Colour variants carry the Kolor attribute; sizes go in Rozmiar
- Fashion offers put the brand at the start of the name and the manufacturer code at its end
Technical details
Okazje wants every variant as a separate offer with its own id, and the id is load-bearing: a duplicate reads only one of the offers, and a changed id re-points the listing to another product. The template uses the Shopify variant ID, which never changes and is never reused. The URL has the same rule: unique per offer including variants, which is why the default deep-links with ?variant=.
Variant detail travels in attributes: colour variants must carry Kolor, and sizes go in Rozmiar. The PDF shows several sizes joined with a semicolon in one value, while the template sends one offer per size with a single value. For fashion, the PDF asks for the brand at the start of the offer name and the manufacturer code at its end, and a category path that carries the gender.
Prices, promotions and the Omnibus price
- price is gross,
VATincluded, inPLN: a bare number with a dot or comma decimal, no thousands grouping, no currency unit - old_price flags an offer as a promotion
- min_price_30d (the lowest price of the 30 days before the markdown) is then required, or the offer is not labelled Promocja
- The template's min_price_30d falls back to the compare-at price; a dedicated metafield holds the true measured minimum
Technical details
The price is the gross selling price in PLN as a bare number: grosze separated by a dot or a comma, no digit grouping, no unit. The PDF names 8.200.45, 8 200.45 and 8200.45 zł as errors. The template renders the Shopify variant price straight through, so none of these can occur.
A promotion is two elements, not one: old_price carries the pre-markdown price and marks the offer as promotional, and min_price_30d (the Omnibus lowest price of the 30 days before the markdown) becomes required the moment old_price is present; without it the offer is not labelled Promocja. The template fires both on the same condition, so they never drift apart. One honest caveat: by default min_price_30d falls back to the compare-at price, which is a "was" price, not a measured 30-day minimum, so keep the real minimum in the custom.min_price_30d metafield if you have it.
What decides whether an offer shows
- No description → absent from search results and filters; no producer → not displayed at all
- The category is your shop's own path: generic buckets like Promocje, Pozostałe or Wyprzedaż block assignment and display
- The image must be full size, at least 220 × 220 px, with no watermark. A missing one keeps the offer off the site
- There is no delivery element in the feed; the required weight exists so Okazje can estimate the delivery cost
Technical details
Okazje's failure mode is silent non-display: nothing rejects the file, the offer just never shows. An offer without a description is absent from search results, one without a producer is not displayed at all, and one without an image is not displayed either. The template marks all of these required, and the readiness check lists any that resolve empty.
The category is your shop's own path, with any separator, as Okazje publishes no tree of its own. Precision matters: general buckets such as Promocje, Pozostałe, Akcesoria, Wyprzedaż, Główna or Home make correct assignment impossible and keep the offer off the site. And logistics stay deliberately thin: the feed carries no delivery price, carrier or COD, only the required weight, in kilograms with the unit, from which Okazje estimates an approximate delivery cost.
The takeaway
One URL, an hourly refresh and an XML offer that follows Okazje's PDF element for element, pairing identifiers filled, promotions Omnibus-complete, sold-out variants out. Your Shopify catalog stays the single source of truth.
Claude · ChatGPT
Or set up your Okazje.info feed in chat
Connect Feedflock to Claude or ChatGPT and ask. It creates the feed as a draft, maps your categories to Okazje.info's own tree and tells you what is still missing. You approve every change.
Create a Okazje.info 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
Get on every marketplace that matters this afternoon.
Install free, connect your first feed in minutes, and let Feedflock keep it fresh and validated.