# DataFirefly Waitlist: dokumentacja

> Prezentacja DataFirefly Waitlist dodaje do sklepu PrestaShop 8 lub 9 alert powrotu produktu do sprzedaży. Gdy tylko produkt, lub konkretna kombinacja, spadnie poniżej skonfigurowanego progu stanu magazynowego, na karcie produktu…

- Strona: <https://www.datafirefly.com/pl/documentation/datafirefly-waitlist-prestashop/>
- Język: pl
- Zaktualizowano: 2026-08-01
- Inne języki: [fr](https://www.datafirefly.com/documentation/datafirefly-waitlist-prestashop/index.md), [en](https://www.datafirefly.com/en/documentation/datafirefly-waitlist-prestashop/index.md), [es](https://www.datafirefly.com/es/documentation/datafirefly-waitlist-prestashop/index.md), [de](https://www.datafirefly.com/de/documentation/datafirefly-waitlist-prestashop/index.md), [it](https://www.datafirefly.com/it/documentation/datafirefly-waitlist-prestashop/index.md), [pt](https://www.datafirefly.com/pt/documentation/datafirefly-waitlist-prestashop/index.md), [nl](https://www.datafirefly.com/nl/documentation/datafirefly-waitlist-prestashop/index.md)
- Indeks: <https://www.datafirefly.com/pl/documentation/llms.txt>

## Prezentacja

DataFirefly Waitlist dodaje do sklepu PrestaShop 8 lub 9 alert powrotu produktu do sprzedaży. Gdy tylko produkt, lub konkretna kombinacja, spadnie poniżej skonfigurowanego progu stanu magazynowego, na karcie produktu automatycznie pojawia się przycisk „Powiadom mnie o dostępności". Odwiedzający zostawia adres e-mail i otrzymuje alert natychmiast po uzupełnieniu zapasów. Każde zamówienie złożone później przez powiadomionego subskrybenta jest przypisywane jako konwersja w pulpicie.

## Instalacja

1. W panelu administracyjnym przejdź do **Moduły → Menedżer modułów → Zainstaluj moduł**.
2. Wgraj plik `dfwaitlist-x.x.x.zip`.
3. Kliknij **Zainstaluj**. Moduł tworzy tabelę `df_dfwaitlist_subscriber`, rejestruje swoje hooki i dodaje zakładkę administracyjną.
4. Otwórz konfigurację, aby podać adres e-mail sprzedawcy i pobrać adres URL crona.

Brak zewnętrznych zależności. PHP 7.4 minimum, zgodność do PHP 8.3. Kod źródłowy niezaszyfrowany.

## Konfiguracja

Przejdź do **Moduły → DataFirefly Waitlist → Konfiguruj**. Dostępne ustawienia:

- **Double opt-in**: gdy jest aktywny, zapis najpierw wysyła e-mail potwierdzający. Dopóki odwiedzający nie kliknie, subskrypcja pozostaje niepotwierdzona i nie wywoła żadnego alertu. Można wyłączyć, jeśli wolisz natychmiastowy zapis.
- **Próg stanu magazynowego**: ilość, poniżej której produkt jest uznawany za niedostępny i pojawia się przycisk.
- **Próg alertu sprzedawcy**: liczba zapisanych na ten sam produkt, od której otrzymujesz e-mail z powiadomieniem. Domyślnie 10.
- **E-mail sprzedawcy**: odbiorca powyższego alertu.
- **Czas życia subskrypcji**: subskrypcje nigdy niepowiadomione są automatycznie czyszczone po N dniach. Domyślnie 90.
- **Tekst przycisku**: personalizowany dla każdego języka.
- **Klauzula RODO**: tekst wyświetlany pod formularzem, personalizowany dla każdego języka.
- **Adres URL crona**: zabezpieczony tokenem, regenerowany jednym kliknięciem z panelu.

## Działanie po stronie klienta

### Pojawienie się przycisku

Przycisk jest wstrzykiwany przez hook `displayProductActions`, a o jego widoczności decyduje strona kliencka. Moduł odpytuje endpoint `/modules/dfwaitlist/stockcheck`, aby poznać rzeczywisty stan magazynowy wyświetlanej kombinacji, co czyni go niezależnym od sposobu ponownego renderowania AJAX motywu. Efekt: przycisk znika, gdy wybrany wariant jest dostępny, i pojawia się ponownie w przeciwnym razie, bez przeładowania strony.

### Kombinacje (warianty)

Zapis odbywa się dla pary _(produkt, kombinacja)_. Formularz jawnie pokazuje wariant, którego dotyczy, na przykład „Wariant: Czerwony / Rozmiar L". Gdy odwiedzający zmienia wariant przed zatwierdzeniem, cel przełącza się automatycznie. E-mail z alertem wskazuje dokładną kombinację i prowadzi do karty produktu z wstępnie wybranym wariantem: pomylenie jednego rozmiaru z drugim jest niemożliwe.

### Potwierdzenie (double opt-in)

Przy aktywnym double opt-in subskrybent otrzymuje e-mail z tokenowanym linkiem potwierdzającym. Zapis jest brany pod uwagę dopiero po kliknięciu. Ten mechanizm gwarantuje jakość listy (brak fikcyjnych adresów) i dostarcza dowód jawnej zgody.

### Alert powrotu do sprzedaży

Po uzupełnieniu zapasów subskrybent otrzymuje responsywny e-mail HTML z nazwą produktu, konkretną kombinacją i bezpośrednim linkiem do karty produktu. Każdy e-mail zawiera link do wypisania się jednym kliknięciem.

## Wykrywanie powrotów do sprzedaży

Dwa uzupełniające się kanały, oba należy pozostawić aktywne:

1. **Hook actionUpdateQuantity**: czas rzeczywisty. Gdy tylko pracownik zmienia stan magazynowy w panelu albo anulowane zamówienie zwalnia zapas, e-maile wychodzą natychmiast.
2. **Cron zabezpieczający**: chroniony tokenem. Wychwytuje ruchy magazynowe, które nie przechodzą przez hooki: importy API, synchronizację ERP, skrypty CLI, aktualizacje przez Webservice PrestaShop.

### Konfiguracja crona

Skopiuj adres URL wyświetlany w konfiguracji modułu (zawiera token bezpieczeństwa) i podłącz go do wywołania co godzinę:

```
0 * * * * curl -s "https://twoj-sklep.com/module/dfwaitlist/cron?token=TWOJ_TOKEN" > /dev/null 2>&1
```

Jeśli podejrzewasz wyciek tokena, zregeneruj go jednym kliknięciem z konfiguracji: stary adres URL natychmiast przestaje działać. Pamiętaj o aktualizacji crontaba po regeneracji.

## Śledzenie konwersji

W hooku `actionValidateOrder` moduł porównuje każdą pozycję zamówienia z subskrypcjami w statusie „powiadomiony". Dopasowanie odbywa się po trójce _(email, id_product, id_product_attribute)_. W przypadku zgodności subskrypcja jest oznaczana jako skonwertowana, a `id_order` zostaje zapisany.

Śledzenie opiera się na adresie e-mail, a nie na koncie klienta, dlatego działa równie dobrze dla zamówień gości, jak i zalogowanych klientów.

## Pulpit administracyjny

- **6 KPI**: zapisani, oczekujący na potwierdzenie, powiadomieni, zakupy, współczynnik konwersji, wypisani.
- **Lista produktów z zapisami**: sortowalna i stronicowana. To Twoja lista priorytetów uzupełniania zapasów: produkt z 47 zapisanymi to 47 niemal pewnych sprzedaży, jeśli szybko uzupełnisz stan.
- **Widok szczegółowy według produktu**: każdy zapisany ze swoim indywidualnym statusem.
- **Eksport CSV**: pełny eksport aktywnego sklepu: e-mail, produkt, kombinacja, statusy (potwierdzony, powiadomiony, kupiony, wypisany), daty, IP, id zamówienia w przypadku konwersji. Plik zawiera BOM UTF-8, dzięki czemu otwiera się bezpośrednio w Excelu bez zepsucia kodowania.

## Alert sprzedawcy

Gdy niedostępny produkt osiąga skonfigurowany próg zapisanych, automatyczny e-mail informuje Cię o liczbie oczekujących i zawiera link do pulpitu. E-mail jest wysyłany tylko raz na produkt, aby uniknąć szumu. To sygnał, który zamienia listę oczekujących w narzędzie sterowania uzupełnianiem zapasów: priorytetyzujesz na podstawie zmierzonego popytu, nie intuicji.

## E-maile

Trzy szablony, każdy dostarczany w wersjach FR/EN/ES/DE, w formacie responsywnego HTML i czystego tekstu:

- **Potwierdzenie**: wysyłane tylko przy aktywnym double opt-in, z linkiem aktywacyjnym.
- **Alert powrotu do sprzedaży**: produkt, kombinacja, bezpośredni link do karty, link do wypisania się.
- **Alert sprzedawcy**: liczba oczekujących zapisanych i link do pulpitu.

Szablony można edytować w `modules/dfwaitlist/mails//`.

## RODO i jakość listy

- Double opt-in do włączenia, z dowodem zgody (IP jest zapisywane przy rejestracji).
- Wypisanie się jednym kliknięciem w każdym e-mailu z alertem, przez unikalny token **odrębny** od tokena potwierdzenia. Subskrypcja jest oznaczana jako wypisana bez usuwania, aby zachować identyfikowalność, i żaden przyszły e-mail nie zostanie wysłany.
- Automatyczne czyszczenie subskrypcji nigdy niepowiadomionych po upływie skonfigurowanego okresu (domyślnie 90 dni): minimalizacja danych.
- Honeypot antybotowy wbudowany w formularz oraz limit jednego adresu e-mail na produkt, aby zapobiec seryjnym zapisom.
- Żadnych wywołań zewnętrznych: dane pozostają w bazie PrestaShop, z podziałem na sklepy. Nic nie jest wysyłane do DataFirefly ani do usług zewnętrznych.

## Multisklep i wielojęzyczność

Tabela subskrypcji zawiera kolumny `id_shop` i `id_lang`. Każdy podsklep w sieci multistore ma więc własną listę oczekujących, własne alerty sprzedawcy i własne KPI. E-maile wychodzą w języku, w którym subskrybent dokonał zapisu.

## Rozwiązywanie problemów

### Przycisk się nie pojawia

- Sprawdź, czy produkt jest faktycznie poniżej skonfigurowanego progu stanu: powyżej przycisk jest celowo ukryty.
- Na produkcie z wariantami sprawdź wybrany wariant: przycisk wyświetla się tylko wtedy, gdy _ten_ wariant jest niedostępny.
- Motyw musi implementować hook `displayProductActions`. Tak jest w Classic i Hummingbird; w nietypowym motywie własnym sprawdź jego obecność w szablonie produktu.
- Wyczyść cache PrestaShop (Zaawansowane → Wydajność).

### Alerty nie wychodzą po uzupełnieniu zapasów

- Sprawdź, czy subskrypcja jest potwierdzona: przy double opt-in niepotwierdzony zapis nigdy nie otrzymuje alertu.
- Jeśli stan zmieniono poza panelem (API, ERP, CLI), hook czasu rzeczywistego się nie uruchamia: przejmuje to cron. Sprawdź, czy działa i czy token w adresie URL jest aktualny.
- Przetestuj ogólną wysyłkę e-maili PrestaShop (Zaawansowane → E-mail → Test).

### Niektóre konwersje nie są zliczane

Dopasowanie wymaga adresu e-mail _oraz_ produktu _oraz_ kombinacji. Jeśli klient zamawia z innego adresu e-mail niż ten z zapisu albo kupuje inny wariant niż ten, na który czekał, konwersja nie jest przypisywana. Jest to celowe, aby uniknąć fałszywych trafień zniekształcających KPI.

## Odinstalowanie

Odinstalowanie usuwa tabelę `df_dfwaitlist_subscriber` i wszystkie klucze konfiguracji z prefiksem `DFWAITLIST_`. W bazie nie pozostaje żaden ślad. Wymagane jest potwierdzenie, ponieważ subskrypcje i statystyki konwersji zostaną bezpowrotnie utracone: wyeksportuj wcześniej CSV, jeśli chcesz zachować historię.
