LizbonaJesteśmy na Web Summit, stoisko A1-33.Zobacz szczegóły
Feedance
Artykuł

Standardowe parametry feedu produktowego XML

Przewodnik po parametrach feedu XML: wspólny rdzeń, atrybuty dla retailu, pojazdów, hoteli, nieruchomości i ofert pracy oraz zasady formatowania.

Cagdas PolatCagdas Polat
19 minut czytania
Standardowe parametry feedu produktowego XML

Większość artykułów o feedach XML zakłada, że sprzedajesz T-shirty.

To założenie miało sens dekadę temu, gdy „feed produktowy” oznaczał plik dla Google Shopping i nic więcej. Dziś już się nie sprawdza. Salon samochodowy, portal z ofertami pracy, sieć hoteli, portal nieruchomości i platforma bukmacherska prowadzą dziś reklamę opartą na feedach, a żadne z nich nie przesyła size ani gtin. Przesyłają numery VIN, kody IATA, liczbę sypialni, rodzaje zatrudnienia i godziny rozpoczęcia meczów.

Mechanika jest identyczna. Parametry — nie.

Ten przewodnik omawia jedno i drugie: zasady strukturalne obowiązujące w każdym feedzie XML niezależnie od branży oraz konkretne zestawy atrybutów dla każdego z głównych typów feedów — retail, lokalne stany magazynowe, pojazdy, turystyka, nieruchomości, oferty pracy oraz asortyment ograniczony w czasie, taki jak mecze, wydarzenia i seanse. Z działającym XML dla każdego z nich.


1. Czym właściwie jest feed XML

Feed XML to ustrukturyzowany plik opisujący asortyment w sposób, który maszyny mogą przetworzyć bez interpretacji przez człowieka. Platforma pobiera plik według harmonogramu, parsuje go i na podstawie tego, co znajdzie, tworzy oferty, reklamy lub wyniki wyszukiwania.

Format ma mniejsze znaczenie, niż większość osób sądzi. Liczy się kontrakt: każde miejsce docelowe publikuje specyfikację określającą, jakich pól wymaga, jakie wartości są dozwolone i jak zachowa się, gdy będą błędne. Feed to twoja strona tego kontraktu.

Wynikają z tego dwie konsekwencje i to one sprawiają, że feedy są trudniejsze, niż się wydaje:

Kontrakt jest osobny dla każdego miejsca docelowego. Specyfikacja produktów Google, specyfikacja katalogu Meta i XML ofert pracy Indeed nie mają prawie żadnych wspólnych nazw pól. Jeden katalog źródłowy trzeba przekształcać inaczej dla każdego z nich.

Naruszenia przeważnie kończą się cichą porażką. Błędnie sformatowane pole rzadko psuje cały plik. Powoduje odrzucenie jednego produktu, obniżenie jednej oferty albo usunięcie jednego atrybutu z reklamy — a nic w panelu kampanii o tym nie informuje.

2. Anatomia pliku

Większość reklamowych feedów XML używa RSS 2.0 z rozszerzeniem przestrzeni nazw. Struktura zawsze składa się z tych samych trzech warstw:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
  <channel>
    <title>Example Store — Product Feed</title>
    <link>https://example.com</link>
    <description>Full catalogue, updated hourly</description>

    <item>
      <!-- one inventory item -->
    </item>

  </channel>
</rss>
  • Deklaracja XML ustawia kodowanie. W praktyce musi to być UTF-8; cokolwiek innego powoduje uszkodzenie znaków w katalogach w językach innych niż angielski i jest najczęstszą przyczyną zniekształconych tytułów produktów po turecku, niemiecku czy czesku.
  • Deklaracja przestrzeni nazw (xmlns:g="...") sprawia, że <g:price> jest prawidłowe. Pomiń ją, a każdy element z prefiksem zostanie po cichu zignorowany — feed się sparsuje, ale prawie nic się nie zaimportuje.
  • <channel> zawiera metadane na poziomie feedu.
  • <item> to jedna jednostka asortymentu. To, czym jest „jedna jednostka”, jest decyzją, a nie oczywistością: jedno SKU, jeden wariant, jeden pojazd, jedna oferta pracy, jeden hotel, jeden mecz.

Nie każda branża używa tego kształtu. Feedy z ofertami pracy używają <source><job>, a niektóre marketplace’y definiują całkowicie własne elementy główne. Logika trzech warstw — dokument, kontener, powtarzający się element — obowiązuje niezależnie od tego.

3. Uniwersalny rdzeń

Siedem parametrów pojawia się w zasadzie w każdej specyfikacji feedu, jaką kiedykolwiek napisano, pod różnymi nazwami. Jeśli je rozumiesz, przeczytasz każdą specyfikację.

