All our modules
Now showingScan and Sign Settings Live demo
Przewodnik użytkownika

Po zgłoszeniu

Strona Po wysłaniu formularza decyduje, co się dzieje, gdy ktoś się zapisze: wiadomość z podziękowaniem lub inna strona, e-maile, newsletter, konto klienta i webhook do innego systemu. Wszystko oprócz wiadomości z podziękowaniem jest wyłączone, dopóki tego nie włączysz.

Strona Po wysłaniu formularza targowego.
  1. Zakładki języków dla wiadomości z podziękowaniem i treści e-maili.
  2. Podziękowanie: co widzi odwiedzający po wysłaniu, strona polityki prywatności, reset kiosku i kontrola duplikatów.
  3. E-maile: e-mail z potwierdzeniem dla odwiedzającego.
  4. Dzienne podsumowanie: e-mail z podsumowaniem dla zespołu (Dzienne podsumowanie).
  5. Opcje: newsletter i konto klienta.
  6. Webhook: zgłoszenia przesyłane do innego systemu.

Jeden przycisk Zapisz na dole zapisuje całą stronę. Odwiedzający najpierw otrzymuje odpowiedź; e-maile, opcje i webhook działają zaraz potem, każde niezależnie. Jeśli któreś z nich zawiedzie, odwiedzający nigdy nie zobaczy błędu: błąd zostaje zapisany w menu Zaawansowane › Logi, w wierszu zaczynającym się od pchscansign.

Podziękowanie

UstawienieDo czego służy
Po wysłaniu formularzaPokaż wiadomość zastępuje formularz wiadomością z podziękowaniem. Otwórz inną stronę otwiera wpisany adres, np. stronę z kodem rabatowym. Kiosk zawsze pokazuje wiadomość.
Wiadomość z podziękowaniemTekst wyświetlany po udanym zgłoszeniu, osobno dla każdego języka. Napisz, co będzie dalej, np. „Zadzwonimy do Ciebie w ciągu dwóch dni.”
Strona do otwarciaPełny adres zaczynający się od https://. Dodawane są do niego wartości UTM zgłoszenia, dzięki czemu narzędzia analityczne przypisują wizytę wydarzeniu (Śledzenie za pomocą wartości UTM).
Strona polityki prywatnościStrona CMS sklepu, do której link pojawia się pod formularzem (domyślnie Brak). Kiosk otwiera ją w okienku nad formularzem. Wybierz politykę prywatności zawsze, gdy formularz pyta o dane osobowe.
Reset kioskuLiczba sekund, przez które kiosk pokazuje wiadomość z podziękowaniem przed wyświetleniem pustego formularza, od 3 do 120. Po instalacji: 8 sekund.
Kontrola duplikatówDrugie zgłoszenie z tym samym adresem e-mail w ciągu 24 godzin otrzymuje podziękowanie, ale nie jest ponownie zapisywane ani liczone. Włączona dla nowych formularzy (Ogólne); wyłącz ją, jeśli jedna osoba może zapisać kilka osób z tym samym adresem. Wymaga pola używanego jako adres e-mail.

E-mail z potwierdzeniem

Odwiedzający może otrzymać kopię odpowiedzi zaraz po zgłoszeniu. Włącz E-mail z potwierdzeniem na karcie E-maile; wymaga to pola używanego jako Adres e-mail osoby.

UstawienieDo czego służy
Temat e-mailaTemat, osobno dla każdego języka. {form_title} zamienia się w tytuł formularza. Po instalacji: „Twoje zgłoszenie: {form_title}”.
Treść e-mailaTekst nad odpowiedziami, osobno dla każdego języka: kolejne kroki, data wydarzenia, dane kontaktowe. Po instalacji: „Dziękujemy za zgłoszenie. Oto kopia Twoich odpowiedzi.”
E-mail z potwierdzeniem formularza targowego.

E-mail zawiera logo i nazwę sklepu, tytuł formularza, Twój tekst, odpowiedzi z pytaniami w brzmieniu, w jakim zostały zadane, kolor przycisku formularza jako akcent oraz wiersz z informacją, dlaczego osoba go otrzymuje. Jest napisany w języku linku, z którego skorzystała osoba, i wysyłany zgodnie z ustawieniami e-mail sklepu.

Dodawanie do newslettera

Dodaj do newslettera zapisuje do newslettera osoby, które zaznaczą pole zgody na newsletter. Wymaga pola e-mail i pola wyboru używanego jako Zgoda na newsletter. Dla każdego zgłoszenia z zaznaczonym polem:

  • Jeśli klient sklepu ma ten adres e-mail, jego konto klienta zostaje zapisane do newslettera.
  • W przeciwnym razie adres zostaje dodany do subskrybentów modułu PrestaShop Subskrypcja biuletynu (ps_emailsubscription), jeśli ten moduł jest zainstalowany i aktywny.

