E-commerce: Promocja i uruchomienie sklepu internetowego
Przydatne artykuły i instrukcje dotyczące promocji, uruchomienia i rozwoju sklepów internetowych w branży E-commerce

Jak uruchomić stronę rezerwacyjną i system zapisów online: pełny przewodnik po tworzeniu i konfiguracji




Interfejs modułu rezerwacji: wybór usług, kalendarz z wolnymi interwałami i przycisk błyskawicznego potwierdzenia zapisu


Obszary zastosowań: Komu i po co potrzebny jest moduł rezerwacji?

Moduł zapisów online od BooStore.pro to uniwersalne narzędzie automatyzacji, które uwalnia biznes od „ręcznego” zarządzania harmonogramem, eliminuje błędy i pozwala klientom rezerwować usługi w trybie 24/7.

👨‍⚕️

Usługi i specjaliści

Idealne do zapisów do lekarzy, salonów kosmetycznych, centrów fitness czy na prywatne konsultacje prawne i biznesowe.

🍽️

Wynajem zasobów

Zarządzanie rezerwacją stolików w restauracjach, foteli masujących, gabinetów czy pokoi w małych hotelach.

🚗

Transport i wypożyczalnie

Organizacja wynajmu samochodów, rowerów, hulajnóg czy specjalistycznego sprzętu budowlanego z kontrolą czasu zwrotu.

🎟️

Wydarzenia i grupy

Sprzedaż miejsc na warsztaty, wycieczki grupowe, webinary czy zapisy na wydarzenia sportowe.

Elastyczność i logika „Wolne/Zajęte”

Głównym problemem większości systemów rezerwacji jest ich izolacja. W BooStore.pro moduł zapisów jest częścią „organizmu” statystyk sprzedaży. Oznacza to, że każda rezerwacja to realne zamówienie, a każdy slot czasowy to status tego zamówienia w czasie rzeczywistym.

🤖 Automatyczna kontrola slotów

System rozumie zajętość nie tylko na podstawie istnienia zapisu, ale poprzez status zamówienia w Twoim panelu administracyjnym. Gdy tylko klient wybierze czas i potwierdzi formularz, tworzone jest zamówienie.

Dopóki zamówienie znajduje się w statusach W trakcie realizacji lub Opłacone, system blokuje ten czas dla innych użytkowników. Nie musisz ręcznie „zamykać” dat — algorytm robi to błyskawicznie.

👥 Zapisy grupowe (Multiply): Jeden slot — wiele miejsc

Co zrobić, jeśli nie masz jednego masażysty, a trzech? Albo sprzedajesz 10 biletów na jeden warsztat? Tutaj do gry wchodzi parametr data-booking-slot-allow-multiply.

Jak to działa: Podajesz liczbę dostępnych miejsc (np. 10). System będzie pokazywał ten czas jako Wolny do momentu, aż liczba udanych zamówień na tę godzinę osiągnie limit. Dopiero po 10. kliencie slot stanie się „zajęty”.

⚡ Dlaczego anulowanie w panelu to magia dla strony

Elastyczność BooStore.pro ujawnia się w momentach zmian. Wyobraź sobie sytuację: klient zadzwonił i odwołał wizytę. Wchodzisz w statystyki sprzedaży i zmieniasz status zamówienia na Anulowane.

Natychmiastowa reakcja: W tej samej sekundzie, bez odświeżania pamięci podręcznej czy ręcznych edycji, ten slot czasowy na stronie staje się ponownie dostępny do rezerwacji dla innych osób.

To powiązanie działa też w drugą stronę: możesz ręcznie utworzyć zamówienie w panelu na określoną godzinę (np. zapis telefoniczny), a strona natychmiast „dowie się”, że ten czas jest już zajęty.

Taka architektura eliminuje „czynnik ludzki” i ryzyko overbookingu (podwójnych zapisów) w 100%.

Inteligentne zarządzanie czasem

⏲️ Elastyczny krok czasu (Time Slots)

Sam decydujesz, jak dzielić dzień pracy. Parametr data-booking-slot-booking-time pozwala ustawić krok w sekundach. Chcesz zapisy na szybkie, 15-minutowe konsultacje? Ustaw 900. Potrzebujesz wynajmu sali na 3 godziny? Ustaw 10800.