PojęcieGoogle ShoppingKatalog MetaOferty pracy IndeedCel
Unikalny identyfikatoridid / vehicle_id / home_listing_idreferencenumberTożsamość między synchronizacjami
Nazwatitletitle / nametitleCzym to jest
SzczegółydescriptiondescriptiondescriptionDlaczego to ważne
Docelowy URLlinkurlurlGdzie następuje konwersja
Zdjęcieimage_linkimage[0].url—Jak to wygląda
CenapricepricesalaryIle to kosztuje
Stanavailabilityavailability(obecność w feedzie)Czy jest aktywne

Trzy zasady dotyczące identyfikatora, które obowiązują uniwersalnie i wyrządzają więcej szkód niż jakiekolwiek inne pojedyncze pole:

  1. Musi być stały. Jeśli identyfikator generuje się na nowo przy eksporcie — na podstawie kolejności wierszy, znacznika czasu czy skrótu zmieniającej się treści — każda synchronizacja niszczy zgromadzoną historię wyników produktu i zaczyna on od zera.
  2. Musi być unikalny. Zduplikowane identyfikatory powodują pomijanie późniejszych wierszy bez komunikatu o błędzie. Produkty po prostu znikają.
  3. Musi odpowiadać temu, co wysyła twój piksel lub tag. Dopasowywanie katalogu Meta, dynamiczny remarketing Google i każdy produkt retargetingowy zależą od tego, czy identyfikator w feedzie i identyfikator zdarzenia na stronie to ten sam ciąg znaków. To najczęstszy powód, dla którego dynamiczny retargeting „nie działa”.

4. Parametry retail / e-commerce

To najlepiej udokumentowana specyfikacja i podstawa, z której korzysta większość innych branż.

Wymagane

AtrybutUwagi
idMaks. 50 znaków. Stały, unikalny, zgodny ze zdarzeniami piksela.
titleMaks. 150 znaków. Na początku marka i frazy, które ludzie faktycznie wyszukują.
descriptionMaks. 5000 znaków. Zwykły tekst; bez treści promocyjnych i HTML.
linkStrona produktu, a nie kategorii czy wyników wyszukiwania. Musi być dostępna dla crawlera.
image_linkGłówne zdjęcie. Minimum 500x500 zgodnie ze specyfikacją z 2026 roku (patrz niżej).
availabilityin_stock, out_of_stock, preorder, backorder.
priceWartość plus waluta ISO: 899.90 TRY. Musi dokładnie odpowiadać stronie docelowej.

Identyfikatory

brand, gtin, mpn i identifier_exists. GTIN to pole, które decyduje o tym, czy twój produkt zostanie dopasowany do grafu wiedzy o produktach Google — a więc czy w ogóle pojawi się w porównaniach i zakupowych wynikach AI. W praktyce nie jest opcjonalne, niezależnie od tego, co mówi specyfikacja.

Warianty

item_group_id, item_group_title, color, size, size_type, size_system, material, pattern, gender, age_group.

Warianty to osobny temat; w skrócie: item_group_id musi być identyczny w całej grupie i wyprowadzony ze stałych danych źródłowych, a gender i age_group są stałe w obrębie grupy, w przeciwieństwie do color i size.

Kategoryzacja

google_product_category (taksonomia Google, identyfikator lub pełna ścieżka), product_type (twoja własna taksonomia — to pole umożliwia budowanie struktury kampanii i ma dowolną formę, więc z niego korzystaj).

Dane handlowe

sale_price, sale_price_effective_date, unit_pricing_measure, unit_pricing_base_measure, installment, subscription_cost, loyalty_program.

Logistyka

shipping, shipping_weight, shipping_length / _width / _height, shipping_label, transit_time_label, min_handling_time, max_handling_time, tax.

Sterowanie kampanią

excluded_destination, included_destination, ads_redirect, od custom_label_0 do custom_label_4.

Pięć etykiet niestandardowych to najrzadziej wykorzystywane pola w całej specyfikacji. Nie mają dla Google żadnego znaczenia — istnieją wyłącznie po to, abyś mógł segmentować. Przedziały marży, głębokość stanów, sezonowość, wiek produktu, poziom wyników w GA4. Jeśli twoja struktura kampanii nie potrafi wyrazić reguły biznesowej, zwykle właśnie dlatego.

Multimedia

additional_image_link, lifestyle_image_link, virtual_model_link, video_link.

Minimalny, ale kompletny produkt retail

<item>
  <g:id>KRC-4210-BLK</g:id>
  <g:title>Karaca Fine Pearl 6-Person Dinner Set — Black</g:title>
  <g:description>26-piece porcelain dinner set for six. Dishwasher and microwave safe.</g:description>
  <g:link>https://example.com/urun/fine-pearl-6-kisilik</g:link>
  <g:image_link>https://cdn.example.com/krc-4210-blk-01.jpg</g:image_link>
  <g:additional_image_link>https://cdn.example.com/krc-4210-blk-02.jpg</g:additional_image_link>
  <g:video_link>https://cdn.example.com/video/krc-4210.mp4</g:video_link>
  <g:availability>in_stock</g:availability>
  <g:price>4299.00 TRY</g:price>
  <g:sale_price>3499.00 TRY</g:sale_price>
  <g:sale_price_effective_date>2026-11-24T00:00+0300/2026-12-01T23:59+0300</g:sale_price_effective_date>
  <g:brand>Karaca</g:brand>
  <g:gtin>8680150042109</g:gtin>
  <g:condition>new</g:condition>
  <g:google_product_category>672</g:google_product_category>
  <g:product_type>Home &amp; Kitchen &gt; Dinnerware &gt; Dinner Sets</g:product_type>
  <g:custom_label_0>high-margin</g:custom_label_0>
  <g:custom_label_1>bf-2026</g:custom_label_1>
