W każdej firmie, którą audytujemy, znajduje się w końcu ten sam arkusz. Nazywa się „leady", ma kilkanaście kolumn i jedną osobę, która raz dziennie przepisuje z niego dane do CRM. Czasem nie raz dziennie, tylko w piątek. Czasem ta osoba jest na urlopie.
Sam formularz zwykle działa bez zarzutu. Rozjazd zaczyna się dalej, między „ktoś wysłał formularz" a „handlowiec o tym wie i ma to zapisane tam, gdzie pracuje". Ten odcinek prawie nigdy nie jest zautomatyzowany, bo wygląda na drobiazg.
TL;DR: Tally ma webhooki i API w darmowym planie, więc do prostego lejka leadowego jest dziś najrozsądniejszym wyborem. Typeform integruje się świetnie, ale płacisz za liczbę odpowiedzi. Google Forms wyśle zgłoszenie na zewnątrz dopiero przez Apps Script albo dodatek. Własny formularz na stronie daje pełną kontrolę nad antyspamem, zgodami i polami ukrytymi i to na nim stoi nasz produkcyjny lejek.
Gdzie dokładnie gubią się leady
Zgłoszenia rzadko znikają w spektakularny sposób. Wyciekają po trochu, w czterech miejscach.
Skrzynka zbiorcza: powiadomienie ląduje na biuro@ obok faktur i newsletterów, a po jednym dniu z większym ruchem zjeżdża poniżej linii, do której ktokolwiek scrolluje. Przepisywanie ręczne: ktoś robi literówkę w mailu albo skraca nazwę firmy tak, że przestaje pasować do istniejącego rekordu, więc po pół roku macie w bazie trzy warianty tego samego klienta.
Brak śladu po źródle: lead z reklamy, z LinkedIna i z polecenia wyglądają w CRM identycznie, więc pytanie „która kampania się spina" zostaje bez odpowiedzi. No i formularz, o którym nikt nie pamięta: stary landing page, zakładka „kariera", ankieta po webinarze, ze zgłoszeniami lecącymi na skrzynkę osoby, która odeszła dwa lata temu.
Automatyzacja tego odcinka nie polega na wymyśleniu nowego procesu, tylko na tym, żeby dane raz wpisane przez klienta dojechały do systemu handlowca bez pośrednika w postaci czyjejś pamięci.
Architektura: formularz, webhook, walidacja, CRM
Niezależnie od narzędzia przepływ wygląda tak samo i ma pięć kroków.
1. Formularz wysyła zgłoszenie POST-em na webhook. Webhook to adres, pod który narzędzie melduje „stało się coś, oto dane" (tu wyjaśniamy to szerzej). Po drugiej stronie stoi platforma automatyzacji: u nas n8n, równie dobrze Make albo Zapier.
2. Odbiornik potwierdza przyjęcie od razu. Workflow odpowiada „mam" w ułamku sekundy i dopiero potem robi resztę. Inaczej zamulony CRM zamula stronę, klient widzi kręciołek i klika drugi raz.
3. Walidacja i zapis surowego zgłoszenia. Token antyspamowy sprawdzony po stronie serwera, format e-maila i telefonu, obowiązkowe pola, zgody. Zaraz potem surowe dane lądują w trwałym miejscu.
4. Deduplikacja i wzbogacenie. Workflow szuka w CRM kontaktu o tym adresie e-mail i albo dopina zgłoszenie do istniejącego rekordu, albo zakłada nowy. W formularzach B2B dokładamy pole na NIP i po nim dociągamy dane firmy z wykazu podatników VAT Ministerstwa Finansów oraz API Krajowego Rejestru Sądowego. Oba są bezpłatne, a handlowiec dostaje lead z gotowym kontekstem zamiast z zadaniem „sprawdź, kto to".
5. Zapis w CRM plus powiadomienie. Rekord w systemie, zadanie z terminem dla konkretnej osoby i krótka wiadomość na kanał, który ta osoba naprawdę czyta. U nas to SMS, bo mail wpada między czterdzieści innych.

