Dyrektywa Omnibus obowiązuje polskie sklepy od początku 2023 roku, a UOKiK nie odpuszcza. Milionowe kary dla Zalando i Temu z 2025-2026 roku pokazują, że to nie jest przepis, który można zignorować licząc na przymknięcie oka. Ale przepis to jedno, a poprawna implementacja techniczna w WooCommerce to zupełnie inna historia.

Ten artykuł nie tłumaczy, czym jest Omnibus od strony prawnej - skupiam się wyłącznie na tym, jak skonfigurować plugin w WooCommerce, żeby sklep był technicznie zgodny. Omówię wybór narzędzia, instalację, konfigurację dla różnych typów produktów oraz to, jak sprawdzić, czy wszystko działa poprawnie przed uruchomieniem promocji.

Który plugin wybrać: darmowy czy płatny?

Na rynku są dwa główne podejścia. Pierwsza opcja to darmowy plugin Omnibus - show the lowest price (autor: Marcin Pietrzak) dostępny bezpośrednio w repozytorium WordPress.org. Druga to płatna wtyczka Omnibus WooCommerce od WP Desk w cenie 149 zł netto rocznie za licencję na jedną stronę.

Darmowy plugin w zupełności wystarczy dla sklepu z prostymi produktami i niewielkim katalogiem. Instalujesz, aktywujesz i działa - historia cen jest zbierana automatycznie, komunikat pojawia się przy produktach na promocji. Problem zaczyna się przy produktach zmiennych z wieloma wariantami i różnymi cenami: darmowa wersja pokazuje globalną najniższą cenę dla całego produktu, a nie osobno dla wybranego wariantu.

WP Desk Omnibus rozwiązuje to elegancko - każdy wariant ma własną historię cen i osobny komunikat. Do tego integruje się z WooCommerce Subscriptions i WPML dla sklepów wielojęzycznych. Jeśli prowadzisz sklep z kilkuset SKU, kilkoma rozmiarami i kolorami oraz regularnymi kampaniami rabatowymi - 149 zł rocznie to rozsądna inwestycja.

Porównanie pluginów Omnibus dla WooCommerce

KryteriumDarmowy (wordpress.org)WP Desk Omnibus (149 zł/rok)
Produkty prosteTakTak
Produkty zmienne (warianty osobno)OgraniczoneTak
Subskrypcje WooCommerceNieTak
Integracja WPMLNieTak
Konfiguracja pozycji komunikatuPodstawowaZaawansowana
Wsparcie techniczneForum WPPomoc techniczna WP Desk

Instalacja: krok po kroku

Niezależnie od wybranego pluginu, instalacja wygląda podobnie. Zacznę od darmowej wersji, bo to dobry punkt startowy dla każdego sklepu.

Krok 1. W panelu WordPress przejdź do Wtyczki - Dodaj nową, wpisz w wyszukiwarce "omnibus" i znajdź wtyczkę Marcina Pietrzaka (omnibus - show the lowest price). Kliknij Zainstaluj, a następnie Aktywuj.

Krok 2. Przejdź do WooCommerce - Ustawienia - zakładka Omnibus (pojawi się po aktywacji). Zobaczysz trzy kluczowe opcje: zakres historii cen (domyślnie 30 dni, zostaw tak), gdzie wyświetlać komunikat (przed/po cenie, w opisie krótkim) oraz dla których produktów pokazywać cenę (tylko promocje lub wszystkie).

Krok 3. Ustaw wyświetlanie komunikatu na "tylko dla produktów na promocji" - to zgodne z wymogiem prawnym i nie zaśmieca stron produktów bez obniżek.

Krok 4. Zapisz ustawienia. Plugin zacznie zbierać historię cen od tego momentu.

Plugin zaczyna zbierać historię cen od dnia aktywacji. Jeśli uruchomisz promocję następnego dnia po instalacji, jako "najniższa cena z 30 dni" zostanie pokazana cena sprzed doby - co jest prawdziwe, ale może wyglądać nieczytelnie. Aktywuj plugin co najmniej 30 dni przed pierwszą promocją, do której chcesz mieć poprawne dane historyczne.

Dla wersji WP Desk instalacja jest analogiczna, ale pochodzi z paczki .zip pobranej po zakupie z konta WP Desk (Wtyczki - Dodaj nową - Wyślij wtyczkę). Po aktywacji licencji w panelu WP Desk (WooCommerce - Ustawienia - WP Desk) masz dostęp do aktualizacji.

Konfiguracja dla produktów prostych

Produkty proste to najprostszy przypadek. Po aktywacji pluginu wejdź na dowolny produkt prosty, który ma ustawioną cenę regularną i promocyjną. Przy aktywnej cenie obniżonej komunikat o najniższej cenie powinien pojawić się automatycznie na stronie produktu.