</item>

Zwróć uwagę na &amp; i &gt; w product_type. Niezakodowane znaki & w adresach URL i ścieżkach kategorii to najczęstsza przyczyna plików XML, których w ogóle nie da się sparsować.

5. Co zmieniło się w 2026 roku

Trzy zmiany w specyfikacji danych produktowych Google warto wdrożyć już teraz, a nie w ostatniej chwili.

Minimalna rozdzielczość zdjęć wynosi teraz 500x500 px dla image_link i additional_image_link, we wszystkich kategoriach i metodach marketingowych. Ostrzeżenia zaczęły pojawiać się w Merchant Center w kwietniu 2026 roku; egzekwowanie rozpoczyna się 31 stycznia 2027 roku. Google może automatycznie powiększać niektóre mniejsze zdjęcia, ale traktowanie tego jako rozwiązania to błąd — powiększone zdjęcia wyglądają na powiększone, a jakość zdjęcia wpływa na CTR.

video_link działa i jest wyświetlany. Filmy przesyłane przez ten atrybut kwalifikują się do wyświetlania od 30 czerwca 2026 roku, z weryfikacją zgodności z zasadami i jakości. Błędy blokują film, ale nie ofertę, co oznacza, że to pole o niskim ryzyku. Większość katalogów nie ma filmów dla większości SKU i właśnie dlatego generowanie ich na dużą skalę z danych feedu stało się dziś przewagą konkurencyjną, a nie miłym dodatkiem.

Rozszerzono ustawienia wysyłki na poziomie produktu. handling_cutoff_time ustala dzienny termin przetwarzania zamówień, a minimum_order_value określa minimalną wartość zamówienia dla dostawy. Atrybut shipping otrzymał też podatrybuty loyalty_program_label i loyalty_tier_label dla korzyści w dostawie związanych z programami lojalnościowymi.

Kierunek zmian jest konsekwentny: Google stale przenosi szczegóły, które kiedyś były na poziomie konta, na poziom produktu. Wszystko, co jest wyrażane dla każdego produktu, może zautomatyzować warstwa feedu, a proces ręczny — nie.

6. Mapa branż

Retail to jeden wiersz tej tabeli, a nie cała tabela.

BranżaMiejsce docelowe w GoogleTyp katalogu MetaInne popularne kanały
Retail / e-commerceReklamy produktowe, bezpłatne informacje o produktachProdukty (e-commerce)Marketplace’y, porównywarki cen, sieci afiliacyjne
Sprzedaż stacjonarnaReklamy lokalnego asortymentuProdukty z dostępnością lokalnąLokalne platformy wyszukiwania
MotoryzacjaReklamy pojazdów, oferty pojazdówPojazdy / oferty pojazdówPortale ogłoszeniowe, marketplace’y motoryzacyjne
Hotele i zakwaterowanieReklamy hoteli (Hotel Center)HoteleOTA, metawyszukiwarki
LotyGoogle FlightsLotyMetawyszukiwarki
Kierunki i pakiety—Kierunki podróżyAfilianci turystyczni
Nieruchomości—Oferty nieruchomościPortale nieruchomości, agregatory nieruchomości
RekrutacjaDane strukturalne ofert pracy (JobPosting)—Portale z ofertami pracy, dystrybucja z ATS, agregatory ofert pracy
Wydarzenia, mecze, seanseProdukty (modelowane)Produkty (modelowane)Platformy biletowe, DSP

Dwie zasady strukturalne, które warto przyswoić, zanim cokolwiek zbudujesz:

Katalog Meta zawiera dokładnie jeden typ asortymentu. Nie możesz mieszać hoteli i produktów. Jeśli sprzedajesz jedno i drugie, potrzebujesz dwóch katalogów.

Google rozdziela branże na poziomie źródła danych. Źródło danych o pojazdach musi być kierowane wyłącznie na reklamy pojazdów. Przesłanie pojazdów do źródła danych Shopping skutkuje odrzuceniami, a nie ofertami — a źródła danych o pojazdach nie powinny zawierać części zamiennych ani akcesoriów, które należą do zwykłego feedu produktowego.

7. Feedy pojazdów

Motoryzacja to branża, w której podejście „po prostu użyj specyfikacji retail” zawodzi najbardziej oczywiście. Samochód to unikalny obiekt fizyczny z prawnym identyfikatorem, a nie SKU z głębokością stanów.

Atrybuty pojazdów Google nadbudowane są na wspólnym rdzeniu:

