Wo WooCommerce Średnio zaawansowany

Dynamic Pricing Engine: kompletny przewodnik

Kompletny przewodnik: instalacja, 4 typy reguł, segmenty, scraping konkurencji, testy A/B, zabezpieczenia na 3 poziomach.

Zaktualizowano Wersja modułu 1.0.0

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

  1. W panelu WordPressa przejdź do Wtyczki → Dodaj nową → Wyślij wtyczkę na serwer.
  2. Wybierz plik dfdynamicpricing.zip i kliknij Zainstaluj teraz.
  3. 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 cenowe
  • wp_dfdpe_logs — dziennik korekt
  • wp_dfdpe_segments — segmenty klientów (3 tworzone automatycznie)
  • wp_dfdpe_competitors — monitoring konkurencji
  • wp_dfdpe_ab_tests — testy A/B
  • wp_dfdpe_ab_events — zdarzenia ekspozycji, ATC i konwersji

Planowane są też dwa zadania cron: scraping konkurencji (domyślnie co godzinę) i czyszczenie dziennika (codziennie).

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_stock ustawionego 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:

  1. Produkt WooCommerce (ID): identyfikator lokalnego produktu, do którego przypiąć monitoring.
  2. Nazwa konkurenta: dowolna etykieta (np. „Amazon”, „Allegro”).
  3. URL: strona produktu konkurenta do scrapowania.
  4. Typ selektora: CSS, XPath, Regex albo JSON-LD.
  5. Selektor: selektor wskazujący cenę (przykłady poniżej).
  6. Waluta: domyślnie waluta WooCommerce witryny.
  7. 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.lowPrice w 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:

  1. Nazwa i slug.
  2. Warianty: lista etykiet rozdzielonych przecinkami. Domyślnie A,B.
  3. Podział ruchu: względna waga per wariant (normalizowana automatycznie). Na przykład 50/50, 70/30 albo 1/1/1 dla trzech równych wariantów.
  4. Status: Szkic, W trakcie, Wstrzymany albo Zakończony. Tylko test W trakcie przypisuje odwiedzających.
  5. 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ć:

  1. Wyłącz wtyczkę w Wtyczki.
  2. 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.

Czy ta strona była pomocna?

Nadal utknąłeś? Napisz do wsparcia