Przejdź do treści
Mateusz Cieplak

Generowanie leadów · Motoryzacja

Grupa Krotoski

Lejek rezerwacji jazd testowych i panel kampanii dla grupy dealerskiej

Pięciostopniowy lejek rezerwacji (miasto, marka, auto, trasa, formularz) dla grupy dealerskiej sprzedającej Audi, Volkswagena, Porsche i sześć innych marek oraz panel, w którym zespoły agencji i klienta tworzą linki kampanii z kodami QR i śledzą każdy lead aż do salonu i CRM-a.

Rola
Główny programista: audyt, przebudowa, panel, maile i wdrożenie (232 z 270 commitów)
Okres
sierpień - październik 2026
Technologie
  • Next.js
  • React 19
  • TypeScript
  • SQLite
  • Docker
  • EasyPanel
  • REST API
  • CRM
Co dzieje się z rezerwacją
  1. Kampania

    1. Link albo kod QR
    2. UTM zachowany w sesji
  2. Lejek

    1. Miasto
    2. Marka
    3. Auto
    4. Trasa
    5. Formularz
  3. Dostarczenie

    1. Zapis leada
    2. Mail do salonu
    3. Lead w CRM
    4. Potwierdzenie dla klienta

Panel pokazuje status każdej wysyłki i pozwala ją ponowić.

ładowanie listy aut
14,7 s → 8 ms
ścieżek kampanii sprawdzonych na produkcji
204 / 204
aut synchronizowanych co noc
2800+
blokujących błędów dostępności, dziś na 31 ekranach
6 → 0

Kontekst

Grupa prowadzi kampanie jazd testowych w 6 miastach i 23 salonach, na 44 trasach. Każda rezerwacja musi trafić do właściwego salonu, do CRM-a i do klienta jako potwierdzenie, z zachowanym źródłem kampanii.

Przejąłem prototyp wygenerowany przez AI i zacząłem od audytu. Wykazał 8 krytycznych błędów, m.in. maile do salonów, które nigdy nie wychodziły, i 16 z 44 tras, których nie dało się zarezerwować.

Co zrobiłem

  • Audyt prototypu, potem przebudowa i przeniesienie z Vercela na własny serwer w Dockerze
  • Ścieżki kampanii jako szablony z macierzy miasto × marka × salon × model, z 5 parametrami UTM i kodem QR dla każdego linku
  • Linki kampanii otwierające lejek od razu zawężony, z atrybucją UTM zachowaną przez całą sesję
  • Formularz leada z limitem zapytań, honeypotem i walidacją
  • Dostarczanie do salonu mailem i do CRM-a, ze statusem i osobnym przyciskiem ponownej wysyłki dla każdego kanału
  • Trzy szablony maili: do salonu, potwierdzenie dla klienta i reset hasła
  • Dwie role, administrator i użytkownik, sprawdzane po stronie serwera
  • Nocna synchronizacja floty z API klienta i instrukcje obsługi dla zespołu klienta

Trudne momenty i jak je rozwiązałem

  1. Problem

    Każda wizyta pytała API floty klienta o listę aut: 14,7 sekundy dla 2882 rekordów, a awaria po stronie klienta oznaczała pusty lejek.

    Rozwiązanie

    Flota jest pobierana w tle, zapisywana lokalnie i przekazywana do pierwszego renderu po stronie serwera. Lista ładuje się teraz w 8 ms, a lejek nie zależy od dostępności API klienta.

  2. Problem

    Lead odrzucony przez CRM po prostu przepadał.

    Rozwiązanie

    Każdy lead jest najpierw zapisywany, a dopiero potem wysyłany. Panel pokazuje osobno status maila i wysyłki do CRM-a i pozwala ponowić każdą z nich.

  3. Problem

    Linki kampanii mogły przestać działać po cichu, gdy zmieniały się salony, modele albo trasy.

    Rozwiązanie

    Rejestr ścieżek kampanii i test, który otwiera każdą z nich. Na produkcji przechodzi 204 z 204.

Wyniki

  • Na produkcji od 22.09.2026
  • Lista aut: 14,7 s → 8 ms
  • Blokujące błędy dostępności: z 6 do 0, utrzymane przy rozroście panelu do 31 ekranów
  • Testy dymne: maile 13/13, bezpieczeństwo 8/8

Pokazane jako schemat. Zrzuty ekranu i omówienie na życzenie.

Kontakt

Porozmawiajmy.

Szukasz frontend developera, który doprowadzi projekt aż do produkcji? Skorzystaj z formularza albo napisz bezpośrednio.

kontakt@mateuszcieplak.com

Dane służą wyłącznie do odpowiedzi. Formularz obsługuje Web3Forms.

Skontaktuj się