AtrybutUwagi
vinPrawna tożsamość pojazdu. Błędnie sformatowane numery VIN i niezgodności VIN/rocznika to najczęstsze przyczyny odrzuceń.
year, model, trimWersja wyposażenia (trim) odróżnia ofertę od konkurencji w obrębie tego samego modelu.
body_styleWartość z listy (enum).
mileageWartość plus jednostka (miles lub km). Musi odpowiadać stronie docelowej. Wartości spoza wiarygodnego zakresu dla danego rocznika są oznaczane.
conditionNowy, używany, certyfikowany używany.
certified_pre-ownedOsobna flaga.
engine, fuel_consumption, energy_consumption, co2_emissions, emissions_standardCoraz ważniejsze na rynkach UE.
electric_range, fuel_consumption_discharged_batterySpecyficzne dla pojazdów elektrycznych i hybrydowych.
date_first_registeredMiesiąc i rok pierwszej rejestracji.
vehicle_msrp, vehicle_price_typeCena katalogowa a cena ofertowa.
vehicle_fulfillmentCzy pojazd jest w salonie, może zostać przeniesiony lub dostarczony. Atrybut grupowy z podatrybutem store_code.
store_codeKtóra fizyczna lokalizacja ma pojazd.
<item>
  <g:id>STK-88214</g:id>
  <g:title>2023 Volkswagen Passat 1.5 TSI Business DSG</g:title>
  <g:description>Single owner, full service history, no accident record.</g:description>
  <g:link>https://example.com/ilan/88214</g:link>
  <g:image_link>https://cdn.example.com/88214-01.jpg</g:image_link>
  <g:price>1450000.00 TRY</g:price>
  <g:condition>used</g:condition>
  <g:brand>Volkswagen</g:brand>
  <g:model>Passat</g:model>
  <g:trim>1.5 TSI Business DSG</g:trim>
  <g:year>2023</g:year>
  <g:vin>WVWZZZ3CZPE000000</g:vin>
  <g:mileage>
    <g:value>42500</g:value>
    <g:unit>km</g:unit>
  </g:mileage>
  <g:body_style>sedan</g:body_style>
  <g:color>Grey</g:color>
  <g:vehicle_fulfillment>
    <g:option>in_store</g:option>
    <g:store_code>IST-01</g:store_code>
  </g:vehicle_fulfillment>
</item>

Co odróżnia feedy pojazdów pod względem operacyjnym:

  • Każda pozycja to jedna sztuka. Każdy produkt to pojedyncza jednostka. Gdy zostanie sprzedany, musi natychmiast zniknąć z feedu — a nie przy jutrzejszej synchronizacji. Nieaktualne oferty pojazdów marnują drogie kliknięcia na samochody, których już nie ma, i szkodzą jakości konta.
  • Częstotliwość odświeżania to podstawa. Odświeżanie co cztery godziny to w motoryzacji standardowa praktyka, a nie optymalizacja.
  • Spójność ze stroną docelową jest egzekwowana. Cena i przebieg w feedzie muszą dokładnie odpowiadać stronie szczegółów pojazdu. Zmiana cen u dealera, która aktualizuje stronę, ale nie feed, w ciągu kilku godzin wywołuje falę odrzuceń.
  • Reklamy asortymentu motoryzacyjnego Meta używają osobnego słownika pól — state_of_vehicle, exterior_color, transmission, drivetrain, dealer_id — więc te same dane źródłowe wymagają innego przekształcenia dla każdego kanału.

8. Feedy turystyczne

Turystyka dzieli się na trzy odrębne typy katalogów, a błędem jest traktowanie ich jak jednego.

Hotele

Feed obiektów jest stosunkowo statyczny: nazwa, opis, adres, współrzędne, liczba gwiazdek, zdjęcia, cena początkowa. Zmieniają się dostępność i stawki, dlatego konfiguracje hotelowe zwykle łączą statyczny feed obiektów z dynamicznymi feedami typów pokoi i cen.

Podstawowe parametry: hotel_id, name, description, brand, url, image, latitude, longitude, address (z city, region, country, postal_code), base_price, currency, star_rating, neighborhood, phone, guest_ratings.

<item>
  <g:hotel_id>HTL-BDR-114</g:hotel_id>
  <g:name>Blue Bay Resort Bodrum</g:name>
  <g:description>Seafront resort with private beach, three restaurants and a spa.</g:description>
  <g:url>https://example.com/otel/blue-bay-bodrum</g:url>
  <g:image>https://cdn.example.com/htl-114-01.jpg</g:image>
  <g:latitude>37.0344</g:latitude>
  <g:longitude>27.4305</g:longitude>
  <g:address>Yalıkavak Mah. Sahil Cad. 12, Bodrum, Muğla, TR, 48990</g:address>
  <g:base_price>4200.00 TRY</g:base_price>
  <g:star_rating>5</g:star_rating>
  <g:neighborhood>Yalıkavak</g:neighborhood>
</item>

Loty

