Portfolio — Seweryn
Portfolio · wykonawca indywidualny

Automatyzacje w n8n, które chodzą na produkcji

Mam na imię Seweryn Buduję automatyzacje w n8n self-hosted, integracje API i rozwiązania AI dla małych firm i sklepów internetowych. Pracuję sam – od rozmowy o procesie, przez wdrożenie, po dokumentację i utrzymanie. Wszystko, co opisuję niżej, działa na mojej instancji. Mogę pokazać na żywo.
Jak wygląda wdrożenie ta sama droga przy każdym zleceniu
1 Rozmowa o procesie Co dziś dzieje się ręcznie i ile to zajmuje
2 Budowa na mojej instancji n8n w Dockerze na własnym VPS, nie na Twoim koncie
3 Testy na danych testowych Osobne arkusze, z dala od pracy firmy
4 Dokumentacja i utrzymanie Opis przepływu i co zrobić, gdy coś padnie
✓ tak powstał każdy system niżej
4opisane systemy
3na produkcji
2kopie zapasowe dziennie
30 htygodniowo
Czym pracuję

Stack, który utrzymuję sam

Wszystko poniżej stoi na jednej instancji, którą sam postawiłem i sam utrzymuję – z kopiami zapasowymi, monitorem dostępności i wspólną obsługą błędów dla każdego przepływu.
Silnik n8n self-hosted Docker VPS, Ubuntu harmonogramy nocne
Integracje REST API webhooki OAuth2 klucze API
Google Sheets, Docs, Drive Gmail Indexing API konto serwisowe
WordPress WordPress REST API WooCommerce REST API RankMath snippety PHP
AI Claude API OpenAI bazy wiedzy w Google Docs
Kontakt z klientem SMTP na własnej domenie RetellAI – asystent głosowy maile z przyciskiem decyzji
Projekty

Pięć wdrożeń, cztery do kliknięcia

Trzy z nich możesz sprawdzić sam, teraz, w drugiej karcie przeglądarki. Przy każdym piszę, na jakim etapie naprawdę jest – łącznie z tym, który nigdy nie obsłużył prawdziwego zgłoszenia, a i tak da się go kliknąć.
A Zapytania o termin rezerwacje i terminy, umawianie spotkań · wypożyczalnie, warsztaty, gabinety · n8n, Google Sheets
Problem

Zapytania po godzinach zostawały bez odpowiedzi, rezerwacje były rozrzucone między telefonem a wiadomościami, nie było jak sprawdzić, czy termin jest wolny.

Co zbudowałem
  • formularz rezerwacji, który przed przyjęciem zgłoszenia sprawdza listę zablokowanych terminów
  • zgłoszenie idzie mailem do właściciela z przyciskiem POTWIERDŹ; kliknięcie wraca webhookiem do n8n i dopiero wtedy powstaje rezerwacja
  • panel do blokowania terminów i dopisywania rezerwacji ręcznych, dane w Google Sheets
  • automatyczna archiwizacja starych rezerwacji
  • opcjonalnie asystent AI na stronie z bazą wiedzy w Google Docs, odpowiada na pytania o ofertę, cennik, dostępność i zasady
Efekt

Zapytania obsługiwane całą dobę, wszystkie rezerwacje w jednym miejscu, a właściciel nadal decyduje o każdej z nich.

