Przejdź do treści
Blog / Konfiguracja

Plik XML do Google Shopping: jak stworzyć poprawny feed produktowy dla Merchant Center (ze wzorem)

Plik XML do Google Shopping: jak stworzyć poprawny feed produktowy dla Merchant Center (ze wzorem)

W kampaniach produktowych i Performance Max feed bywa większą dźwignią wyników niż ustawienia samej kampanii — to z danych produktowych Google dowiaduje się, na jakie zapytania pokazać produkt, z jaką ceną i zdjęciem.

Prowadząc kampanie dla sklepów internetowych, regularnie widzimy tę samą sytuację: budżet i stawki dopięte, a wyniki blokuje feed — odrzucone produkty, rozjazd cen ze stroną albo tytuły, których nie da się dopasować do zapytań. W tym przewodniku pokazujemy, jak od zera zbudować poprawny plik XML dla Google Merchant Center: strukturę, atrybuty wymagane, kompletny wzór do skopiowania oraz to, co decyduje o skuteczności feedu w kampaniach.

Czym jest feed produktowy i dlaczego akurat XML

Feed produktowy to plik z danymi wszystkich produktów sklepu, który zasila Google Merchant Center — a stamtąd kampanie Performance Max, kampanie produktowe oraz bezpłatne informacje o produktach (free listings). Merchant Center przyjmuje kilka formatów: XML (RSS 2.0 lub Atom), pliki rozdzielane tabulatorami (TSV), arkusz Google i Content API.

XML to standard przy automatycznym generowaniu feedu ze sklepu: ma jednoznaczną strukturę, obsługuje atrybuty zagnieżdżone (np. koszty dostawy) i jest natywnie wspierany przez moduły większości platform e-commerce. Arkusz Google sprawdza się przy kilkudziesięciu produktach zarządzanych ręcznie; przy setkach i tysiącach pozycji z aktualizowanymi stanami magazynowymi jedyną sensowną drogą jest plik generowany automatycznie.

Szkielet pliku XML

Feed w formacie RSS 2.0 z przestrzenią nazw Google (xmlns:g). Każdy produkt to osobny element <item> wewnątrz <channel>:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
  <channel>
    <title>Nazwa sklepu</title>
    <link>https://www.twojsklep.pl</link>
    <description>Feed produktowy — Google Merchant Center</description>

    <item>
      <!-- atrybuty produktu -->
    </item>

  </channel>
</rss>

Dwie zasady techniczne, które oszczędzają godzin debugowania: kodowanie UTF-8 oraz poprawne escapowanie znaków specjalnych — & musi być zapisany jako &amp;, a opisy produktów najbezpieczniej zamykać w sekcji <![CDATA[ ... ]]>, która pozwala użyć w treści dowolnych znaków bez psucia struktury pliku.

Atrybuty wymagane

AtrybutZasady
g:idUnikalny, stały identyfikator produktu (SKU). Nie zmieniaj go po publikacji — zmiana ID to dla Google nowy produkt i utrata historii.
g:titleDo 150 znaków (w reklamie widać ok. 70). Bez WIELKICH LITER i tekstów promocyjnych.
g:descriptionDo 5000 znaków. Rzetelny opis produktu — bez treści o sklepie, promocjach czy dostawie.
g:linkAdres strony produktu: HTTPS, dostępny dla Googlebota, zgodny z domeną zweryfikowaną w Merchant Center.
g:image_linkGłówne zdjęcie: min. 100×100 px (odzież 250×250 px), bez znaków wodnych, logotypów i napisów promocyjnych.
g:priceFormat 149.99 PLN — kropka dziesiętna, spacja, kod waluty. W Polsce ceny brutto, z VAT, identyczne z ceną na stronie produktu.
g:availabilityin_stock, out_of_stock, backorder lub preorder (przy przedsprzedaży dodatkowo g:availability_date).
g:brandMarka — wymagana dla nowych produktów (poza kategoriami typu książki i nagrania).
g:gtinKod GTIN (w Europie zwykle EAN-13) — wymagany dla każdego produktu, któremu producent nadał identyfikator.
g:conditionWymagany dla produktów używanych (used) i odnowionych (refurbished); dla nowych warto zawsze podać new.