09:00
09:15
09:30
09:45

🛡️ Dynamiczne limity i ochrona przed „niespodziankami”

System pozwala skonfigurować horyzont planowania tak, aby był wygodny dla Twojego personelu.

  • Minimalny próg: Ogranicz zapisy do „nie wcześniej niż za X godzin”. Uratuje Cię to przed sytuacją, gdy klient zapisuje się „na teraz”, a Ty nie jesteś jeszcze gotowy.
  • Maksymalny limit: Wskaż endofmonth lub konkretną datę, aby klienci nie rezerwowali zasobów z rocznym wyprzedzeniem.
  • Przesunięcie dat: Możliwość rezerwacji z przesunięciem (początek dzisiaj — koniec jutro).

🎨 Strefy buforowe dla idealnego UI

Aby interfejs nie wyglądał na „dziurawy”, użyj parametru data-booking-time-show-empty. Pozwala on wyświetlać nieaktywne przedziały czasowe przed rozpoczęciem dostępnego czasu. Tworzy to wizualny porządek i pokazuje klientowi pełną siatkę Twojego dnia pracy, nawet jeśli poranek jest już zajęty lub niedostępny.

4. Ceny i monetyzacja

💰 Dynamiczne obliczanie kosztów

BooStore.pro potrafi liczyć pieniądze za Ciebie. Jeśli masz ustawioną cenę bazową za 1 godzinę, a klient wybierze w selektorze 3 godziny — system automatycznie zastosuje współczynnik.

Cena bazowa (1h): $50   |   Wybrano: 3 godziny   |   Razem do zapłaty: $150

Jeśli czas trwania nie powinien wpływać na cenę (np. stały bilet na escape room), po prostu aktywuj parametr data-booking-slot-fixed-price.

💳 Błyskawiczne przyjmowanie płatności

Dla biznesów, gdzie ważna jest gwarancja przybycia, przewidziano funkcję data-booking-payment-required.

Gdy tylko użytkownik kliknie „Zarezerwuj”, system nie tylko tworzy zamówienie, ale natychmiast przekierowuje go do wybranej bramki płatniczej. Rezerwacja jest potwierdzana dopiero po udanej transakcji, co redukuje odsetek „pustych” zapisów do zera.

Szybki start: Zmień dowolny przycisk w system zapisów

Unikalność platformy BooStore.pro polega na tym, że nie musisz zmieniać struktury strony. Wystarczy podłączyć skrypt i dodać odpowiednie atrybuty do dowolnego elementu HTML (przycisku, linku lub bloku), aby aktywować profesjonalny widżet rezerwacji.

Krok 1: Podłącz zasoby

Dodaj te linie w sekcji lub przed zamykającym tagiem :


rel="stylesheet" type="text/css" href="/templates/styles/booking/css_hotengine_booking.css" />
Krok 2: Utwórz przycisk rezerwacji

Wystarczy utworzyć kontener z atrybutem data-booking i umieścić w nim przycisk z klasą booking-slot-start-order.

Pełny wykaz parametrów (Data-attributes)