Ciche awarie są droższe od głośnych – bo nikt ich nie zgłasza. Dlatego przy odbiorze sprawdzam nie tylko to, czy system działa, ale też co widzi klient końcowy, gdy coś pójdzie źle. Trzy takie znalazłem w tym systemie, czytając historię wykonań: wszystkie przeszły przez n8n ze statusem „sukces”, bez jednego błędu w logach. Wszystkie naprawione i przetestowane na produkcji.
Co konkretnie się zdarzyło Formularz przyjął zgłoszenie bez daty, bo atrybut novalidate unieważnił required i sprawdzenie blokad zostało pominięte. Numer zgłoszenia nie zawierał sekund, więc dwa zgłoszenia z tej samej minuty dostały ten sam numer i drugie nadpisało pierwsze. Najpoważniejsza: webhook nie miał ustawionego responseMode, więc odpowiadał kodem 200 zanim wykonał się kod przetwarzający – niekompletne zgłoszenie przepadało w wyjątku, a klient widział ekran „wysłano”. Naprawione po obu stronach: brakująca walidacja w formularzu i osobna ścieżka w n8n, która przy niekompletnym zgłoszeniu wysyła właścicielowi ostrzeżenie z telefonem klienta zamiast milczeć.
egraty.pl/demo-zapytania-o-termin Wypełnij formularz i przejdź całą drogę zgłoszenia – mail z przyciskiem POTWIERDŹ, wiersz w arkuszu, panel dnia. Dane, które wpiszesz, wędrują przez wszystkie kroki. Status: działa produkcyjnie, w sezonie, na prawdziwym ruchu
B Przyjęcie sprzętu do naprawy obsługa zleceń serwisowych, statusy dla klienta · warsztaty i serwisy · n8n, AppSheet
Co zbudowałem

Formularz przyjęcia sprzętu, rejestr zleceń w arkuszu, gotowe SMS-y do wysłania z firmowego telefonu przy zmianie statusu, panel serwisanta w AppSheet z podziałem ról, moduł głosowy odbierający telefon po godzinach.

Decyzja, którą zmieniłem

Powiadomienia szły przez bramkę SMS, co znaczyło dla klienta osobne konto i doładowania. Przerobiłem to tak, że system składa gotową wiadomość i pokazuje ją pracownikowi — jednym kliknięciem otwiera się w telefonie warsztatu. Zero kosztów, a SMS przychodzi z numeru, który klient zna i na który może oddzwonić.

egraty.pl/demo-system-dla-serwisu Przyjmij zlecenie, zmień jego status, porozmawiaj z asystentem. To ten sam system, którego klient nie wdrożył – możesz go kliknąć sam. Status: zbudowany i przetestowany, bez ruchu produkcyjnego. Klient wycofał się jeszcze zanim zobaczył gotowy system, więc nigdy nie obsłużył prawdziwego zgłoszenia – działa u mnie i można go kliknąć
C Plik tworzony po zakupie integracja sklepu, automatyczna dostawa zamówienia · sklepy z produktami cyfrowymi · WooCommerce, Claude API
Co zbudowałem

Webhook z WooCommerce po opłaceniu zamówienia → odczyt danych z zamówienia → treść generowana przez Claude API → dokument tworzony i formatowany przez Google Docs API → eksport do PDF → mail z załącznikiem do klienta. Wariant rozszerzony dokłada plik audio i wysyła oba załączniki razem.

Efekt

Klient dostaje swój plik kilka minut po zakupie, bez udziału człowieka.

egraty.pl/produkt/bajka-personalizowana-dla-dziecka Sklep jest mój, więc pokazuję go z nazwy. To ten produkt stoi za opisanym wyżej przepływem – od opłacenia zamówienia po plik w skrzynce klienta. Status: workflow jest aktywny i obsługuje prawdziwe zamówienia
D Zgłaszanie stron do Google SEO techniczne, integracja z API Google · sklepy i strony z wieloma podstronami · Indexing API, OAuth2
Co zbudowałem

Przy zapisie produktu w sklepie leci webhook do n8n, a ten zgłasza adres do Google Indexing API. Uwierzytelnianie przez OAuth2 i konto serwisowe. Nowe i zmienione strony trafiają do indeksacji same, bez wklejania adresów ręcznie w Search Console.

Efekt