Produktem jest trasa, a nie miejsce w samolocie. Tożsamość stanowi para miejsce wylotu–miejsce docelowe: origin_airport i destination_airport jako kody IATA, plus price, url, image, description. Ceny to zwykle ceny „od” i stale się zmieniają, co sprawia, że częstotliwość aktualizacji jest decydującym ograniczeniem.

Kierunki podróży

Produktem jest miejsce, do którego sprzedajesz podróże: destination_id, name, address, neighborhood, types, price, url, image. Przydatne w prospectingu w górnej części lejka, gdy podróżny ma intencję, ale nie ma na myśli konkretnego obiektu.

Powracający problem w turystyce polega na tym, że cena i dostępność są obliczane, a nie przechowywane. „Cena” hotelu zależy od dat, liczby osób i długości pobytu; cena lotu — od chwili, w której pytasz. Feedy chcą jednej liczby. Wybór tej liczby — najniższa dostępna w ciągu najbliższych 30 dni, najniższa na najbliższy weekend, średnia — to decyzja biznesowa, która po cichu decyduje o wynikach reklam, i warto ją podjąć świadomie, zamiast zdawać się na to, co wygenerował eksport.

9. Feedy nieruchomości

Pod względem struktury podobne do pojazdów: unikalne aktywa fizyczne, każda pozycja to jedna sztuka, wysoka wartość kliknięcia i oferta, która musi zniknąć w chwili, gdy nieruchomość zostanie sprzedana lub wynajęta.

Podstawowe parametry: home_listing_id, name, description, address, latitude, longitude, url, image, price, currency, property_type (mieszkanie, dom, działka, nieruchomość komercyjna), listing_type (sprzedaż, wynajem, rynek pierwotny), num_beds, num_baths, area_size, area_unit, year_built, availability, agent_name, agent_phone.

<item>
  <g:home_listing_id>EMK-2291</g:home_listing_id>
  <g:name>3+1 Apartment with Sea View — Kadıköy</g:name>
  <g:description>Renovated 3+1 apartment, 4th floor, elevator, closed parking.</g:description>
  <g:address>Caferağa Mah., Kadıköy, İstanbul, TR</g:address>
  <g:latitude>40.9862</g:latitude>
  <g:longitude>29.0299</g:longitude>
  <g:url>https://example.com/ilan/2291</g:url>
  <g:image>https://cdn.example.com/emk-2291-01.jpg</g:image>
  <g:price>12500000.00 TRY</g:price>
  <g:property_type>apartment</g:property_type>
  <g:listing_type>for_sale</g:listing_type>
  <g:num_beds>3</g:num_beds>
  <g:num_baths>2</g:num_baths>
  <g:area_size>135</g:area_size>
  <g:area_unit>sq_m</g:area_unit>
  <g:availability>available</g:availability>
</item>

Jedna rzecz, która nie jest problemem feedu, ale zatrzyma twoją kampanię: mieszkalnictwo to w Meta kategoria reklam objęta ograniczeniami. Kampanie promujące oferty nieruchomości muszą być zadeklarowane w specjalnej kategorii reklam dotyczących mieszkalnictwa, co ogranicza opcje targetowania. Katalog może być idealny, a kampania i tak się nie powiedzie, jeśli to nie zostanie ustawione.

10. Feedy ofert pracy

Rekrutacja używa zupełnie innej struktury dokumentu — <source> i <job> zamiast <rss> i <item> — i warto ją zobaczyć, bo pokazuje, że „feed XML” to wzorzec, a nie jeden schemat.

