Skip to content
Okazje.info
Price comparison

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.

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 · okazje.xmlUpdated just now
<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</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>7</availability>
<attribute name="code">SKU-2048</attribute>
<attribute name="EAN">5901234123457</attribute>
<attribute name="Rozmiar">M</attribute>
</offer>
−20% off compare-at
Productold_​priceprice
Linen shirt Sand219.00 zł175.20 zł
Mug Fjord 350 ml69.00 zł55.20 zł
Backpack Ridge 28 l329.00 zł263.20 zł
Soy candle Les59.00 zł47.20 zł
Wool scarf Fjell129.00 zł103.20 zł
161.00 złsaved across these products
5 / 5products labelled Promocja
Sale prices

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.

Feed health

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.

Feed quality · okazje.xml
76 / 100
To review: 4
Empty <description> on 8 offersdescription is required and drives Okazje's search and filters: an offer without one does not appear in search results. These products have no description in Shopify.
Missing <producer> on 6 offersThe Shopify vendor field is empty. A missing producer prevents the offer from being displayed at all.
Sold-out variants still in the feed (4)The sold-out exclusion is switched off. Okazje wants only available offers in the file, so an unavailable one should leave it immediately.
No EAN on 11 offersThe barcode field is empty. code and EAN are the required pair that attaches the offer to the right product card.

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

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

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

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

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

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

01

How the Okazje.info feed works

  • One XML file on a hosted URL, 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 emits UTF-8
  • The PDF states no fetch cadence or size caps; Feedflock regenerates the file every hour on a stable URL
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.

02

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 URL must 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.

03

Prices, promotions and the Omnibus price

  • price is gross, VAT included, in PLN: 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.

04

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.

feedflock · mcp

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

No. The Okazje.info template renders the full offer structure (child elements in the PDF's order, Polish text in CDATA, identifiers as attribute children) for you. If you ever need a custom layout, the Liquid editor builds one with a live preview.
E-mail the hosted URL to integracja@okazje.info.pl or enter it in the Panel Sprzedawcy's Integracja section. Okazje confirms the start of the integration by e-mail. Feedflock keeps the file current on the same address, so you never re-send anything.
They leave the feed. Okazje's rule is that the file should contain only available offers and an unavailable one should be removed immediately, so the template excludes sold-out variants by default and brings them back when they are in stock again.
A bare gross number in PLN, grosze separated by a dot or a comma: 8200.45 or 8200,45. Thousands grouping and a currency unit are named errors: 8.200.45, 8 200.45 and 8200.45 zł are all invalid. Feedflock sends the variant price as a plain number, and promotions add old_price plus the Omnibus min_price_30d.
No. The format has no delivery element, carrier or shipping price at all. The one logistics datum is the required weight (packed, in kilograms, with the unit and a comma decimal, like 0,25 kg), which Okazje uses to estimate an approximate delivery cost.
Two elements: old_price with the pre-markdown price and min_price_30d with the lowest price of the 30 days before the markdown. Without min_price_30d the offer is not labelled Promocja and misses the promotion boxes. Feedflock emits both together on every sale offer.

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