Zgłoszenia dochodzą. Jest tam jeden znany błąd, którego jeszcze nie poprawiłem: przy zapisie wariantu produktu zamiast czystego adresu potrafi pójść wersja z parametrami. Nie szkodzi, bo prawidłowy adres i tak zostaje zgłoszony przy zapisie produktu głównego, ale część zgłoszeń leci w próżnię. Poprawka to jeden dodatkowy krok wyciągający adres produktu nadrzędnego.

Status: działa od kwietnia, sprawdzone w lipcu
E Sklep i strona na WordPressie strona i sklep na WordPressie, integracje WooCommerce · WordPress, WooCommerce, RankMath
Co zbudowałem

Czytasz to na moim sklepie. Postawiłem go i utrzymuję sam – od struktury kategorii i stron, przez płatności i pliki dostarczane po zakupie, po opisy i dane strukturalne produktów.

  • sklep WooCommerce z płatnościami i produktami cyfrowymi wysyłanymi automatycznie po zakupie
  • opisy produktów i meta SEO tworzone przez n8n przy zapisie – WooCommerce REST API i WordPress API
  • nowe adresy zgłaszane do Google Indexing API zaraz po publikacji
  • własne snippety PHP tam, gdzie motyw nie wystarczał, i widoki dopasowane do telefonu
  • kopie zapasowe oraz monitor dostępności sprawdzający trzy adresy co 5 minut
Do czego jeszcze służy

Ta sama instancja jest moim poligonem: stoi na niej dziś 54 aktywne workflow i to tutaj automatyzacja musi się najpierw popsuć, zanim pojadę z nią do klienta. Reszta ze stu szesnastu to eksperymenty, które wyłączyłem – nie każdy był dobrym pomysłem i część z nich to widać.

Status: moja własna strona, nie zlecenie klienta – ale działa, przyjmuje prawdziwe zamówienia i klikasz ją właśnie teraz
Jak pracuję

Instancja, backupy i błędy, które widać

Najciekawsze awarie nie krzyczą. Dlatego przy każdym systemie sprawdzam nie tylko to, czy działa, ale też co się dzieje, gdy padnie.
  • Instancjan8n w Dockerze na własnym VPS (Ubuntu), dostęp po HTTPS pod własną subdomeną, konfiguracja przez zmienne środowiskowe, kontrolowane aktualizacje wersji. Instancję postawiłem z gotowego obrazu dostawcy VPS i utrzymuję ją sam. Warstwy proxy nie konfigurowałem od zera i tego nie ukrywam.
  • Linux i VPS w praktyceDostęp po SSH, obsługa kontenera przez docker compose (restart, podmiana wersji, zmienne środowiskowe), czytanie logów kontenera przy diagnozie, transfer plików przez SFTP (przy większych plikach, bo przesyłanie przez SSH w base64 przestaje działać ok. 512 MB).
  • Dwa backupy, oba jako workflowBaza danych instancji trafia na Drive codziennie o 5:00, pełny eksport JSON wszystkich workflow codziennie o 2:30. Odtworzenie instancji nie zależy od tego, czy ktoś pamiętał zrobić eksport.
  • Error workflow od pierwszego dniaGlobalny error workflow podpinany do każdego nowego workflow: przechwytuje błąd, zapisuje kontekst i wysyła alert. Ustawiam go zaraz po utworzeniu workflow, nie na końcu.
  • APIREST, webhooki (walidacja danych wejściowych i zabezpieczenie endpointu), OAuth2 (Google), konta serwisowe, API keys, paginacja, obsługa limitów, retry przy wywołaniach zewnętrznych. Przykład z praktyki: Google Sheets ma limit 60 zapytań na minutę i łatwo go przekroczyć, jeśli drugi węzeł w łańcuchu czyta arkusz raz na każdy element.
  • SekretyTrzymam wyłącznie w zmiennych środowiskowych i w credentials n8n. Nigdy w treści workflow ani w repozytorium.
  • Błąd ma być widocznyUstawienie continueOnFail na węźle, który sprawdza dostępność, zamienia awarię w pustą listę i klient rezerwuje zajęty termin, a w n8n wszystko świeci na zielono. Takich miejsc szukam w pierwszej kolejności, gdy przeglądam cudze workflow.
  • Jak testujęPracuję na jednej instancji, na osobnych arkuszach i danych testowych. Zmiany na działającym systemie wprowadzam w godzinach bez ruchu i po zrobieniu kopii.
  • Co dostajesz przy odbiorzeDokumentację: opis przepływu, zależności zewnętrzne, miejsca, w których może paść, i co wtedy zrobić. Do tego instrukcja dla osoby nietechnicznej po Waszej stronie.