📂 Ustawienia podstawowe
data-booking-form-id="XX" Obowiązkowe
ID formularza z Kreatora Formularzy do przetwarzania zamówienia.
data-booking-window-title="Tekst"
Tytuł okna wyskakującego (domyślnie „Rezerwacja”).
data-booking-slot-group-id="0"
Cyfrowe ID grupy obiektów. Pozwala rozdzielić zasoby (stoliki, samochody, gabinety), aby klient widział grafik tylko konkretnej grupy.
data-booking-slot-group-title="Nazwa"
Nazwa obiektu w zamówieniu. Jeśli nie określono, pobierana jest nazwa grupy z ustawień.
data-booking-product-id="XX"
ID produktu dla sztywnego przypisania go do zamówienia.
data-booking-form-captcha="false"
Wyłącza kod weryfikacyjny (captcha), jeśli jest on aktywowany w ustawieniach formularza.
📅 Ograniczenia kalendarza
data-booking-slot-min-calendar-date-form-now=""
Minimalna data rezerwacji. Format days:+X,hours:+Y.
Dostępne jednostki: month, weeks, days, hours.
data-booking-slot-max-calendar-date-form-now=""
Maksymalna data w godzinach (tydzień — 168) lub stałe: endofmonth, endofnextmonth, endofyear, endofnextyear.
data-booking-slot-max-calendar-date="2027-05-20"
Bezwzględna końcowa data wyświetlania w kalendarzu.
🕒 Czas i Sloty
data-booking-slot-booking-time="1800"
Podstawowy interwał (krok) czasu w sekundach (1800 — 30 min, 3600 — 1 godz.).
data-booking-slot-max-booking-time="10800"
Maksymalny czas trwania jednej rezerwacji.
data-booking-slot-max-booking-time-show-selector="true"
Włącza wybór limitu czasu (zależne od parametru powyżej).
data-booking-slot-booking-time-allowchange="true"
Zezwalaj na „przycięcie” wyboru czasu, jeśli dostępna końcówka okresu jest mniejsza niż pożądana.
data-booking-time-show-empty="1"
Wyświetlanie pustych nieaktywnych slotów przed dostępnym czasem: 0 — wył, 1 — wszystkie, 2 — po minimalnym.
data-booking-slot-time-format="12"
Format czasu. Domyślnie 24h. Przy wartości 12 — format AM/PM.
👥 Logika grupowa i Powtórzenia
data-booking-slot-allow-multiply="10"
Liczba dostępnych miejsc na jeden slot (dla wydarzeń grupowych).
data-booking-slot-allow-preorder="0"
Logika dostępności slotu przy nieprzetworzonych zamówieniach:
0: zajęty (status „Nieprzetworzone”)
1: wolny („Nieprzetworzone”)
2: wolny („W trakcie realizacji”)
3: wolny (statusy 0 i 2)
data-booking-slot-days-extended="true"
Zezwalaj na rezerwację z przesunięciem dat (wybór daty rozpoczęcia i zakończenia).
💳 Płatności i Statusy
data-booking-slot-price="10USD"
Cena za okres bazowy. Przy wyborze wielu okresów następuje automatyczne przeliczenie (mnożnik).
data-booking-slot-fixed-price="1"
Stała cena (automatyczne przeliczanie i mnożniki są wyłączone).
data-booking-status-after="0"
Status zamówienia natychmiast po rezerwacji:
0: Nieprzetworzone
1: W trakcie realizacji
3: Zrealizowane
2, 5, 6: Anulowane
data-booking-payment-required="1"
Wymagaj płatności. Po złożeniu zamówienia — automatyczne przekierowanie do bramki płatniczej.
data-booking-payment-system="XX"
ID konkretnego systemu płatności z panelu administracyjnego.
data-booking-payment-system-hide-selector="true"
Ukrywa wybór innych systemów płatności podczas przekierowania.
data-booking-status-after-payment="3"
Status, który zostanie ustawiony automatycznie po udanej płatności.

🚀 Pełna elastyczność dla każdego procesu biznesowego

Kombinacja tych parametrów pozwala skonfigurować wszystko: od prostej wizyty w salonie kosmetycznym po skomplikowany system wynajmu sprzętu z opłatą dobową i automatyczną zmianą statusów. Twoja wyobraźnia to jedyny limit.

Otwórz pełną instrukcję integracji
🎨 Wizualna indykacja statusów

Skrypt automatycznie zarządza stanem elementów. Gdy slot jest zajęty, otrzymuje atrybut data-booking-status="busy". Możesz zdefiniować dowolny styl CSS dla takich elementów, aby wizualnie wyróżnić je dla użytkownika.

/* Przykład CSS dla wyróżnienia zajętego slotu */
[data-booking-status="busy"] { opacity: 0.5; pointer-events: none; filter: grayscale(1); }
Realne przykłady integracji

Poniżej znajduje się gotowy fragment kodu do utworzenia przycisku rezerwacji dla grupy nr 1 z godzinnym interwałem i automatycznym naliczaniem ceny:

booking-slot" data-booking data-booking-slot-group-id="1" data-booking-slot-group-title="Tytuł" data-booking-slot-booking-time="3600" data-booking-slot-booking-time-allowchange="true" data-booking-time-show-empty="1" data-booking-slot-max-booking-time="10800" data-booking-slot-max-booking-time-show-selector="true" data-booking-slot-min-calendar-date-form-now="" data-booking-slot-max-calendar-date-form-now="endofnextmonth" data-booking-slot-max-calendar-date="" data-booking-slot-allow-multiply="0" data-booking-slot-days-extended="0" data-booking-slot-allow-preorder="0" data-booking-form-id="TWÓJ_ID_FORMULARZA" data-booking-slot-price="10USD" data-booking-slot-fixed-price="false" data-booking-payment-required="false" data-booking-status-after="0" data-booking-status-after-payment="1" data-booking-slot-time-format="24" data-booking-window-title="Rezerwacja">
display:block; margin:15px auto; font-size:140%;">Grupa 1
booking-slot-status-block"> booking-slot-start-order">
Gdzie zobaczyć przykład na żywo?

Zobacz, jak moduł działa w realnym projekcie. System rezerwacji dla klubu bilardowego z wykorzystaniem indywidualnych grup dla stołów i zaawansowanej logiki płatności.

🎱 Rezerwacja stołów bilardowych
💸 Obsługa napiwków przy płatności
🕒 Krok czasu 1 godzina
📱 Pełna responsywność
Zobacz przykład na żywo (PeakyClub)
🛠️ Zaawansowane: Funkcje Callback dla programistów

W celu głębokiej integracji i śledzenia każdego kroku użytkownika użyj funkcji callback_hotengine_booking_form($a). Pozwala ona na wdrożenie własnych skryptów (analityka, weryfikacja danych, powiadomienia) na dowolnym etapie rezerwacji.

function callback_hotengine_booking_form(step) {
  console.log('Bieżący etap rezerwacji:', step);
  if (step === 10) { /* Twój kod przy potwierdzeniu */ }
}
ID ($a) Opis zdarzenia
2Przed zapytaniem o listę wolnych slotów
3Lista wolnych slotów została sformułowana i wyświetlona
4Użytkownik kliknął przycisk „Wstecz” / Pokaż sloty od wskazanej daty
6Rozpoczęcie procesu potwierdzenia (wybór konkretnego slotu)
7Przed wysłaniem potwierdzenia rezerwacji
8Formowanie ostatecznej listy danych przed wysyłką
9Moment tuż przed bezpośrednim wysłaniem wybranego slotu
10Wysłanie formularza potwierdzenia rezerwacji (Action)
1Wynik końcowy (pomyślne wysłanie lub błąd)

Zarządzanie i analityka: Pełna kontrola nad zapisami

Moduł rezerwacji BooStore.pro to nie tylko widżet na stronie, ale pełnowartościowy system CRM. Wszystkie dane o rezerwacjach są błyskawicznie synchronizowane z panelem sterowania, dostarczając szczegółowe raporty i narzędzia do pracy z klientami.

📊 Szczegółowe statystyki sprzedaży

  • Dane kupującego: Pełne informacje z formularza (imię, telefon, email, pola dodatkowe).
  • Szczegóły slotów: Jasne określenie wybranych dat i przedziałów czasowych.
  • Przejrzyste ceny: W każdym zamówieniu widoczna jest cena bazowa za godzinę, zastosowany mnożnik i koszt końcowy.
  • Zarządzanie statusami: Zmieniaj statusy („W realizacji”, „Potwierdzone”, „Anulowane”) bezpośrednio w tabeli sprzedaży.
Przykład: 1 godzina ($10) × 3 (mnożnik) = $30 Łącznie

📅 Kalendarz administracyjny

  • Przejrzysty podgląd: Wizualna siatka wszystkich zajętych i wolnych slotów na dzień, tydzień lub miesiąc.
  • Błyskawiczne informacje: Po kliknięciu w zajęty slot otwiera się karta z danymi klienta i statusem płatności.
  • Kontrola płatności: Wizualne znaczniki opłaconych i nieopłaconych rezerwacji.
  • Elastyczna edycja: Możliwość sprawnego zarządzania każdym konkretnym slotem przez interfejs administracyjny.

