Skip to main content
Studium przypadku

Automatyzacja formularzy: n8n i Telegram

Radek Venzhöfer ·

To nasza własna infrastruktura, nie projekt dla klienta. Jest mała, ale dobrze pokazuje, jak myślimy o automatyzacjach, które nie mogą gubić danych.

Sytuacja wyjściowa

Prowadzimy kilka stron i każda ma formularz kontaktowy. Każda wiadomość to potencjalny klient albo użytkownik z problemem, więc liczą się dwie rzeczy: musimy szybko się o niej dowiedzieć i nigdy nie możemy jej zgubić.

Klasyczne rozwiązanie w małej firmie to formularz, który wysyła e-mail. Potem ktoś sprawdza skrzynkę, przepisuje dane do CRM albo arkusza, wysyła potwierdzenie i stara się nie zapomnieć odpisać. To jest powolne, a każdy krok to miejsce, w którym wiadomość może zostać zapomniana.

Co zbudowaliśmy

Pierwsza wersja powstała dla jednej strony. Formularz wysyłał dane do workflow w n8n, który wysyłał powiadomienie na Telegram, żeby zapytanie było widoczne w ciągu sekund, zapisywał je w prostym CRM i wysyłał nadawcy e-mail z potwierdzeniem.

Z czasem wszystkie nasze strony podłączyliśmy do tej samej instancji n8n na własnym serwerze. Każda przekazuje tam wysłane formularze, a n8n powiadamia nas na Telegramie. Jedno miejsce, w którym zmienia się logikę, jedno miejsce, do którego się zagląda, gdy coś pójdzie nie tak.

Ten projekt miał słabość, której na początku nie widzieliśmy: n8n było jedyną kopią. Strona przekazywała wiadomość i o niej zapominała. Jeśli n8n w tym momencie nie działało albo się restartowało, wiadomość znikała i nikt by się nigdy nie dowiedział, że istniała.

Dlatego do kodu serwerowego każdej strony dodaliśmy zabezpieczenie:

  1. Gdy ktoś wyśle formularz, strona najpierw zapisuje wiadomość w logu na własnym serwerze jako odebraną.
  2. Dopiero potem przekazuje ją do n8n.
  3. Zapisuje wynik: dostarczono albo błąd wraz z przyczyną.

Odebrany wpis bez dostarczonego to dokładnie wiadomość, która do nas nie dotarła. Proste polecenie na serwerze je wypisuje, więc po awarii widać, co zostało przegapione.

Jak to działa na co dzień

Zwykle nic się nie zmienia: wiadomość trafia na Telegram kilka sekund po wysłaniu. Monitoring dostępności pilnuje instancji n8n, a jego alert jest sygnałem, by sprawdzić log pod kątem niedostarczonych wiadomości zamiast zgadywać.

Dwie decyzje były celowe. Gdy lokalna kopia się udała, a przekazanie zawiodło, odwiedzający i tak dowiaduje się, że wiadomość została wysłana, bo nie przepadła, a komunikat o błędzie zmusiłby go tylko do pisania jej od nowa. A ponieważ log zawiera imiona, adresy e-mail i treść wiadomości, jest zaprojektowany tak, by przechowywać go tylko przez ograniczony czas, a potem usuwać zaplanowanym sprzątaniem. Siatka bezpieczeństwa dla danych osobowych nie może stać się ich archiwum.

Zabezpieczenie włącza się na danej stronie, gdy serwer przydzieli jej miejsce na zapis; do tego czasu strona działa dokładnie jak wcześniej, więc wdrożenie nie mogło zepsuć działającego formularza.

Czego się nauczyliśmy

Nawet działająca automatyzacja może być krucha. Przepływ, który długo po prostu działa, to dokładnie miejsce, gdzie pojedynczy punkt awarii pozostaje niezauważony. Pytanie do każdej automatyzacji nie brzmi „czy działa?”, tylko „co dzieje się z danymi, kiedy nie działa?”

Najpierw zapisz, potem przekaż. Gdy wiadomość zostaje zapisana, zanim pójdzie dalej, każdy późniejszy błąd zostawia ślad. W odwrotnej kolejności zapisane byłoby tylko to, co już się udało.

Zabezpieczenie nie może być nowym źródłem błędów. Nic w kodzie logowania nie może zepsuć wysyłki formularza. Gdy zapis kopii się nie uda, błąd trafia do logu serwera, a formularz działa normalnie. Długość pól jest ograniczona, żeby zalew zgłoszeń nie mógł zapełnić dysku.

Małe rzeczy świadomie duplikuj. Nasze strony nie dzielą wspólnego kodu, więc mały moduł logowania jest skopiowany do każdej z nich zamiast wydzielenia osobnej paczki. Przy kilkudziesięciu liniach utrzymywanie zgodnych kopii jest tańsze niż utrzymywanie biblioteki.

Której usłudze to odpowiada

To automatyzacja n8n w najprostszej postaci: połączenie narzędzi, których firma już używa, żeby informacja od razu trafiała do właściwej osoby. Uwagi wymaga nie szczęśliwa ścieżka, tylko zabezpieczenie, i tak samo myślimy przy każdym workflow, który budujemy dla klientów.

Radek VenzhöferNapisz do mnie na WhatsAppie