Jedna uwaga o samym narzędziu. Różnica między n8n self-hosted a Make czy Zapier robi się duża przy większym wolumenie. Proces obsługujący 300 zdarzeń dziennie to około 90 000 operacji miesięcznie. U dostawcy rozliczającego się za operacje to kilkaset złotych miesięcznie, na własnym serwerze to koszt VPS-a, czyli 40–80 zł, niezależnie od liczby wykonań. Przy takich procesach samo przeniesienie na self-hosted zwraca się szybciej niż optymalizowanie logiki.
Pytania

Co klienci pytają najpierw

Kto buduje te automatyzacje — agencja czy jedna osoba?

Jedna osoba. Pracuję jako indywidualny wykonawca, nie agencja – od rozmowy o procesie, przez wdrożenie, po dokumentację i utrzymanie. Nie ma przekazywania sprawy między działami ani opiekuna klienta, który nie rozumie technicznie systemu.

Czy można zobaczyć te systemy na żywo?

Trzy z nich są pod linkiem na tej stronie i możesz je kliknąć od razu – system rezerwacji wypożyczalni, produkt w moim sklepie oraz demo systemu serwisowego. Czwarty pokażę na żywo na spotkaniu. Trzy z czterech obsługują prawdziwy ruch: rezerwacje, zamówienia w sklepie i zgłoszenia do Google.

Na czym stoi ta instancja n8n?

n8n w Dockerze na własnym VPS z Ubuntu, dostęp po HTTPS pod własną subdomeną, konfiguracja przez zmienne środowiskowe i kontrolowane aktualizacje wersji. Do tego dwa niezależne backupy jako workflow: baza instancji codziennie o 5:00 i pełny eksport JSON wszystkich workflow o 2:30.

Co dostaję przy odbiorze wdrożenia?

Dokumentację: opis przepływu, zależności zewnętrzne, miejsca, w których system może paść, i co wtedy zrobić. Do tego instrukcję dla osoby nietechnicznej po stronie klienta. Każdy nowy workflow dostaje też globalny error workflow, który przechwytuje błąd i wysyła alert.

Czym n8n self-hosted różni się od Make albo Zapier?

Kosztem przy większym wolumenie. Proces obsługujący 300 zdarzeń dziennie to około 90 000 operacji miesięcznie. U dostawcy rozliczającego się za operacje to kilkaset złotych miesięcznie, na własnym serwerze to koszt VPS-a, czyli 40–80 zł, niezależnie od liczby wykonań.

Masz proces, który zjada czas?

Napisz dwa zdania o tym, co się dzieje dzisiaj ręcznie. Odpiszę, czy da się to odchudzić i ile mniej więcej pracy to jest.

NAPISZ

Koszyk
Główna
Sklep
Asystent AI
0
Menu
×
eGraty.pl
Przegląd prywatności

Ta strona korzysta z ciasteczek, aby zapewnić Ci najlepszą możliwą obsługę. Informacje o ciasteczkach są przechowywane w przeglądarce i wykonują funkcje takie jak rozpoznawanie Cię po powrocie na naszą stronę internetową i pomaganie naszemu zespołowi w zrozumieniu, które sekcje witryny są dla Ciebie najbardziej interesujące i przydatne.