Drugą połowę, z node'ami i obsługą błędów, rozebrałem w tekście o spinaniu formularza z Pipedrive przez n8n. Tutaj interesuje mnie to, co dzieje się przed webhookiem.
Google Forms, Typeform, Tally, własny formularz
Cztery opcje, które spotykamy najczęściej. Ceny i limity z sierpnia 2026, wszyscy trzej dostawcy zmieniają je regularnie.
| Google Forms | Typeform | Tally | Własny formularz HTML | |
|---|---|---|---|---|
| Koszt startowy | darmowy (konto Google) | Free: ok. 10 odpowiedzi/mies. | darmowy, bez limitu zgłoszeń | koszt pracy przy budowie |
| Plan płatny | w ramach Workspace | Basic 28 USD/mies. (100 odpowiedzi), Plus 56 USD (1000), Business 91 USD (10 000) | Pro 20 €/mies., Business 65 €/mies. | brak abonamentu |
| Webhook | tylko przez Apps Script lub dodatek | tak, od planu Basic | tak, w planie darmowym | tak, piszesz wprost |
| Pola ukryte / UTM | tylko link z prefillem | tak (URL parameters) | tak (hidden fields) | tak, bez ograniczeń |
| Antyspam | reCAPTCHA po stronie Google | wbudowany, ograniczona kontrola | wbudowany | dowolny, np. Turnstile + honeypot |
| Wygląd i UX | siermiężny | najlepszy w stawce | dobry, prosty | zależy od Was |
| Kontrola nad danymi | Typeform | Tally | Wasz serwer i Wasz webhook |