<?xml version="1.0" encoding="UTF-8"?>
<source>
  <publisher>Example Company</publisher>
  <publisherurl>https://example.com</publisherurl>
  <lastBuildDate>Wed, 12 Aug 2026 09:00:00 GMT</lastBuildDate>

  <job>
    <title><![CDATA[Senior Backend Engineer]]></title>
    <date><![CDATA[Mon, 10 Aug 2026 08:00:00 GMT]]></date>
    <referencenumber><![CDATA[ENG-4471]]></referencenumber>
    <url><![CDATA[https://example.com/careers/eng-4471]]></url>
    <company><![CDATA[Example Company]]></company>
    <city><![CDATA[İstanbul]]></city>
    <state><![CDATA[İstanbul]]></state>
    <country><![CDATA[TR]]></country>
    <postalcode><![CDATA[34394]]></postalcode>
    <description><![CDATA[<p>We are hiring a senior backend engineer to work on our data pipeline...</p>]]></description>
    <salary><![CDATA[120000 - 160000 TRY monthly]]></salary>
    <jobtype><![CDATA[fulltime]]></jobtype>
    <category><![CDATA[Engineering]]></category>
    <experience><![CDATA[5+ years]]></experience>
  </job>

</source>

Cztery zasady specyficzne dla feedów ofert pracy:

  1. CDATA to norma, a nie wyjątek. Opisy stanowisk zawierają HTML, znaki ampersand i apostrofy. Opakowanie każdego pola w <![CDATA[...]]> pozwala uniknąć całej klasy błędów parsowania.
  2. Lokalizacja wymaga co najmniej miasta, regionu i kraju. Pomiń je, a ogłoszenie domyślnie straci widoczność organiczną w głównych agregatorach.
  3. Obsadzone stanowiska trzeba usuwać, a nie oznaczać jako zamknięte. Nie ma odpowiednika availability. Obecność w feedzie jest sygnałem dostępności, a agregatory karzą feedy zawierające nieaktualne ogłoszenia.
  4. Jeden język, jeden wpis oferty. Ogłoszenie opublikowane w dwóch językach wymaga dwóch osobnych wpisów z różnymi numerami referencyjnymi.

Niezależnie od feedu, dane strukturalne JobPosting w JSON-LD na stronie kariery sprawiają, że stanowisko kwalifikuje się do wyświetlania w wynikach wyszukiwania ofert pracy. Oba elementy się uzupełniają: feed odpowiada za dystrybucję do agregatorów, dane strukturalne — za wyszukiwanie organiczne. Większość zespołów rekrutacyjnych robi jedno, a drugiego nie.

11. Asortyment ograniczony w czasie

Najciekawsza kategoria feedów nie ma oficjalnej specyfikacji, bo platformy nigdy jej nie przewidziały: asortyment, którego definiującym atrybutem jest kiedy, a nie co.

Mecze piłki nożnej. Koncerty. Seanse kinowe. Odloty samolotów. Przedmioty na aukcjach. Terminy rezerwacji w restauracjach. Okna dostaw.

Mają one wszystkie właściwości produktów — tożsamość, cenę, zdjęcie, stronę docelową — plus jedną, dla której specyfikacja retail nie ma pola: termin przydatności mierzony w godzinach. Mecz, który już się rozpoczął, nie jest „niedostępny” — jest bez znaczenia.

Sprawdzone podejście polega na modelowaniu ich jako standardowych produktów katalogowych i kodowaniu wymiaru czasu w polach, które platforma już rozumie:

<item>
  <g:id>MTC-2026-08-16-GS-FB</g:id>
  <g:title>Galatasaray - Fenerbahçe | Super League, Week 2</g:title>
  <g:description>Saturday 16 August, 19:00. Live odds and in-play betting.</g:description>
  <g:link>https://example.com/mac/2026-08-16-gs-fb</g:link>
  <g:image_link>https://cdn.example.com/creatives/mtc-2026-08-16-gs-fb.jpg</g:image_link>
  <g:availability>in_stock</g:availability>
  <g:price>1.00 TRY</g:price>
  <g:product_type>Football &gt; Super League &gt; Week 2</g:product_type>
  <g:custom_label_0>2026-08-16</g:custom_label_0>
  <g:custom_label_1>derby</g:custom_label_1>
  <g:custom_label_2>ms1-2.10</g:custom_label_2>
  <g:expiration_date>2026-08-16T19:00+0300</g:expiration_date>
</item>

Trzy rzeczy sprawiają, że to działa:

  • expiration_date lub równoważna reguła usuwania, aby produkt znikał z katalogu w momencie rozpoczęcia meczu, a nie przy następnej zaplanowanej synchronizacji.
  • Etykiety niestandardowe niosące wymiar czasu, aby kampanie można było strukturyzować wokół „ten weekend”, „derby” czy „kursy powyżej 2.0”.
  • Kreacja dla każdego produktu. Tu zwykle wszystko się zatrzymuje. Terminarz z kilkuset meczami tygodniowo wymaga kilkuset grafik, z których każda zawiera drużyny, datę, godzinę i aktualne kursy. Żaden zespół graficzny tego nie wyprodukuje. Generowanie kreacji z wiersza feedu to jedyna metoda, która nadąża — dokładnie tak Bilyoner po raz pierwszy uruchomił reklamy katalogowe i zwiększył ROAS o 49%.

Jeśli twój asortyment ma godzinę rozpoczęcia, jego miejsce jest w katalogu. Barierą prawie zawsze jest format, a nie koncepcja.

12. Feedy lokalnego asortymentu

Lokalny asortyment plasuje się między retailem a branżami specjalistycznymi: te same produkty, opisane dla każdej fizycznej lokalizacji.

Parametry: id, store_code, quantity, price, sale_price, sale_price_effective_date, availability, pickup_method (zakup, rezerwacja, wysyłka do sklepu, nieobsługiwane), pickup_sla (ten sam dzień, następny dzień, kilka dni).

Kluczowe jest to, że feed lokalny to uzupełnienie, a nie zamiennik. Odwołuje się do produktów w głównym feedzie produktowym przez id i dodaje informacje dla poszczególnych sklepów. Jeden produkt, wiele sklepów, wiele wierszy.

Warto odnotować zmianę z 2026 roku: wersje online i stacjonarne tego samego produktu z różnymi cenami lub dostępnością wymagają teraz osobnych identyfikatorów produktów, zamiast być łączone w jeden. Feedy, które je scaliły, są proszone o ich rozdzielenie.

13. Zasady formatowania

Dotyczą każdego typu feedu omówionego w tym artykule i razem odpowiadają za zdecydowaną większość feedów, które całkowicie zawodzą.

Kodowanie. Zawsze UTF-8, zadeklarowane w deklaracji XML i serwowane z pasującym nagłówkiem Content-Type. Niezgodność między zadeklarowanym a faktycznym kodowaniem uszkadza każdy znak spoza ASCII.

Escapowanie. W treści XML trzeba zakodować pięć znaków: & → &amp;, < → &lt;, > → &gt;, " → &quot;, ' → &apos;. Niezakodowane znaki ampersand w adresach URL z parametrami śledzenia to przyczyna numer jeden feedów, których nie da się sparsować. Alternatywą jest CDATA, standardowa praktyka w feedach ofert pracy, przydatna wszędzie tam, gdzie opisy zawierają znaczniki.

Daty. ISO 8601 z jawnym przesunięciem strefy czasowej. 2026-08-16T19:00+0300, a nie 16.08.2026 19:00. Feedy obsługujące wiele rynków z jednego źródła bez stref czasowych generują produkty, które wygasają o kilka godzin za wcześnie lub za późno.

Ceny. Wartość i waluta ISO 4217, kropka dziesiętna zamiast przecinka, bez separatora tysięcy. 4299.00 TRY. A cena w feedzie musi odpowiadać stronie docelowej — na większości platform jest to egzekwowane przez crawler.

Wartości z list (enum) są wrażliwe na wielkość liter i format, a do tego różnią się między platformami. Google oczekuje in_stock; Meta oczekuje in stock. Ta jedna różnica zepsuła więcej importów katalogów niż jakakolwiek inna. Nigdy nie zakładaj, że wartość enum przeniesie się między miejscami docelowymi.

Dostarczanie pliku. Kompresja gzip dla dużych plików, stały adres URL HTTPS, brak uwierzytelniania, chyba że platforma wyraźnie je obsługuje, i serwer odpowiadający w limicie czasu platformy. Adres URL feedu za ochroną Cloudflare przed botami to adres URL feedu, który nie zostanie pobrany.

Częstotliwość aktualizacji powinna wynikać ze zmienności danych źródłowych, a nie z konwencji: co godzinę lub częściej dla kursów, cen lotów i szybko rotujących zapasów w retailu; co kilka godzin dla pojazdów i nieruchomości; raz dziennie dla stabilnych katalogów.

14. XML vs CSV vs JSON vs API

FormatNajlepszy doNa co uważać
XMLZagnieżdżonych i powtarzających się struktur — wysyłka według regionu, wiele zdjęć, atrybuty grupoweRozwlekły; błędy escapowania psują cały plik
CSVProstych, płaskich katalogów, szybkich ręcznych edycjiPrzecinki w tytułach i opisach; błędy cudzysłowów
TSVTego samego, ale bezpieczniejPrawie nic — tabulatory rzadko występują w danych produktowych
JSONNowoczesnych API, procesów budowanych przez programistówNie każde miejsce docelowe go akceptuje
APIAktualizacji w czasie rzeczywistym, bardzo dużych katalogów, częściowych aktualizacjiKoszt prac programistycznych; limity zapytań

XML pozostaje domyślnym wyborem dla wszystkiego, co ma zagnieżdżenia, dlatego feedy pojazdów, turystyczne i retailowe z rozbudowanymi danymi o wysyłce to zwykle XML, a proste katalogi modowe często TSV. Warto też pamiętać, że kilka dużych miejsc docelowych przechodzi na pobieranie danych przede wszystkim przez API, więc traktowanie pliku jako jedynej ścieżki integracji to ryzyko w średnim terminie.

Jeśli twoje tytuły zawierają przecinki — a tytuły z kolorem i rozmiarem prawie zawsze je zawierają — wybierz TSV zamiast CSV. Znika cała klasa błędów parsowania.

15. Lista kontrolna przed startem

  • [ ] Plik przechodzi walidację w walidatorze XML, zanim w ogóle zbliży się do platformy
  • [ ] UTF-8 jest zadeklarowane i poprawnie serwowane; znaki spoza ASCII wyświetlają się prawidłowo
  • [ ] Każdy & w każdym adresie URL jest zakodowany lub pole jest opakowane w CDATA
  • [ ] Identyfikatory są unikalne, stałe między synchronizacjami i zgodne ze zdarzeniami piksela lub tagu
  • [ ] Obecne są wszystkie wymagane atrybuty dla docelowego kanału — zweryfikowane ze specyfikacją tego kanału, a nie ogólną
  • [ ] Wartości enum są przekształcane dla każdego miejsca docelowego, a nie kopiowane
  • [ ] Ceny dokładnie odpowiadają stronom docelowym, łącznie z walutą i sposobem uwzględnienia podatków
  • [ ] Daty są w formacie ISO 8601 z przesunięciem strefy czasowej
  • [ ] Zdjęcia spełniają minimum 500x500 i ładują się przez HTTPS bez przekierowań
  • [ ] Sprzedane, obsadzone, wygasłe lub zakończone pozycje znikają z feedu we właściwym czasie
  • [ ] Częstotliwość aktualizacji odpowiada temu, jak szybko faktycznie zmieniają się dane źródłowe
  • [ ] Adres URL feedu jest publicznie dostępny i nie jest blokowany przez ochronę przed botami
  • [ ] Istnieje reguła monitorowania nieoczekiwanych zmian liczby produktów

16. FAQ

Czy XML to nadal właściwy format w 2026 roku?
Dla wszystkiego, co ma zagnieżdżone dane — tak. Dla płaskich katalogów TSV jest prostszy i mniej podatny na błędy. Przy wymaganiach czasu rzeczywistego integracja przez API wygrywa z każdym plikiem. Format powinien wynikać z danych, a nie z przyzwyczajenia.

Czy mogę używać jednego feedu dla każdej platformy?
Jednego źródła — tak. Jednego pliku — nie. Nazwy pól, wartości enum, limity znaków i wymagane atrybuty różnią się w zależności od miejsca docelowego, a różnice nie są kosmetyczne. Działająca architektura to jeden kanoniczny katalog z przekształceniami dla poszczególnych kanałów stosowanymi przy eksporcie.

Co, jeśli mój asortyment to nie produkty?
Wtedy potrzebujesz specyfikacji dla swojej branży, a nie retailowej. Pojazdy, hotele, loty, kierunki podróży, nieruchomości i oferty pracy mają własne. A jeśli twój asortyment to coś, dla czego żadna platforma nie ma specyfikacji — mecze, seanse, terminy, przedmioty aukcyjne — modelujesz go jako produkty i kodujesz brakujący wymiar w istniejących polach.

Jak często należy aktualizować feed?
Tak często, jak istotnie zmieniają się dane źródłowe. Pojazd, który sprzedano dziś rano, a który nadal jest reklamowany po południu, wydaje pieniądze na nic.

Czy potrzebuję GTIN?
W retailu w praktyce tak. GTIN łączy twój produkt z wiedzą platformy o produktach, co coraz częściej decyduje o tym, czy w ogóle pojawisz się w porównaniach i wynikach zakupowych opartych na AI. W przypadku pojazdów, nieruchomości i ofert pracy odpowiednikami pól tożsamości są vin, identyfikator oferty i numer referencyjny.


Gdzie robi się trudno

Żadna z poszczególnych zasad w tym artykule nie jest trudna. Trudność polega na tym, że jest ich kilkaset, różnią się w zależności od miejsca docelowego, zmieniają się bez ostrzeżenia, a ich naruszenie kończy się cichą porażką.

Jeden katalog eksportowany do Google, Meta, TikTok i trzech marketplace’ów to sześć różnych kontraktów spełnianych jednocześnie z jednego źródła prawdy. Robienie tego ręcznie oznacza utrzymywanie sześciu plików i uzgadnianie ich przy każdej zmianie katalogu.

Do tego właśnie zbudowano Feedance — reguły feedu normalizujące atrybuty u źródła, eksporty do kanałów, które stosują właściwe przekształcenie dla każdego z ponad 200 miejsc docelowych bez ingerencji w dane źródłowe, Feed Protection, który wychwytuje brakujące atrybuty i nieoczekiwane zmiany liczby produktów, zanim zrobi to platforma, oraz Creative Suite, który generuje grafikę lub wideo dla każdego wiersza feedu w katalogach, w których ręczna produkcja nigdy nie była realna.

Obsługuje branże inne niż retail jako pełnoprawne, a nie dodane na doczepkę — asortyment turystyczny z cenami na żywo, katalogi bukmacherskie z danymi match time, kanały dystrybucji ofert motoryzacyjnych, nieruchomości i ofert pracy.

Jeśli chcesz wiedzieć, w jakim stanie jest twój obecny feed, zanim cokolwiek zmienisz, nasze bezpłatne narzędzie do audytu feedu bezpłatnie oceni go pod kątem kompletności, jakości danych i kondycji technicznej. Możesz też umówić 15-minutowe demo, a przyjrzymy się mu razem.


Ostatnia aktualizacja: sierpień 2026. Specyfikacje platform często się zmieniają; przed wdrożeniem zweryfikuj aktualne wymagania w oficjalnej dokumentacji każdego miejsca docelowego.

Chcesz, by ktoś jeszcze spojrzał na twój feed? Przejrzymy go razem z tobą i pokażemy luki przed kolejnym przesłaniem.
Zrób bezpłatny audyt
Cagdas Polat
Autor
Cagdas Polat

Współzałożyciel Feedance, gdzie wykorzystuje swoje doświadczenie jako inżynier komputerowy i marketer, aby dostarczać analityczne wnioski. Skupia się na przekształcaniu danych w konkretne strategie i pomaga markom osiągać znaczący wzrost w świecie cyfrowym.

LinkedIn

Zobacz, które
produkty zarabiają.

Połącz swój feed i GA4. Pokażemy Product Score, 4T, Price War i Broken Size na twoim własnym katalogu.