💡 Dlaczego jest to ważne dla biznesu?

Nie tylko otrzymujesz powiadomienie o zamówieniu, ale widzisz całą ekonomię procesu. System automatycznie oblicza przychód, uwzględniając czas trwania rezerwacji, i pozwala administratorom pracować w jednym wizualnym polu kalendarza, eliminując ryzyko „nakładania się” terminów lub podwójnych rezerwacji.

🔌 Zarządzanie rezerwacjami przez Commerce API

Wszystkie dane modułu rezerwacji są dostępne do integracji poprzez Commerce API. Możesz programowo zarządzać slotami, tworzyć i aktualizować zamówienia z rezerwacją, a także pobierać dane kalendarza — w celu synchronizacji z zewnętrznymi systemami CRM, aplikacjami mobilnymi lub niestandardowymi pulpitami nawigacyjnymi (dashboards).

GET
/api/commerce/booking
Pobierz listę slotów z filtrowaniem według daty, grupy, typu
GET
/api/commerce/booking/{id}
Pobierz slot po ID
POST
/api/commerce/booking
Utwórz nowy slot rezerwacji
PUT
/api/commerce/booking[/{id}]
Aktualizuj slot (po ID, group_id lub slug_search)
DELETE
/api/commerce/booking/{id}
Usuń slot po ID
POST
/api/commerce/orders
Utwórz zamówienie z danymi rezerwacji (booking_data)
PATCH
/api/commerce/orders/{id}
Aktualizuj rezerwację w istniejącym zamówieniu
GET
/api/commerce/orders/{id}
Pobierz zamówienie ze szczegółami rezerwacji (pola booking, booking_data)
📖 Więcej szczegółów: Pełna dokumentacja dla każdej metody, w tym tabela pól slotu, przykłady żądań oraz opis priorytetów wyszukiwania, jest dostępna w sekcji Booking API na stronie dokumentacji Commerce API Twojego konta.

❓ Najczęściej zadawane pytania dotyczące rezerwacji

Odpowiedzi na najpopularniejsze pytania dotyczące konfiguracji i użytkowania modułu rezerwacji online BooStore.pro

Czy na platformie BooStore dostępna jest funkcja rezerwacji?

Tak, platforma BooStore.pro oferuje w pełni funkcjonalny moduł rezerwacji i zapisów online. Zawiera on interaktywny kalendarz do zarządzania przedziałami czasowymi (slotami), elastyczny system statusów do śledzenia etapów realizacji zamówień oraz obsługę automatycznych płatności online podczas dokonywania rezerwacji. Dodatkowo moduł jest w pełni kompatybilny z Commerce API, co umożliwia zdalne zarządzanie, synchronizację danych z zewnętrznymi systemami oraz automatyzację procesów biznesowych.

Czy można korzystać z modułu rezerwacji w planie darmowym?

Tak. Moduł rezerwacji jest dostępny we wszystkich planach, w tym w darmowym. Możesz tworzyć nieograniczoną liczbę grup slotów (zasobów) i przyjmować zamówienia za pośrednictwem widżetu. W planie darmowym obowiązują standardowe limity dotyczące liczby produktów i zamówień w miesiącu, ale sama funkcjonalność rezerwacji nie jest zablokowana.

Jak skonfigurować obowiązkową przedpłatę za rezerwację?

Użyj atrybutu data-booking-payment-required="1". Po wybraniu godziny i przesłaniu formularza klient zostanie automatycznie przekierowany do bramki płatniczej. Status zamówienia zmieni się na „Opłacone” dopiero po udanej transakcji, a slot stanie się zajęty. Dodatkowo skonfiguruj data-booking-status-after-payment w celu automatycznej zmiany statusu po opłaceniu.

Jak ustawić rezerwację grupową (wiele miejsc na jeden slot)?

Dodaj atrybut data-booking-slot-allow-multiply="N", gdzie N oznacza liczbę dostępnych miejsc. Na przykład dla warsztatów na 10 osób wpisz wartość 10. System będzie pokazywał slot jako wolny, dopóki liczba potwierdzonych zamówień nie osiągnie limitu. Każde nowe zamówienie zmniejsza licznik wolnych miejsc.