Tworzenie konta klienta

Utwórz klienta tworzy konto klienta dla osób, które go nie mają. Wymaga pól używanych jako adres e-mail, imię i nazwisko.

  • Gdy żaden zarejestrowany klient sklepu nie ma tego adresu e-mail, moduł tworzy aktywne konto w domyślnej grupie klientów sklepu, z imieniem i nazwiskiem oraz z zapisem do newslettera, jeśli zaznaczono pole zgody na newsletter.
  • Konto otrzymuje losowe hasło, którego nikt nie zna, a osoba dostaje e-mail „Twoje konto w sklepie …” z linkiem do ustawienia hasła. Gdy link wygaśnie, osoba korzysta z opcji „Nie pamiętasz hasła?” na stronie logowania.
  • Istniejący klient pozostaje bez zmian. Jeśli PrestaShop nie akceptuje imienia lub nazwiska w danych klienta (np. gdy zawiera cyfry), konto nie zostaje utworzone.

Webhook

Webhook przesyła każde zgłoszenie do innego systemu w chwili jego nadejścia: do CRM, Zapiera, Make, n8n lub własnego skryptu.

  1. Na karcie Webhook w polu Adres wpisz adres podany przez system odbierający. Musi zaczynać się od https://: dane są osobowe, więc adresy bez szyfrowania są odrzucane.
  2. Kliknij Zapisz. Przy pierwszym adresie tworzony jest Sekret. Użyj przycisków Pokaż i Kopiuj i wpisz sekret w systemie odbierającym, aby mógł sprawdzać podpis.
  3. Kliknij Wyślij testowe zgłoszenie. Moduł wysyła przykładowe zgłoszenie tego formularza, z jego bieżącymi polami i zmyślonymi wartościami, i pokazuje kod HTTP, którym odpowiedział system odbierający.

Po każdym zgłoszeniu moduł wysyła na ten adres metodą POST jeden dokument JSON i czeka na odpowiedź najwyżej pięć sekund. Status od 200 do 299 oznacza dostarczenie. Przekierowania nie są obsługiwane (wpisz docelowy adres), a adresy w sieciach prywatnych są odrzucane. Nieudana dostawa nie jest ponawiana; karta pokazuje Ostatnia odpowiedź, Ostatni błąd i Błędy z rzędu, a lista kontrolna ostrzega o błędach z ostatnich siedmiu dni. Utwórz nowy sekret przy zapisie zastępuje sekret, jeśli został przez pomyłkę udostępniony: wtedy zaktualizuj też system odbierający.

Dokument wygląda tak (pola odpowiadają polom formularza):

{
  "module": "pchscansign",
  "version": "1.0.0",
  "form": {"id": 1, "title": "Green Building Expo 2026"},
  "link": {"code": "K7M2P9XW", "name": "Stand B12 - poster QR", "channel": "qr"},
  "lang": "en",
  "submitted_at": "2026-10-23T11:42:05+02:00",
  "fields": [
    {"id": 11, "label": "First name", "role": "firstname", "value": "Anna"},
    {"id": 13, "label": "Email", "role": "email", "value": "anna@example.com"},
    {"id": 16, "label": "What do you do?", "role": "none", "value": "Installer"},
    {"id": 19, "label": "Keep me informed by email", "role": "newsletter_consent", "value": "Yes"}
  ],
  "roles": {"email": "anna@example.com", "firstname": "Anna", "lastname": "Berg",
            "phone": "", "company": ""},
  "utm": {"source": "scansign", "medium": "qr", "campaign": "green-building-expo-2026"}
}
  • value to odpowiedź w postaci wyświetlonej osobie: etykieta wybranej opcji w przypadku listy rozwijanej, tak lub nie w języku linku w przypadku pola wyboru, tekst w przypadku pozostałych typów.
  • roles powtarza odpowiedzi z pól używanych jako e-mail, imię, nazwisko, telefon i firma, dzięki czemu system odbierający nie zależy od treści pytań.
  • submitted_at to czas zgłoszenia w strefie czasowej sklepu.

Sprawdzanie podpisu

Każde żądanie zawiera nagłówek X-ScanSign-Signature: sha256=, a po nim HMAC-SHA256 surowej treści żądania, obliczony za pomocą sekretu, w zapisie szesnastkowym. Nagłówek X-ScanSign-Event ma wartość signup dla prawdziwego zgłoszenia i test dla przycisku Wyślij testowe zgłoszenie. System odbierający oblicza tę samą wartość z otrzymanej treści i odrzuca żądanie, gdy wartości się różnią. W PHP:

$body = file_get_contents('php://input');
$expected = 'sha256=' . hash_hmac('sha256', $body, $secret);
$given = isset($_SERVER['HTTP_X_SCANSIGN_SIGNATURE']) ? $_SERVER['HTTP_X_SCANSIGN_SIGNATURE'] : '';
if (!hash_equals($expected, $given)) {
    http_response_code(401); // nie pochodzi z Twojego sklepu
    exit;
}
$signup = json_decode($body, true);

W Node.js, z surową treścią jako obiektem Buffer:

const crypto = require('crypto');
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
const given = req.get('X-ScanSign-Signature') || '';
const valid = given.length === expected.length
  && crypto.timingSafeEqual(Buffer.from(given), Buffer.from(expected));

Obliczaj podpis z treści dokładnie w otrzymanej postaci, przed jakimkolwiek parsowaniem JSON: treść, która została sparsowana i zapisana ponownie, już się nie zgadza.

Dzienne podsumowanie

Osoby, które oddzwaniają do zainteresowanych, nie potrzebują e-maila o każdym zgłoszeniu. Zamiast tego dzienne podsumowanie wysyła im jeden e-mail dziennie: ile osób zapisało się poprzedniego dnia, przez który link, co odpowiadano, oraz link do listy.

Włączanie

  1. Otwórz stronę Po wysłaniu formularza.
  2. Na karcie Dzienne podsumowanie włącz Dzienne podsumowanie.
  3. W polu Odbiorcy wpisz adresy oddzielone przecinkami, np. sales@example.com, anna@example.com.
  4. Wybierz Wysyłaj od godziny: godzinę w strefie czasowej sklepu, od której podsumowanie może zostać wysłane (po instalacji 8:00).
  5. Kliknij Zapisz. Błędny adres zostaje odrzucony, a komunikat go wymienia.

Każdy formularz ma własne podsumowanie, własnych odbiorców i własną godzinę.

Co zawiera podsumowanie

Podsumowanie ostatniego dnia targów.
  • Formularz, dzień, liczba zgłoszeń i liczba otwarć.
  • Według linku: każdy link z kanałem, kampanią, otwarciami i zgłoszeniami. Usunięty link zachowuje nazwę z dopiskiem „(usunięty)”.
  • Według odpowiedzi: liczby odpowiedzi na każde pytanie typu lista rozwijana i pole wyboru.
  • Otwórz zgłoszenia z tego dnia: link do strony Zgłoszenia formularza, przefiltrowanej według tego dnia. Jeśli panel administracyjny poprosi o zalogowanie lub pokaże stronę o nieprawidłowym tokenie, zaloguj się lub potwierdź, a lista się otworzy.

Podsumowanie jest pisane w domyślnym języku sklepu. Jest wysyłane tylko za dzień, w którym były zgłoszenia: za spokojny dzień nic nie jest wysyłane.

Kiedy jest wysyłane

Podsumowanie danego dnia jest wysyłane następnego dnia, od godziny ustawionej w polu Wysyłaj od godziny, w pierwszym z tych momentów:

  • Ktoś korzysta z panelu administracyjnego. Moduł sprawdza to najwyżej co 15 minut, gdy pracownicy korzystają z panelu. Nie wymaga to konfiguracji, ale w dniu, w którym nikt nie otwiera panelu administracyjnego, podsumowanie czeka.
  • Zostaje wywołany adres crona. Przy zadaniu cron uruchamianym co 15 minut podsumowanie wychodzi o wybranej godzinie (Zadania zaplanowane).

Podsumowanie nigdy nie jest wysyłane ze strony odwiedzającego, więc e-mail nigdy nie spowalnia zgłoszenia. Jeśli jakieś dni zostały pominięte, np. w weekend bez korzystania z panelu administracyjnego, kolejne uruchomienie wysyła podsumowanie każdego pominiętego dnia, w którym były zgłoszenia: jeden e-mail na dzień i maksymalnie siedem dni w jednym uruchomieniu. Wysłane podsumowanie nie jest wysyłane ponownie, także po kliknięciu Uruchom teraz.

Wiersz stanu pokazuje, kiedy ostatnio uruchomiono podsumowanie, a lista kontrolna ostrzega, gdy podsumowania są należne, ale żadne nie zostało uruchomione w ciągu 36 godzin (Lista kontrolna).

↑

Ładowanie...
Powrót do góry