Do tego dwie grupy sytuacyjne. Produkty bez GTIN: podaj g:brand + g:mpn, a dla produktów bez żadnych identyfikatorów (np. rękodzieło, produkty własnej marki bez kodów) ustaw g:identifier_exists na false — próba wpisania zmyślonego GTIN kończy się odrzuceniem. Odzież i akcesoria: atrybuty g:color, g:size, g:gender, g:age_group są obowiązkowe m.in. na rynkach USA, Wielkiej Brytanii, Niemiec i Francji; w Polsce formalnie rekomendowane, ale w praktyce traktujemy je jak wymagane — bez nich cierpi grupowanie wariantów i dopasowanie do zapytań.

Atrybuty rekomendowane, które robią różnicę w kampaniach

  • g:item_group_id — spina warianty tego samego produktu (rozmiary, kolory). Każdy wariant to osobny <item> z własnym g:id i wspólnym g:item_group_id.
  • g:product_type — Twoje własne drzewo kategorii (np. Odzież > Męska > Koszulki). Podstawa czytelnej struktury kampanii i raportów.
  • g:google_product_category — kategoria z taksonomii Google. Google przypisuje ją automatycznie, ale przy niszowych produktach warto wskazać ją samodzielnie.
  • g:sale_price + g:sale_price_effective_date — cena promocyjna z przedziałem obowiązywania; w reklamie pojawia się przekreślona cena bazowa.
  • g:additional_image_link — do 10 dodatkowych zdjęć, w tym packshoty i zdjęcia aranżacyjne (lifestyle).
  • g:shipping — koszt dostawy per kraj/usługa, jeśli nie konfigurujesz dostawy globalnie w ustawieniach Merchant Center.
  • g:custom_label_0g:custom_label_4 — etykiety własne, niewidoczne dla klienta. Z perspektywy prowadzenia kampanii to najbardziej niedoceniany atrybut feedu: segmentacja po marży, rotacji, sezonowości czy statusie „bestseller” pozwala budować osobne grupy zasobów w Performance Max i różnicować ROAS docelowy zamiast wrzucać cały asortyment do jednego worka.

Kompletny wzór: produkt z wariantem

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
  <channel>
    <title>TwojSklep.pl</title>
    <link>https://www.twojsklep.pl</link>
    <description>Feed produktowy — Google Merchant Center</description>

    <item>
      <g:id>SKU_12345</g:id>
      <g:title>Koszulka bawełniana MarkaX męska granatowa L</g:title>
      <g:description><![CDATA[Koszulka ze 100% bawełny czesanej o gramaturze 180 g/m².
      Wzmocnione szwy na ramionach, krój regular. Certyfikat OEKO-TEX Standard 100.]]></g:description>
      <g:link>https://www.twojsklep.pl/koszulka-bawelniana-granatowa?rozmiar=L</g:link>
      <g:image_link>https://www.twojsklep.pl/img/sku12345-front.jpg</g:image_link>
      <g:additional_image_link>https://www.twojsklep.pl/img/sku12345-model.jpg</g:additional_image_link>
      <g:price>149.99 PLN</g:price>
      <g:sale_price>129.99 PLN</g:sale_price>
      <g:sale_price_effective_date>2026-08-10T00:00:00+02:00/2026-08-24T23:59:59+02:00</g:sale_price_effective_date>
      <g:availability>in_stock</g:availability>
      <g:condition>new</g:condition>
      <g:brand>MarkaX</g:brand>
      <g:gtin>5901234123457</g:gtin>
      <g:mpn>MX-TS-2026-NVY-L</g:mpn>
      <g:item_group_id>MX-TS-2026</g:item_group_id>
      <g:color>granatowy</g:color>
      <g:size>L</g:size>
      <g:gender>male</g:gender>
      <g:age_group>adult</g:age_group>
      <g:google_product_category>212</g:google_product_category>
      <g:product_type>Odzież &gt; Męska &gt; Koszulki</g:product_type>
      <g:shipping>
        <g:country>PL</g:country>
        <g:service>Kurier</g:service>
        <g:price>14.99 PLN</g:price>
      </g:shipping>
      <g:custom_label_0>bestseller</g:custom_label_0>
      <g:custom_label_1>marza-wysoka</g:custom_label_1>
    </item>

    <item>
      <g:id>SKU_12346</g:id>
      <g:title>Koszulka bawełniana MarkaX męska granatowa XL</g:title>
      <!-- pozostałe atrybuty jak wyżej -->
      <g:item_group_id>MX-TS-2026</g:item_group_id>
      <g:size>XL</g:size>
    </item>

  </channel>