Google Forms. Wygrywa ceną i tym, że każdy potrafi go postawić. Przegrywa integracjami, bo natywnego webhooka nie ma. Zgłoszenie wyjeżdża na zewnątrz albo skryptem w Apps Script (wyzwalacz onFormSubmit, wywołanie UrlFetchApp), albo dodatkiem z marketplace'u. Skrypt to kilkanaście linijek, ale ktoś musi go utrzymać. Do ankiety wewnętrznej wystarczy, do lejka z budżetem reklamowym wybrałbym coś innego.
Typeform. Najprzyjemniejszy w wypełnianiu, co widać w konwersji przy dłuższych formularzach, bo pytania podawane po jednym męczą mniej niż ściana pól. Webhooki i API działają od planu Basic. Problemem jest model rozliczania: płacisz za liczbę odpowiedzi w miesiącu, a po wyczerpaniu limitu formularz przestaje zbierać zgłoszenia. Przy kampanii, która nagle chwyci, to najgorszy możliwy moment na taką niespodziankę.
Tally. Dziś polecamy go najczęściej przy prostym lejku leadowym. Darmowy plan obejmuje nieograniczoną liczbę formularzy i zgłoszeń (w ramach zasad uczciwego użycia), logikę warunkową, pola ukryte, webhooki i integracje z Google Sheets, Notion, Airtable, Zapierem oraz Make. Pro za 20 €/mies. zdejmuje branding i dokłada własną domenę oraz analitykę.
Własny formularz na stronie. Nasz produkcyjny lejek stoi właśnie na nim, a powód jest prozaiczny: kontrola. Sami decydujemy, jaki antyspam siedzi przed wysyłką, jak brzmią zgody i co ląduje w payloadzie. Żaden zewnętrzny dostawca nie przechowuje danych naszych klientów, nie ma limitu zgłoszeń. Cena to kilka godzin pracy i samodzielne ogarnięcie tego, co gotowe narzędzia dają w pakiecie.
„Najczęstszy powód gubienia leadów, jaki znajdujemy w firmach, to nie brak integracji, tylko drugi formularz. Ten główny ktoś kiedyś spiął z CRM, a o zapisach z webinaru i o zakładce kontaktowej na starym landingu nikt nie pamięta. Zanim wybierzesz narzędzie, zrób listę wszystkich formularzy, które macie w sieci. Zwykle jest ich dwa razy więcej, niż ktokolwiek zakłada." — Mikołaj Brunka, założyciel NoCodeWork
Antyspam, czyli warunek wstępny czystego CRM
Formularz podpięty pod CRM bez antyspamu psuje więcej, niż naprawia. Boty znajdują otwarty endpoint w kilka dni i handlowiec zaczyna dostawać powiadomienia o leadach, których nie ma. Dwa tygodnie później przestaje reagować na wszystkie, łącznie z prawdziwymi.
Trzy warstwy, które stosujemy, od najtańszej:
Honeypot. Ukryte pole, którego człowiek nie widzi, a bot wypełnia automatycznie. Wypełnione oznacza spam i zgłoszenie ląduje w koszu bez żadnego komunikatu. Chowaj je stylem, a nie atrybutem type="hidden", bo tego drugiego bardziej zaawansowane boty się spodziewają.
Turnstile albo reCAPTCHA. Cloudflare Turnstile jest bezpłatny w standardowym planie, bez limitu zapytań, i najczęściej działa niewidocznie, bez klikania obrazków z sygnalizatorami. Cała robota jest w drugim kroku, o którym najłatwiej zapomnieć: widget na stronie sam z siebie nie chroni niczego. Token, który generuje, trzeba zweryfikować po stronie serwera (endpoint siteverify), zanim zgłoszenie pójdzie dalej. Bez tego bot strzela prosto w webhook i omija widget bokiem.
Walidacja treści. Komentarz zawierający link, adres z domeny jednorazowej, formularz wysłany dwie sekundy po załadowaniu strony. Każda z tych reguł to kilka linii w workflow.
W gotowych narzędziach ochrona jest wbudowana i wpływ na nią masz niewielki.
RODO: zgody, klauzula i to, gdzie lądują dane
Trzy rzeczy, które przy formularzach leadowych mylą się najczęściej.
Nie każda zgoda jest potrzebna. Do odpowiedzi na zapytanie ofertowe zwykle nie potrzebujesz zgody, bo podstawą jest podjęcie działań przed zawarciem umowy (art. 6 ust. 1 lit. b RODO) albo prawnie uzasadniony interes administratora (lit. f). Checkbox robi się konieczny dopiero wtedy, gdy chcesz z tymi danymi zrobić coś więcej: dopisać kontakt do newslettera, wysyłać oferty, dzwonić z propozycją. Zgoda na sam kanał kontaktu wynika z przepisów o komunikacji elektronicznej, nie z RODO.
Zgoda musi być dobrowolna. Jeśli formularza nie da się wysłać bez zaznaczenia zgody marketingowej, warunek dobrowolności upada, a zgoda jest wadliwa. Rozdziel checkboxy: osobno obsługa zapytania, osobno marketing. Żadnych domyślnie zaznaczonych pól ani jednego checkboxa zbierającego cztery rzeczy naraz.
Obowiązek informacyjny idzie przy formularzu, nie w regulaminie. Kto jest administratorem, w jakim celu przetwarza dane, jak długo je trzyma i jakie prawa ma osoba, która je zostawia. Krótka klauzula z linkiem do pełnej polityki wystarczy.
Zostaje pytanie, o którym przy wyborze narzędzia prawie nikt nie myśli: gdzie fizycznie lądują te dane. Zgłoszenie z Typeforma czy Tally zostaje w bazie odpowiedzi dostawcy, więc potrzebujesz umowy powierzenia, wpisu w rejestrze czynności i decyzji o retencji. Skoro CRM jest źródłem prawdy, kasuj odpowiedzi z narzędzia formularzowego po ustalonym czasie. To samo po stronie platformy automatyzacji rozbieramy w tekście o n8n i RODO.
Mapowanie pól i pola ukryte z UTM
Mapowanie to najnudniejszy element wdrożenia i ten, który najczęściej wysadza je po miesiącu.
Zacznij od tego, czym integracja identyfikuje pole. Google Forms i Typeform przesyłają odpowiedzi opisane wewnętrznym identyfikatorem pytania, a nie jego treścią, co działa na Waszą korzyść, bo poprawka literówki niczego nie zepsuje. Gorzej, gdy narzędzie mapuje po nazwie: wystarczy, że ktoś dopisze dwukropek na końcu etykiety i workflow przestaje znajdować pole. W Tally nazwy pól ukrytych rozróżniają wielkość liter, więc utm_source i UTM_source to dwa różne pola.
Trzymaj jedną informację na pole. Rozbij imię i nazwisko na dwa, jeśli CRM tak je przechowuje, a telefon normalizuj w workflow do jednego formatu, bo ludzie wpiszą go na pięć sposobów i deduplikacja po numerze przestanie działać.
Najwięcej z marketingowego punktu widzenia daje jednak coś, czego klient nawet nie widzi: pola ukryte ze źródłem zgłoszenia. Tally nazywa je hidden fields, Typeform URL parameters, a Google Forms daje tu najmniej, bo obsługuje tylko linki z prefillem. We własnym formularzu dopisujesz je JavaScriptem przy wysyłce. Nasz domyślny zestaw to utm_source, utm_medium i utm_campaign z adresu strony, sam adres strony (przy kilku landing page'ach to jedyny sposób, żeby wiedzieć, skąd poszło zgłoszenie), gclid i fbclid oraz znacznik czasu z identyfikatorem formularza.
Bez tego CRM wypełnia się leadami bez pochodzenia, a pytanie „czy ta kampania się zwraca" pozostaje kwestią przeczucia. Szerzej o mierzeniu tego piszemy przy automatyzacji marketingu, od leadów do raportów.
Co, gdy webhook nie dojdzie
Prędzej czy później nie dojdzie. CRM ma przerwę techniczną, API zwraca limit zapytań, ktoś zmienia adres webhooka i zapomina go podmienić w formularzu.
Zapis na boku przed wszystkim innym. Pierwszym krokiem po odebraniu zgłoszenia jest zapisanie surowych danych w trwałym miejscu, a dopiero drugim próba zapisu w CRM. Gdy dalsza część workflow się wywróci, lead nadal istnieje i ktoś dopcha go ręcznie. Bez tego jedynym śladem zostaje log wykonania, prędzej czy później wyczyszczony.
Ponowienia po stronie narzędzia formularzowego. Typeform daje na odpowiedź 30 sekund, a przy błędach ponawia przez kilka godzin według rosnących odstępów. Po długiej serii niepowodzeń wyłącza webhooka i wysyła powiadomienie, co warto zapamiętać: webhook potrafi zostać wyłączony w tle, a formularz dalej wygląda na działający. Panel z ostatnimi próbami dostarczenia to pierwsze miejsce, w które warto zajrzeć, gdy leady przestają wpadać.
Ponowienia po stronie workflow. Node'y odpytujące CRM ustawiamy na kilka prób w odstępie paru sekund. Kroki wzbogacające dane mają iść dalej mimo błędu, bo lead bez adresu firmy jest lepszy niż brak leada. Zapis do CRM ma się wywalić głośno.
Alert z treścią, nie z kodem błędu. „Workflow failed" nikt nie przeczyta. „Lead Jan Kowalski, tel. 6xx…, nie trafił do CRM" ląduje na kanale zespołu i ktoś oddzwania ręcznie, nie czekając na naprawę przyczyny. Do tego raz w tygodniu porównanie dwóch liczb: ile zgłoszeń przyjął formularz, ile rekordów powstało w CRM. Rozjazd oznacza przeciek.
Thank you page i natychmiastowy follow-up
Moment po kliknięciu „wyślij" to jedyna chwila, gdy masz stuprocentową uwagę osoby, która właśnie zostawiła dane. Komunikat „dziękujemy, odezwiemy się" marnuje ją w całości.
Ten ekran ma powiedzieć konkretnie, co się teraz stanie. „Odezwiemy się telefonicznie w ciągu jednego dnia roboczego, dzwonimy z numeru XXX" działa lepiej niż deklaracja bez terminu, bo klient wie, na co czekać, i odbiera telefon od nieznanego numeru. Dołóż coś, co dostaje od razu: materiał do przeczytania albo termin w kalendarzu. Zrób z tego osobną stronę, a nie komunikat podmieniany w miejscu formularza, bo tylko wtedy ma własny adres, na którym wyzwolisz konwersję w Google Ads, Meta czy GA4.
Do tego automatyczna odpowiedź w tej samej minucie. Nie „dziękujemy za wiadomość", tylko krótki mail nawiązujący do tego, o co klient pytał, z imieniem osoby, która się odezwie, i terminem kontaktu. Wychodzi z workflow zaraz po walidacji, więc nie czeka ani na CRM, ani na rejestry. Powód, dla którego to działa, jest banalny: klient, który wysłał zapytanie do trzech firm, zwykle rozmawia z tą, która odezwała się pierwsza.
Kiedy to zły pomysł
Gdy nie macie CRM. Zacznij od oceny, czy CRM jest Wam w ogóle potrzebny, a przy małej skali rozważ bazę kontaktów w Notion, która przy kilkunastu szansach miesięcznie wystarcza.
Gdy zgłoszeń jest kilka w miesiącu. Ręczne przepisanie zajmuje wtedy minutę. Sens pojawia się od kilkudziesięciu zgłoszeń miesięcznie albo wcześniej, jeśli płacisz za ruch z reklam.
Gdy nikt nie odbiera po drugiej stronie. Automat dowiezie lead w pół minuty, ale jeśli handlowiec i tak oddzwania po dwóch dniach, kupiliście szybszy sposób na to samo opóźnienie.
Gdy formularz jest źle zaprojektowany. Czternaście pól obowiązkowych, w tym „budżet" i „liczba pracowników", odetnie Wam większość zgłoszeń, zanim jakakolwiek automatyzacja się nimi zajmie. Zbieraj minimum potrzebne do oddzwonienia, resztę dociągnij po NIP.
Pamiętaj też, że automatyzacja rozniesie po firmie bałagan. Jeśli w CRM nikt nie wie, czym różni się „nowy" od „w kontakcie", integracja sprawniej zapełni śmieciami wszystkie etapy. Przegląd tego, co da się poukładać wokół sprzedaży, zebraliśmy w dwunastu automatyzacjach działu sprzedaży.
FAQ
Które narzędzie formularzowe najłatwiej spiąć z CRM?
Tally, bo webhooki, pola ukryte i integracje z Zapierem czy Make ma w darmowym planie, bez limitu zgłoszeń. Typeform też integruje się bez problemu, ale webhooki zaczynają się od planu Basic, a rozliczenie idzie od liczby odpowiedzi w miesiącu. Google Forms wymaga skryptu w Apps Script albo dodatku, bo natywnego webhooka nie ma.
Czy Google Forms może wysłać zgłoszenie do CRM?
Tak, ale nie bezpośrednio. Potrzebujesz skryptu w Google Apps Script z wyzwalaczem „on form submit", który wywołaniem UrlFetchApp wysyła dane pod adres webhooka, albo dodatku z Google Workspace Marketplace. Limit wywołań sieciowych to 20 000 dziennie na koncie prywatnym i 100 000 na Workspace, więc ograniczeniem nie jest liczba zgłoszeń, tylko to, że skrypt trzeba utrzymać.
Czy formularz leadowy wymaga checkboxa ze zgodą RODO?
Do samej odpowiedzi na zapytanie zwykle nie, bo podstawą jest podjęcie działań przed zawarciem umowy albo prawnie uzasadniony interes administratora. Zgoda jest potrzebna, gdy chcesz dopisać kontakt do newslettera albo wysyłać oferty. Musi być dobrowolna (nie możesz blokować wysłania formularza wymogiem jej zaznaczenia) i osobna dla każdego celu. Klauzula informacyjna ma być widoczna przy formularzu.
Jak przekazać UTM-y z reklamy do CRM razem z leadem?
Dodaj do formularza pola ukryte o nazwach zgodnych z parametrami (utm_source, utm_medium, utm_campaign, dodatkowo gclid i fbclid) i wypełniaj je wartościami z adresu strony. Tally nazywa to hidden fields, Typeform URL parameters, we własnym formularzu dopisujesz je skryptem przy wysyłce. Workflow przepisuje te wartości do pól w CRM. Google Forms obsługuje tylko linki z prefillem, widoczne dla użytkownika.
Co się dzieje, gdy webhook nie dotrze do CRM?
Dobrze zbudowany przepływ zapisuje surowe zgłoszenie w trwałym miejscu, zanim spróbuje czegokolwiek z CRM, więc dane nie giną. Narzędzie formularzowe ponawia nieudane dostarczenia (Typeform robi to przez kilka godzin, a po długiej serii błędów wyłącza webhooka i powiadamia o tym), workflow ponawia własne wywołania, a gdy i to zawiedzie, wysyła alert z danymi leada, żeby ktoś oddzwonił ręcznie.
Podsumowanie
Wybór narzędzia formularzowego wygląda na decyzję o wyglądzie, a jest decyzją o tym, czy dane dojadą tam, gdzie mają. Tally daje webhooki i pola ukryte za darmo i przy prostym lejku leadowym trudno go dziś przebić. Typeform zarabia na sobie tam, gdzie formularz jest długi i sam robi za wizytówkę. Google Forms zostawiłbym przy ankietach wewnętrznych, a własny formularz jest wart swojej ceny, gdy zależy Ci na kontroli nad antyspamem, zgodami i danymi.
Sama integracja to jednak mniejsza połowa roboty. O tym, czy wdrożenie przetrwa pierwszy miesiąc, decydują nudne drobiazgi: weryfikacja tokenu antyspamowego po stronie serwera, zapis surowego zgłoszenia przed próbą zapisu w CRM, rozdzielone checkboxy zgód, pola ukryte ze źródłem leada i alert z nazwiskiem klienta zamiast kodu błędu.
Chcesz sprawdzić, ile formularzy naprawdę macie w sieci i gdzie zgłoszenia tracą czas? Umów bezpłatną konsultację — przejdziemy przez Wasz lejek i powiemy wprost, jeśli przy Waszej liczbie zgłoszeń żadne wdrożenie się nie spina.