Jeśli komunikat nie jest widoczny, sprawdź dwie rzeczy. Po pierwsze - czy produkt ma aktywną cenę obniżoną (pole Cena obniżona w WooCommerce, nie puste). Po drugie - czy plugin jest ustawiony na pokazywanie komunikatu w odpowiednim miejscu (przed/po cenie głównej).

Zapis w bazie danych wygląda tak: plugin tworzy metapole _price_history w tabeli wp_postmeta dla każdego produktu i aktualizuje je przy każdej zmianie ceny. Możesz to zweryfikować w panelu phpMyAdmin lub bezpośrednio przez WP-CLI:

wp post meta get <ID_PRODUKTU> _price_history --format=json

Jeśli pole jest puste, plugin nie zebrał jeszcze historii dla tego produktu - zapisz produkt ponownie (Update), żeby wymusić aktualizację.

Weryfikacja dla produktu prostego

  • Produkt ma ustawioną cenę regularną i cenę obniżoną
  • Plugin Omnibus jest aktywny i ma skonfigurowane 30-dniowe okno historii
  • Na stronie produktu przy cenie widoczny jest komunikat "Najniższa cena z ostatnich 30 dni: X zł"
  • Komunikat wyświetla się także na stronie kategorii (jeśli tak skonfigurowano)
  • Historia cen w metapolu _price_history jest niepusta

Konfiguracja dla produktów zmiennych

Tu zaczyna się więcej roboty. Produkt zmienny to np. koszulka w czterech rozmiarach i trzech kolorach - każda kombinacja to osobny wariant z własną ceną. Omnibus musi pokazać najniższą cenę dla konkretnie wybranego wariantu, nie dla całego produktu.

W WP Desk Omnibus wchodzisz w ustawienia pluginu i włączasz opcję "Ceny dla wariantów osobno". Od tego momentu historia jest zbierana per wariant (per product_id wariantu w WooCommerce, nie ID produktu nadrzędnego). Komunikat pojawia się dynamicznie przy wyborze wariantu - zmienisz rozmiar, zmieni się podana najniższa cena.

W darmowym pluginie mechanizm jest prostszy: pokazuje globalną najniższą cenę dla całego produktu. Jeśli wariant M kosztuje 49 zł, a wariant XL kosztuje 59 zł i oba są na 10% promocji, komunikat pokaże "49 zł" jako najniższą cenę niezależnie od wybranego rozmiaru. Czy to spełnia wymóg Omnibusu? Technicznie tak (podajesz prawdziwą najniższą cenę), ale może być mylące dla klientów kupujących droższy wariant.

Jeśli masz sklep z produktami zmiennymi o dużym rozrzucie cen - np. zawieszki od 30 zł do 300 zł w jednym produkcie - zdecydowanie polecam WP Desk lub inny plugin z obsługą per-wariant.

149 zł netto/rokcena licencji WP Desk Omnibus na 1 stronę
30 dniminimalny zakres historii cen wymagany przez prawo
20 000 złmaksymalna kara UOKiK za pierwsze naruszenie
10%maksymalna kara jako procent rocznych przychodów sklepu

Scheduled sale czyli zaplanowana obniżka

WooCommerce pozwala ustawić daty startu i końca promocji bezpośrednio w produkcie (pola Data od / Data do przy cenie obniżonej). To wygodne przy kampaniach Black Friday czy sezonowych wyprzedażach. Przy Omnibusie jest jeden ważny haczyk.

Plugin liczy "najniższą cenę z 30 dni" wstecz od momentu rozpoczęcia promocji. Jeśli produkt pojawił się w sklepie 2 tygodnie temu i od razu wpisujesz scheduled sale na kolejny tydzień, historia ma zaledwie 14 dni. Plugin pokaże najniższą cenę z tych 14 dni - co jest zgodne z prawem (pokazujesz prawdziwe dane), ale warto wiedzieć, że okno może być krótsze niż 30 dni przy nowych produktach.

Praktyczna zasada: przy nowych produktach odczekaj 30 dni od pierwszej publikacji zanim uruchomisz pierwszą promocję. Dla istniejących produktów - nie ma problemu, historia jest już zbudowana.

W kilku projektach, które robiłem dla klientów prowadzących sklepy z odzieżą, ustawiałem scheduled sale z tygodniowym wyprzedzeniem i sprawdzałem metapole historii przed startem kampanii. Raz wyszło, że jeden z wariantów miał pustą historię - produkt był importowany z zewnętrznego systemu, plugin nie złapał starych cen. Ręczne zapisanie produktu (Update bez zmian) wymusił wpis do historii z aktualną ceną, co wystarczyło jako punkt bazowy.