</rss>

Drugi <item> pokazuje zasadę wariantów: własne g:id, g:gtin i g:mpn, ten sam g:item_group_id, a różnice opisane atrybutami wariantu (g:size, g:color).

Jak wygenerować i podpiąć feed

Generowanie. Większość platform ma gotowe rozwiązania: WooCommerce i PrestaShop przez wtyczki/moduły, Shoper i IdoSell z wbudowanymi generatorami feedów. Przy sklepach autorskich feed generuje zadanie cyklicznie budujące plik z bazy — z aktualizacją minimum raz dziennie, a przy zmiennych stanach magazynowych częściej. Nieaktualny availability i price to najkrótsza droga do odrzuceń.

Podpięcie. W Merchant Center dodajesz źródło danych jako zaplanowane pobieranie z adresu URL (harmonogram fetch) — plik musi być publicznie dostępny, limit rozmiaru to 4 GB. Jeden feed obsługuje jeden kraj sprzedaży i język; ekspansja na kolejne rynki to kolejne feedy lub konfiguracja wielu krajów z tym samym językiem.

Siatka bezpieczeństwa. Wdrożenie danych strukturalnych Product (schema.org) na kartach produktów pozwala Google automatycznie korygować drobne rozjazdy ceny i dostępności między feedem a stroną (automatyczne aktualizacje produktów). To nie zastępuje świeżego feedu, ale ratuje przed masowymi odrzuceniami przy nagłych zmianach cen.

Feedy uzupełniające. Do modyfikacji atrybutów bez ruszania feedu głównego (np. dopisanie custom labels albo poprawa tytułów) służą feedy uzupełniające (supplemental feeds), łączone z głównym po g:id. W pracy agencyjnej to standardowe narzędzie: pozwala optymalizować dane produktowe niezależnie od cyklu wdrożeniowego sklepu.

Najczęstsze powody odrzuceń produktów

  • Rozjazd ceny między feedem a stroną — najczęstszy powód, zwykle efekt rzadkiej aktualizacji feedu lub promocji nakładanych tylko w sklepie. Ten przypadek opisaliśmy osobno w poradniku o błędzie „nieprawidłowa cena produktu” w Merchant Center.
  • Rozjazd dostępności — produkt in_stock w feedzie, niedostępny na stronie.
  • Błędny lub zmyślony GTIN — kod nieprzechodzący walidacji albo przypisany do innego produktu.
  • Zdjęcia z nakładkami — znaki wodne, logotypy, plakietki „promocja”, zbyt mała rozdzielczość.
  • Tekst promocyjny w tytułach — „HIT!”, „NAJTANIEJ”, wykrzykniki, całe wyrazy wersalikami.
  • Problemy ze stroną docelową — 404, przekierowania, blokada Googlebota w robots.txt, brak HTTPS.
  • Brak atrybutów odzieżowych na rynkach, gdzie są wymagane.
  • Niezgodność waluty lub języka z krajem docelowym feedu.

Status produktów i konkretne przyczyny odrzuceń sprawdzisz w Merchant Center w zakładce produktów — każdą pozycję Google opisuje kodem problemu wraz ze wskazaniem atrybutu do poprawy.

Optymalizacja feedu pod Performance Max

Poprawny feed to warunek startu; skuteczny feed to praca, która trwa cały czas życia kampanii. Trzy obszary, od których zaczynamy w pracy z klientami:

Tytuły. To główny sygnał dopasowania produktu do zapytań. Sprawdzoną strukturą jest [Marka] [Typ produktu] [cechy: model, kolor, rozmiar, pojemność] z najważniejszymi słowami na początku — w reklamie tytuł jest ucinany, więc to, co kluczowe, musi zmieścić się w pierwszych ~70 znakach. Tytuł „Koszulka bawełniana MarkaX męska granatowa L” wygra z „Nowość! Wygodna koszulka na lato”.