Dlaczego slot na stronie pozostaje zajęty po anulowaniu zamówienia?

Sprawdź ustawienie data-booking-slot-allow-preorder. Jeśli wartość wynosi 0 (domyślnie), slot jest uważany za zajęty, dopóki zamówienie ma status „Nieprzetworzone”. Po anulowaniu zamówienia (status „Anulowane”), slot zostaje zwolniony. Jeśli problem nadal występuje, upewnij się, że status zamówienia rzeczywiście został zmieniony na anulowany (2, 5 lub 6), a nie na „W trakcie przetwarzania”.

Czy można zsynchronizować rezerwacje z Kalendarzem Google lub Outlookiem?

W standardowej wersji nie ma bezpośredniej synchronizacji z zewnętrznymi kalendarzami. Możesz jednak użyć Commerce API do programowego eksportu danych rezerwacji i skonfigurować integrację za pomocą usług zewnętrznych (Zapier, Make) lub własnego skryptu. Wszystkie dane kalendarza (daty, godziny, statusy) są dostępne przez GET /api/commerce/orders z polami booking oraz booking_data.

Jak ograniczyć horyzont rezerwacji (nie dalej niż za miesiąc)?

Użyj atrybutu data-booking-slot-max-calendar-date-form-now. Aby ograniczyć rezerwacje do jednego miesiąca, wpisz wartość endofnextmonth. Dostępne są również stałe endofmonth, endofyear, endofnextyear lub data absolutna w data-booking-slot-max-calendar-date.

Czy moduł działa na telefonach i tabletach?

Tak. Widżet rezerwacji jest w pełni responsywny. Interfejs kalendarza i wyboru czasu wyświetla się poprawnie na wszystkich urządzeniach, w tym na smartfonach o szerokości ekranu od 320px. Dla urządzeń mobilnych przewidziano osobne style oraz uproszczoną nawigację.

Jak zmienić cenę w zależności od czasu trwania rezerwacji?

Określ cenę bazową za jednostkę czasu w atrybucie data-booking-slot-price="10USD", gdzie 10USD to cena za jeden przedział bazowy (krok określa się w data-booking-slot-booking-time). System automatycznie pomnoży cenę bazową przez liczbę wybranych przedziałów. Jeśli cena jest stała i nie powinna się zmieniać w zależności od czasu trwania, dodaj data-booking-slot-fixed-price="1".

Czy można eksportować dane rezerwacji do Excela lub CRM?

Tak. Wszystkie zamówienia, w tym rezerwacje, są dostępne w standardowej tabeli statystyk sprzedaży w panelu administracyjnym. Możesz eksportować dane do formatu CSV/XLS. Do automatycznego pobierania danych użyj Commerce API: GET /api/commerce/orders z filtrowaniem po dacie. W odpowiedzi zwracane są wszystkie pola zamówienia, w tym booking i booking_data ze szczegółami slotu.

Co się stanie, jeśli dwóch klientów wybierze ten sam czas jednocześnie?

System blokuje slot na poziomiem bazy danych w momencie potwierdzania zamówienia. Jeśli dwóch użytkowników kliknie „Zarezerwuj” w tym samym momencie, pierwsze żądanie utworzy zamówienie i zablokuje czas, a drugie otrzyma błąd informujący, że slot jest już zajęty. Podwójne rezerwacje (overbooking) są wykluczone na poziomie architektury.

✅ Wszystko gotowe do startu!

Użyj połączenia atrybutów data dla logiki, CSS dla stylizacji zajętych slotów i funkcji Callback dla pełnej kontroli nad zachowaniem systemu. BooStore.pro zapewnia pełną funkcjonalność do stworzenia strony rezerwacji dowolnych usług. Statusy, płatności online i pełna kontrola.

Wybór platformy dla profesjonalnego sklepu internetowego z tysiącami produktów i automatyzacją
Instrukcja krok po kroku tworzenia sklepu internetowego z filtrem wyszukiwania i wersją mobilną
BooStore.pro vs WordPress + WooCommerce: dlaczego wtyczki zabijają szybkość i bezpieczeństwo e-commerce