Przed każdą większą kampanią promocyjną sprawdź historię cen dla kluczowych produktów przez WP-CLI lub phpMyAdmin. Lepiej wykryć brakujące wpisy kilka dni przed startem niż odkryć błąd gdy promocja już trwa.

Jak ma wyglądać komunikat na stronie produktu

Prawo nie narzuca konkretnego wyglądu komunikatu, ale narzuca treść: musi być podana najniższa cena, koniecznie z ostatnich 30 dni, i musi być czytelna dla przeciętnego klienta. UOKiK wskazuje, że komunikat ma być widoczny w bezpośrednim sąsiedztwie ceny promocyjnej.

Standardowy tekst generowany przez plugin: "Najniższa cena z ostatnich 30 dni: 89,00 zł". Możesz go edytować w ustawieniach - ale nie usuwaj informacji o 30 dniach i nie zamieniaj na coś w stylu "historyczna cena" (to by było niewystarczające).

Plugin powinien wyświetlać komunikat:

  • na stronie produktu prostego, pod ceną lub pod ceną obniżoną,
  • na stronie produktu zmiennego, dynamicznie po wyborze wariantu,
  • opcjonalnie na stronie kategorii (nie jest obowiązkowe, ale wielu klientów to włącza).

Nie jest wymagane pokazywanie komunikatu w koszyku ani w potwierdzeniu zamówienia - chodzi o moment podejmowania decyzji zakupowej.

Plusy

  • Plugin zbiera historię cen automatycznie, bez manualnej obsługi
  • Konfiguracja zajmuje 15-20 minut nawet przy dużym katalogu
  • Dane historyczne zostają w bazie przy ewentualnej deaktywacji i ponownej aktywacji
  • Integracja z WPML (WP Desk) pozwala na poprawne wyświetlanie w sklepach wielojęzycznych

Minusy

  • Plugin musi być aktywny przez cały rok, nie tylko przy promocjach
  • Nowe produkty nie mają historii przez pierwsze 30 dni
  • Darmowa wersja nie rozróżnia historii per wariant przy produktach zmiennych
  • Przy imporcie produktów z zewnątrz historia cen nie jest importowana automatycznie

Weryfikacja zgodności przed uruchomieniem promocji

Mam swoją checklistę, którą przeglądam przed każdą kampanią w sklepach moich klientów. Piszę ją tutaj, bo wiem, że łatwo pominąć jeden punkt, a potem dwa tygodnie po kampanii zadzwoni ktoś z problemem.

Checklista weryfikacji Omnibus przed kampanią

  • Plugin Omnibus jest aktywny i skonfigurowany (zakres 30 dni, wyświetlanie przy produktach na promocji)
  • Sprawdzono historię cen dla kluczowych produktów kampanii (metapole _price_history niepuste)
  • Produkty zmienne: komunikat wyświetla się dynamicznie po wyborze wariantu
  • Nowe produkty w kampanii mają co najmniej 30-dniową historię cen
  • Komunikat jest widoczny obok ceny promocyjnej - przetestowane w Chrome na desktopie i mobile
  • Treść komunikatu zawiera "30 dni" i konkretną kwotę
  • Przy scheduled sale: data startu promocji jest ustawiona w produkcie i plugin zdążył zarejestrować cenę bazową

Dodatkowo polecam zainstalować sklep testowy (staging) i uruchomić promocję na kilku produktach testowych - zobaczysz od razu jak plugin zachowuje się w Twoim motywie. Każdy motyw WordPress umieszcza blok ceny trochę inaczej i zdarza się, że komunikat pojawia się w dziwnym miejscu lub w złej kolejności z innymi elementami.

Edge case: import produktów i migracja sklepu

Jeśli migrujesz sklep z innej platformy (Shoper, Magento, PrestaShop) do WooCommerce lub używasz WP All Import do masowego wgrywania produktów - historia cen nie zostanie zaimportowana automatycznie. Plugin zaczyna zbierać dane od zera od momentu aktywacji.

Rozwiązanie: po imporcie przejdź przez kluczowe produkty i zapisz je (Update) - to wymusi pierwszy wpis do historii. Następnie przez 30 dni nie uruchamiaj promocji dla tych produktów. Albo - jeśli masz dane historyczne w Excelu - możesz wgrać je ręcznie do metapól przez WP-CLI lub skrypt PHP jednorazowego użytku.

Jest też case z klientem, który przeniósł sklep odzieżowy z Shopera: miał 400 produktów, sezon wyprzedażowy za 6 tygodni. Zamiast czekać 30 dni na naturalną historię, wgraliśmy ceny regularne jako punkt historyczny dla każdego produktu z datą aktywacji sklepu i to wystarczyło jako legalna podstawa do pierwszej promocji po miesiącu. Nie byłem prawnikiem oceniającym tę decyzję - skonsultowaliśmy ją z klientem i jego doradcą prawnym, ale technicznie się dało.