Segmentacja przez custom labels. Etykiety marży, rotacji i sezonowości pozwalają rozdzielić asortyment na grupy zasobów z różnymi celami ROAS — zamiast pozwalać algorytmowi wydawać budżet głównie na bestsellery o niskiej marży.

Spójność z analityką. g:id z feedu musi być identyczne z item_id w zdarzeniach e-commerce GA4 — to warunek działania remarketingu dynamicznego i spójnych raportów produktowych. Jak poprawnie wdrożyć te zdarzenia, opisaliśmy w przewodniku po zdarzeniach e-commerce w GA4.

Dla sklepów działających w UE dochodzi jeszcze wybór CSS (porównywarki cen, przez którą emitowane są reklamy produktowe) — kampanie mogą działać przez Google Shopping lub zewnętrzne CSS, co bywa elementem optymalizacji kosztów kliknięcia.

FAQ — najczęstsze pytania o feed do Google Shopping

XML, TSV czy arkusz Google — co wybrać?

Arkusz Google wystarczy przy małym, ręcznie zarządzanym asortymencie. Przy pełnym sklepie standardem jest XML generowany automatycznie z platformy — tylko on gwarantuje aktualne ceny i stany bez ręcznej pracy. TSV spotyka się głównie przy eksportach z systemów ERP.

Jak często aktualizować feed?

Minimum raz dziennie; przy częstych zmianach cen i stanów — kilka razy dziennie. Harmonogram pobierania ustawia się w Merchant Center, a dane strukturalne na stronie działają jako zabezpieczenie przed rozjazdami między aktualizacjami.

Czy ceny w feedzie mają być brutto?

W Polsce tak — ceny z VAT, dokładnie takie, jakie klient widzi na stronie produktu. Rozjazd nawet o grosz może skutkować odrzuceniem produktu.

Nie mam kodów GTIN — co zrobić?

Jeśli producent nadał kody, musisz je pozyskać i podać. Dla produktów własnych bez kodów: g:brand + g:mpn, a przy braku jakichkolwiek identyfikatorów g:identifier_exists ustawione na false. Nigdy nie wpisuj wymyślonych kodów.

Ile trwa zatwierdzenie produktów w Merchant Center?

Weryfikacja nowych produktów trwa zwykle od kilku godzin do trzech dni roboczych. Po większych zmianach w feedzie warto zaplanować bufor przed startem kampanii — zwłaszcza sezonowych.

Źródła

← Wróć do kategorii Konfiguracja

Ustawienia cookies

Wykorzystanie plików cookie

Używamy plików cookies, aby zapewnić podstawowe funkcjonalności witryny i usprawnić korzystanie z Internetu. Dla każdej kategorii możesz zdecydować się na włączenie/wyłączenie, kiedy tylko chcesz. Aby uzyskać więcej informacji na temat plików cookie i innych wrażliwych danych, przeczytaj całą politykę prywatności.

Niezbędne pliki cookie Zawsze włączone
Te pliki cookie są niezbędne do prawidłowego funkcjonowania strony internetowej. Zapewniają podstawowe funkcje, takie jak nawigacja po stronie i dostęp do bezpiecznych obszarów. Strona nie może działać poprawnie bez tych plików cookie.
Pliki cookie dotyczące wydajności i analityki
Te pliki cookie pomagają nam zrozumieć, w jaki sposób odwiedzający korzystają z naszej strony. Zbierają informacje o liczbie odwiedzających, źródłach ruchu i sposobie poruszania się po stronie. Dane te pomagają nam ulepszać działanie witryny.
Pliki cookie dotyczące reklam i targetowania
Te pliki cookie służą do wyświetlania reklam dopasowanych do Twoich zainteresowań. Mogą być używane do tworzenia profilu Twoich preferencji i wyświetlania odpowiednich reklam na innych stronach. Wykorzystywane przez Google Ads, Facebook Ads i inne platformy reklamowe.

Więcej informacji

W przypadku jakichkolwiek pytań dotyczących naszej polityki dotyczącej plików cookie i Twoich wyborów, prosimy o kontakt.