Dynamic Pricing Engine: kompletny przewodnik
Kompletny przewodnik: instalacja, 4 typy reguł, segmenty, scraping konkurencji, testy A/B, zabezpieczenia na 3 poziomach.
Witaj w kompletnej dokumentacji Dynamic Pricing Engine, silnika dynamicznych cen dla WooCommerce wydawanego przez DataFirefly. Ten przewodnik obejmuje instalację, konfigurację początkową, każdy typ reguły, segmentację klientów, scraping konkurencji, testy A/B, dziennik, zabezpieczenia cenowe i deinstalację.
Wymagania: WordPress 6.0+, WooCommerce 8.0+, PHP 7.4+. Zgodne z HPOS i blokami Checkout.
Instalacja
Przesłanie wtyczki
- W panelu WordPressa przejdź do Wtyczki → Dodaj nową → Wyślij wtyczkę na serwer.
- Wybierz plik
dfdynamicpricing.zipi kliknij Zainstaluj teraz. - Po zakończeniu instalacji kliknij Włącz wtyczkę.
Co się dzieje przy aktywacji
Wtyczka tworzy 6 własnych tabel (z przedrostkiem wp_dfdpe_):
wp_dfdpe_rules— reguły cenowewp_dfdpe_logs— dziennik korektwp_dfdpe_segments— segmenty klientów (3 tworzone automatycznie)wp_dfdpe_competitors— monitoring konkurencjiwp_dfdpe_ab_tests— testy A/Bwp_dfdpe_ab_events— zdarzenia ekspozycji, ATC i konwersji
Planowane są też dwa zadania cron: scraping konkurencji (domyślnie co godzinę) i czyszczenie dziennika (codziennie).
Menu administracyjne
W pasku bocznym pojawia się nowe menu Dynamic Pricing z 7 podmenu: Panel, Reguły, Segmenty, Konkurenci, Testy A/B, Dziennik, Ustawienia. Wszystkie akcje wymagają zdolności WordPressa manage_woocommerce.
Konfiguracja początkowa (Ustawienia)
Zanim utworzysz pierwszą regułę, zajrzyj do Dynamic Pricing → Ustawienia, aby dostosować parametry globalne.
Dziennik
- Włącz dziennik: domyślnie zaznaczone. Każda korekta jest zapisywana z produktem, regułą, klientem i kontekstem.
- Retencja (dni): domyślnie 60 dni. Automatyczne czyszczenie działa codziennie.
Dziennik jest limitowany do 1 wpisu na sesję, produkt i godzinę, aby zapobiec zalewowi. Możesz go całkowicie wyłączyć, jeśli z niego nie korzystasz.
Globalne zabezpieczenia cenowe
- Cena minimalna (% ceny wyjściowej): na przykład 70 = nigdy nie schodzić poniżej 70 % ceny wyjściowej. 0 = wyłączone.
- Cena maksymalna (% ceny wyjściowej): na przykład 130 = nigdy nie przekraczać 130 %. 0 = wyłączone.
- Nigdy nie sprzedawać poniżej kosztu zakupu: do włączenia, jeśli przechowujesz koszt w meta produktu.
- Klucz meta kosztu zakupu: domyślnie
_cost(zgodny z WooCommerce Cost of Goods).
Scraper konkurencji
- Częstotliwość uruchamiania: co godzinę, dwa razy dziennie albo codziennie. Scraper przetwarza 25 adresów URL na partię.
Wyświetlanie na froncie
- Pokaż przekreśloną cenę wyjściową: przydatne dla widocznego efektu promocji. Wyłącz przy poufnych testach A/B.
Tworzenie pierwszej reguły
Przejdź do Dynamic Pricing → Reguły → Dodaj. Każda reguła ma te same pola podstawowe, niezależnie od typu.
Pola wspólne
- Nazwa: etykieta wewnętrzna, przydatna w dzienniku (np. „Happy hour 18-20″).
- Typ: Godzina, Stan magazynowy, Segment klienta albo Konkurent.
- Status: Aktywna albo Nieaktywna. Nieaktywna reguła nigdy nie jest ewaluowana.
- Priorytet: reguły wykonują się w rosnącej kolejności priorytetu. Każda reguła pracuje na wyniku poprzedniej.
- Zakres: Globalny, Kategoria, Tag albo Konkretny produkt.
- Korekta: Procent, Kwota stała, Wartość zdefiniowana albo Dopasowanie do konkurenta (tylko przy typie Konkurent).
- Minimum / Maksimum: opcjonalne zabezpieczenia na poziomie reguły.
- Okno dat: daty rozpoczęcia i zakończenia, aby reguła była aktywna tylko w danym okresie.
- Test A/B: opcjonalne powiązanie z testem A/B i jego wariantem (patrz sekcja Testy A/B).
Rada priorytetyzacji: zacznij od reguł najszerszych (globalnych) o niskim priorytecie, a potem doprecyzuj regułami celowanymi o wyższym priorytecie. Globalne zabezpieczenia z Ustawień stosowane są zawsze na końcu.
Typ 1: reguła godzinowa
Koryguje cenę według godziny i dnia tygodnia. Idealna dla efektu happy hour, promocji weekendowych albo taryf nocnych.
Dostępne warunki
- Dni tygodnia: wybierz jeden lub kilka dni (poniedziałek do niedzieli, format ISO).
- Godzina rozpoczęcia / zakończenia: w formacie 24-godzinnym. Przedziały przecinające północ są obsługiwane automatycznie (np. 22-02).
- Strefa czasowa: witryna (domyślnie, strefa WordPressa) albo strefa konkretna (np.
Europe/Warsaw).
Konkretne przykłady
- Happy hour: −15 %, czwartek-piątek, 18-20, strefa Europe/Paris.
- Promocja weekendowa: −10 %, sobota-niedziela, 00:00-23:59.
- Cena nocna: +5 %, codziennie, 22-06 (przecina północ, obsługiwane automatycznie).
Typ 2: reguła stanu magazynowego
Koryguje cenę według poziomu zapasu produktu. Przydatna do szybkiego upłynniania nadwyżek albo dowartościowania produktów stających się rzadkimi.
Dostępne warunki
- Operator: <, <=, ==, >=, >.
- Próg: liczba całkowita.
- Tryb: Bezwzględny (liczba sztuk) albo Procent zapasu początkowego (wymaga meta
_initial_stockustawionego na produkcie).
Konkretne przykłady
- Upłynnianie: stan >= 50 (nadwyżka) → −20 %.
- Rzadkość: stan < 5 → +10 %.
- Procent zapasu początkowego: tryb procentowy, stan < 20 % zapasu początkowego → −5 %.
Aby użyć trybu procentowego, dodaj pole meta _initial_stock do produktów (przez WP All Import, ACF albo proste update_post_meta). Bez tego meta tryb procentowy jest ignorowany.
Typ 3: reguła segmentu klienta
Stosuje korektę wyłącznie do klientów należących do jednego lub kilku zdefiniowanych segmentów.
Dostępne warunki
- Segmenty: jeden lub kilka istniejących segmentów (patrz sekcja Segmenty).
- Dopasowanie: Any (klient należy do co najmniej jednego segmentu) albo All (należy do wszystkich).
Konkretne przykłady
- Lojalność: segment loyal-customers, korekta −10 %.
- Odzyskiwanie: segment dormant (do utworzenia), korekta −20 % przez 7 dni.
- B2B: segment b2b (rola
wholesale), korekta −25 %.
Typ 4: reguła ceny konkurenta
Dopasowuje Twoją cenę do ceny konkurenta skonfigurowanego w sekcji Konkurenci. Dostępne trzy strategie.
Strategie
- Match: Twoja cena staje się dokładnie ceną konkurenta.
- Undercut: Twoja cena schodzi poniżej ceny konkurenta, procentowo albo o kwotę stałą.
- Overprice: Twoja cena wychodzi powyżej konkurenta (pozycjonowanie premium).
Dostępne warunki
- Tryb: Procent albo Kwota stała.
- Wartość: procent (np. 5 dla 5 %) albo kwota w walucie.
- Maksymalny wiek danych (godziny): powyżej tego progu dane ze scrapingu uznawane są za zbyt stare i reguła przechodzi na zachowanie awaryjne.
- Fallback: zachowanie przy niedostępnych danych konkurenta (na przykład korekta neutralna albo pominięcie reguły).
Konkretny przykład
Undercut 3 % względem konkurenta A, z maksymalnym wiekiem 6 godzin. Jeśli konkurent A nie był scrapowany od 6 godzin, reguła jest pomijana, a cena pozostaje bez zmian.
Segmenty klientów
Segment to kombinacja kryteriów definiująca grupę klientów. Utworzony segment może być celem reguły typu Segment klienta.
Segmenty tworzone przy aktywacji
- new-customers: klienci z 0 albo 1 zamówieniem.
- loyal-customers: klienci z 5 zamówieniami lub więcej.
- vip: klienci, którzy wydali co najmniej 500 €.
Tworzenie segmentu
W Dynamic Pricing → Segmenty → Dodaj zdefiniuj:
- Nazwa i Slug (generowany automatycznie, jeśli pusty).
- Opis (opcjonalny, dla Twojego zespołu).
- Kryteria: dodaj tyle wierszy, ile trzeba. Wszystkie kryteria muszą być spełnione (logiczne I).
- Status: aktywny albo nieaktywny.
Pola dostępne w kryteriach
order_count— liczba zamówień klienta.total_spent— łączna wydana kwota (w walucie witryny).is_guest— 1, jeśli odwiedzający nie jest zalogowany, 0 w przeciwnym razie.user_roles— role WordPressa klienta (np.customer,subscriber,wholesale).days_since_last_order— dni od ostatniego zamówienia.
Dostępne operatory
Dziesięć operatorów: ==, !=, >, >=, <, <=, in, not_in, contains, not_contains.
Dla in i not_in rozdziel wartości przecinkami w polu Wartość (np. customer,subscriber).
Przykład zaawansowany, segment „Odzyskiwanie”: order_count >= 2 + days_since_last_order >= 60. Celuje w dawnych klientów, którzy nie zamawiali od 2 miesięcy.
Konkurenci (scraping)
Scraper automatycznie pobiera cenę wyświetlaną na stronie produktu konkurenta, z konfigurowalną częstotliwością. Pobrane ceny są następnie wykorzystywane przez reguły typu Konkurent.
Dodanie konkurenta
W Dynamic Pricing → Konkurenci → Dodaj:
- Produkt WooCommerce (ID): identyfikator lokalnego produktu, do którego przypiąć monitoring.
- Nazwa konkurenta: dowolna etykieta (np. „Amazon”, „Allegro”).
- URL: strona produktu konkurenta do scrapowania.
- Typ selektora: CSS, XPath, Regex albo JSON-LD.
- Selektor: selektor wskazujący cenę (przykłady poniżej).
- Waluta: domyślnie waluta WooCommerce witryny.
- Status: monitoring aktywny albo wstrzymany.
Typy selektorów
- CSS: klasyczny selektor CSS. Przykłady:
.price .amount,#product-price,span[itemprop=price]. - XPath: wyrażenie XPath. Przykład:
//span[@class="price"]. - Regex: wyrażenie regularne PHP. Przykład:
/€s*([d,.]+)/— używana jest pierwsza przechwycona grupa. - JSON-LD: automatyczne wykrywanie Schema.org. Szuka
price,offers.price,offers.lowPricew znacznikach JSON-LD. Pole Selektor pozostaw puste.
Parsowanie cen
Scraper automatycznie obsługuje formaty europejskie (1 299,90) i amerykańskie (1,299.90). Symbole walut i spacje są czyszczone.
Uruchomienie ręczne
Przycisk Scrapuj teraz obok każdego konkurenta wymusza natychmiastową aktualizację w AJAX-ie. Przydatny do testowania nowego selektora.
Możliwe statusy
- pending — nigdy nie scrapowany, czeka na następny cron.
- ok — ostatnie wykonanie zakończone sukcesem.
- error — ostatnie wykonanie nieudane (komunikat zapisany w polu last_error).
Poszanowanie regulaminów konkurentów: scraper wykonuje proste żądanie HTTP z krótkim timeoutem, ale to Ty odpowiadasz za sprawdzenie, czy scraping jest dozwolony przez regulaminy docelowych witryn. Niektóre jurysdykcje regulują tę praktykę.
Testy A/B
Wbudowany moduł A/B pozwala porównywać kilka strategii cenowych na tym samym produkcie i mierzyć ich wpływ w czasie rzeczywistym (ekspozycje, dodania do koszyka, konwersje, RPV).
Tworzenie testu
W Dynamic Pricing → Testy A/B → Nowy test:
- Nazwa i slug.
- Warianty: lista etykiet rozdzielonych przecinkami. Domyślnie
A,B. - Podział ruchu: względna waga per wariant (normalizowana automatycznie). Na przykład
50/50,70/30albo1/1/1dla trzech równych wariantów. - Status: Szkic, W trakcie, Wstrzymany albo Zakończony. Tylko test W trakcie przypisuje odwiedzających.
- Okno: opcjonalne daty rozpoczęcia i zakończenia.
Powiązanie reguły z wariantem
W formularzu reguły wybierz test A/B i docelowy wariant. Reguła zadziała tylko dla odwiedzających przypisanych do tego konkretnego wariantu.
Jak działa przypisanie
Przy pierwszej ekspozycji wtyczka przydziela odwiedzającego do wariantu według skonfigurowanych wag, a następnie zapisuje ten wybór w ciasteczku dfdpe_ab. Osobne ciasteczko sesji dfdpe_sid pozwala śledzić tego samego odwiedzającego przez całą sesję, zalogowanego albo nie.
Śledzone zdarzenia
- exposure — pierwszy raz, gdy odwiedzający widzi cenę objętą testem.
- atc — dodanie do koszyka (hook
woocommerce_add_to_cart). - conversion — sfinalizowane zamówienie (hook
woocommerce_thankyou). Rejestrowana jest łączna kwota zamówienia.
Wyliczane metryki (strona Wyniki)
- Ekspozycje i Unikalne sesje.
- CR ATC — współczynnik dodań do koszyka (ATC / ekspozycje).
- CR Conv. — współczynnik konwersji (konwersje / ekspozycje).
- Przychód — suma konwersji.
- RPV — przychód na odwiedzającego (przychód / ekspozycje). To kluczowa metryka decyzyjna: wariant z najwyższym RPV jest automatycznie wyróżniany (odznaka Zwycięzca).
Dobra praktyka: pozwól testowi działać co najmniej 2 tygodnie przed wyciągnięciem wniosków. Wiarygodny test A/B wymaga kilku tysięcy ekspozycji, żeby osiągnąć istotność statystyczną.
Dziennik korekt
Każda korekta ceny zastosowana na froncie może być zalogowana. Dziennik jest dostępny w Dynamic Pricing → Dziennik.
Zapisywane informacje
- Data i godzina.
- Produkt i wariant.
- Wyzwolona reguła (ID).
- Klient (ID) albo sesja anonimowa.
- Cena wyjściowa, cena końcowa, kwota korekty.
- Test A/B i wariant (jeśli dotyczy).
- Kontekst:
frontend,cart,checkout.
Dostępne filtry
Możesz filtrować po ID produktu, ID reguły albo ID testu A/B. Paginacja wyświetla 50 wpisów na stronę.
Rate-limiting
Aby zapobiec zalewowi, wtyczka ogranicza zapis do 1 wpisu na sesję, produkt i godzinę. Sesja oglądająca 100 razy tę samą kartę produktu w ciągu godziny generuje tylko jeden wiersz.
Automatyczne czyszczenie
Codzienne zadanie cron (dfdpe_cron_purge_logs) usuwa wpisy starsze niż skonfigurowana retencja (domyślnie 60 dni).
Zabezpieczenia cenowe: jak to działa
Trzy kolejne poziomy ochrony zapobiegają osiągnięciu przez cenę końcową niebezpiecznego poziomu.
Poziom 1: zabezpieczenia per reguła
Każda reguła może zdefiniować własne minimum i maksimum. Stosowane są natychmiast po korekcie tej reguły. Przydatne do ograniczenia efektów konkretnej reguły (np. „happy hour nigdy nie może zejść poniżej 30 €, niezależnie od ceny wyjściowej”).
Poziom 2: zabezpieczenia globalne
Definiowane w Ustawieniach, procentowo względem ceny wyjściowej:
- Cena minimalna: cena końcowa nie może zejść poniżej tego procentu.
- Cena maksymalna: cena końcowa nie może przekroczyć tego procentu.
Przykład: minimum 70 % i maksimum 130 %. Produkt za 100 € nigdy nie zejdzie poniżej 70 € ani nie przekroczy 130 €, niezależnie od zastosowanych reguł.
Poziom 3: ochrona kosztu zakupu
Po włączeniu w Ustawieniach ta ochrona uniemożliwia zejście ceny końcowej poniżej wartości meta _cost (albo skonfigurowanego przez Ciebie własnego klucza). To ostateczna gwarancja, że nigdy nie sprzedasz ze stratą.
Trzy poziomy się kumulują i stosowane są w tej kolejności: reguła → globalne → koszt. Cena końcowa jest zawsze najbardziej „chronionym” wynikiem z trzech.
Zgodność z HPOS i cache
HPOS (High-Performance Order Storage)
Wtyczka deklaruje zgodność z custom_order_tables i cart_checkout_blocks już przy inicjalizacji. Żadna dodatkowa akcja nie jest wymagana, jeśli masz włączony HPOS w WooCommerce.
Cache cen wariantów
WooCommerce cache’uje ceny minimalne i maksymalne produktów wariantowych przez hash. Wtyczka wstrzykuje dynamiczny seed (użytkownik + sesja + kubełek 5-minutowy) do tego hasha przez filtr woocommerce_get_variation_prices_hash, co zmusza WooCommerce do przeliczenia cen we właściwym momencie bez psucia cache dla pozostałych odwiedzających.
FAQ
Czy mogę łączyć kilka reguł na tym samym produkcie?
Tak. Reguły wykonują się w kolejności priorytetu, każda pracując na wyniku poprzedniej. Możesz więc połączyć „−10 % VIP”, a potem „maksimum 130 % kosztu”.
Czy reguły działają też w koszyku i na checkoucie?
Tak. Hook na woocommerce_before_calculate_totals przelicza ceny pozycji koszyka przy każdym wyświetleniu.
Czy wtyczka jest zgodna z cache serwerowym (Redis, Varnish)?
Tak, ale jeśli Twój cache jest bardzo agresywny na poziomie całej strony, wyświetlane ceny mogą pochodzić z cache. Dla niezawodnego dynamicznego wyświetlania wyklucz strony produktów z cache full-page albo użyj fragmentów ESI.
Czy mogę wyłączyć wtyczkę bez utraty reguł?
Tak. Wyłączenie nie usuwa żadnych danych. Tylko deinstalacja przez Wtyczki → Usuń uruchamia skrypt uninstall.php.
Jak wyeksportować moje dane?
Wszystkie dane przechowywane są w 6 tabelach wp_dfdpe_*. Możesz je wyeksportować przez phpMyAdmin, WP-CLI (wp db export) albo dowolne narzędzie kopii zapasowych WordPressa.
Deinstalacja
Aby całkowicie odinstalować:
- Wyłącz wtyczkę w Wtyczki.
- Kliknij Usuń.
Skrypt uninstall.php usuwa wtedy:
- 6 tabel
wp_dfdpe_*. - 9 utworzonych opcji WordPressa.
- Zaplanowane zadania cron.
Deinstalacja jest ostateczna i nieodwracalna. Zabezpiecz wcześniej kopię reguł, segmentów i dziennika, jeśli chcesz mieć możliwość powrotu.
Wsparcie
Twoja licencja obejmuje 12 miesięcy wsparcia i aktualizacji. W razie pytań skontaktuj się z nami przez datafirefly.com/contact.