Jeśli szukasz kogoś, kto wdroży sklep od podstaw lub poprawnie skonfiguruje istniejący WooCommerce pod kątem zgodności, sprawdź ofertę budowy sklepów internetowych - robię to regularnie dla małych i średnich firm w Polsce i Niemczech.

Warto też przeczytać o integracji z KSeF i fakturowaniu B2C w sklepach internetowych, bo zgodność z przepisami to nie tylko Omnibus - faktury elektroniczne to kolejny temat, który regularnie pojawia się przy nowych wdrożeniach.

Jestem programistą WordPress i WooCommerce, nie prawnikiem. Techniczne wdrożenie pluginu opisuję na podstawie swojego doświadczenia z ponad 120 projektami. Interpretację prawną zakresu obowiązków i wyjątków skonsultuj ze swoim radcą prawnym lub UOKiK.

Podsumowanie: co zrobić zaraz po przeczytaniu

Nie zostawiaj tego na później. Aktywuj plugin dziś, żeby historia cen zaczęła się budować. Dla sklepu z prostymi produktami wystarczy darmowa wersja z wordpress.org - instalacja trwa 5 minut. Dla sklepu z wariantami zainwestuj 149 zł w WP Desk Omnibus i ustaw per-wariantową historię. Sprawdź staging przed pierwszą kampanią.

UOKiK regularnie monitoruje sklepy i nie robi rozróżnienia między dużymi platformami a małymi sklepami - kara 20 000 zł za brakujący komunikat jest realna. Plugin zwraca się dosłownie przy pierwszej unikniętej kontroli.

Jeśli masz pytania dotyczące konkretnej konfiguracji w Twoim sklepie lub chcesz sprawdzić, czy obecna implementacja spełnia wymogi, napisz do mnie - spojrzę na to konkretnie, nie ogólnikowo.

Najczęstsze pytania

Czy plugin Omnibus musi być aktywny przez cały rok, czy tylko przy promocjach?

Plugin musi działać przez cały czas, bo zbiera historię cen w tle - bez aktywnego pluginu nie będzie danych do wyświetlenia przy kolejnej obniżce. Dezaktywacja pluginu i jego ponowna aktywacja przed promocją nie da poprawnych wyników, bo historia przepadnie.

Co z produktami, które nigdy nie miały obniżki - czy też muszę pokazywać najniższą cenę?

Obowiązek wyświetlania najniższej ceny z 30 dni dotyczy wyłącznie produktów objętych aktywną promocją lub obniżką. Jeśli produkt nie jest na wyprzedaży, nie ma obowiązku pokazywania tego komunikatu. Możesz jednak włączyć tę opcję dla wszystkich produktów - to transparentny sygnał dla klientów.

Czy konfiguracja działa automatycznie dla wszystkich wariantów produktu zmiennego?

Zależy od pluginu. WP Desk Omnibus obsługuje warianty automatycznie i pokazuje najniższą cenę osobno dla każdego wybranego wariantu. Darmowy plugin z wordpress.org pokazuje globalną najniższą cenę dla całego produktu, bez rozróżnienia na warianty - to może być niewystarczające dla sklepów z szerokim zakresem cen w jednym produkcie.

Jak długo plugin przechowuje historię cen i co się dzieje po odinstalowaniu?

WP Desk Omnibus przechowuje historię cen w metapolach produktu w bazie danych. Po odinstalowaniu pluginu dane pozostają w tabelach WooCommerce, ale nie są wyświetlane. Po ponownym zainstalowaniu historia wraca. Standardowy zakres to 30 dni, ale możesz ustawić dłuższy okres w konfiguracji pluginu.

Jaka jest kara za brak wyświetlania najniższej ceny z 30 dni?

UOKiK może nałożyć karę do 20 000 zł za pierwsze naruszenie i do 40 000 zł przy trzecim naruszeniu. W ekstremalnych przypadkach kara może sięgnąć 10% rocznych przychodów sklepu. UOKiK aktywnie kontroluje sklepy - w 2025-2026 ukarał m.in. Zalando (30,9 mln zł) i Temu (5,9 mln zł).

Czy muszę płacić za plugin, czy wystarczy darmowa wersja z wordpress.org?

Dla małego sklepu z prostymi produktami darmowy plugin omnibus (wordpress.org/plugins/omnibus) jest w zupełności wystarczający. Jeśli masz produkty zmienne z wieloma wariantami, sklep wielojęzyczny (WPML) lub subskrypcje WooCommerce - warto zainwestować w WP Desk Omnibus (149 zł netto/rok). Licencja zwraca się przy jednej unikniętej karze UOKiK.