
Czy Twój zespół spędza cenne godziny na ręcznym kopiowaniu danych z formularzy kontaktowych do CRM? Czy chciałbyś mieć system, który nie tylko odbiera zapytania od klientów, ale także je analizuje, przygotowuje wstępną ofertę i informuje Cię o wszystkim np na Slacku?
Jeśli tak, to ten poradnik jest dla Ciebie.
Pokażemy Ci, jak krok po kroku zbudować w N8N w pełni zautomatyzowany proces, który wesprze Twój dział sprzedaży. Stworzymy "cyfrowego asystenta", który pracuje 24/7, nie popełnia błędów i pozwala Twojemu zespołowi skupić się na tym, co najważniejsze – na rozmowie z klientami.Co zbudujemy?
Nasz system będzie:
- Odbierał zapytania z formularza kontaktowego (WordPress) na stronie oraz z dedykowanej skrzynki e-mail.
- Analizował treść zapytania dzięki AI (chatGPT), tworząc zwięzły tytuł i wstępną ofertę.
- Automatycznie tworzył kontakt i szansę sprzedaży w Pipedrive CRM.
- Wysyłał natychmiastowe powiadomienie na Slacka z linkiem do CRM.
- Wysyłał do klienta e-mail z potwierdzeniem otrzymania wiadomości.
Czego potrzebujesz?
- Konto N8N (w chmurze lub na własnym serwerze).
- Dostęp do API OpenAI.
- Konto w Pipedrive (lub innym CRM, proces można łatwo dostosować).
- Konto Slack. (opcjonalnie)
- Konto w serwisie do wysyłki e-maili (np. Mailgun, SendGrid)
Konfiguracja WordPress
Większość z nas posiada strony internetowe oparte o system CMS WordPress. Formularz kontaktowy w większości przypadku będzie oparty o wtyczkę Contact Form 7. Gdy potencjalny klient wyślę do nas zapytanie przez tę wtyczkę musimy przesłać dane zebranę przez formularz do N8N. Do tego posłuży nam wtyczka CF7 to Webhook.
Zainstaluj tę wtyczkę i skonfiguruj.

Poznasz ten adres w kolejnych krokach.
Przejdź do ustawień zaawansowanych wtyczki. Ustaw metodę wysyłki danych na POST i wklej poniższy kod do zakładki Body.
{ "message": { "content": "New message!", "sender": { "name": "[your-name]", "email": "[your-email]", "phone": "[your-phone]" }, "body": "[your-message]", "dataProcessingAccepted": "[acceptance-data-processing]" } }W razie potrzeby dostosuj nazwy pól [your-name] itd do swojej struktury.

Odbieranie wiadomości
Stwórz nowy proces w N8N i zacznij krok po kroku go budować.
Zaczniemy od zbudowania części odpowiadającej za odbieranie danych z formularza kontaktowego oraz skrzynki mailowej.

Odbiór wiadomości z formularza kontaktowego
1. Dodaj node typu Webhook
- Metoda: POST
- Ścieżka: np. /webhook/contact-form-7
W Contact Form 7 w WordPressie ustaw url wysyłki do Twojego webhooka:
https://twoja-domena.pl/webhook/contact-form-7
2. Dodaj node typu Edit Fields.

Odbiór wiadomości ze skrzynki mailowej
1. Trigger na e-mail (IMAP)
Dodaj node Email Trigger (IMAP)
- Host, port, user, pass (Twoja skrzynka, np. sales@twoja-domena.pl)
- Oznacz, by wywoływał się na każde nowe wiadomości.

2. UTF-8 support
Dodaj node typu Code. Ten node jest przydatny w przypadku problemów z polskimi znakami w odbieranych mailach.
Ten blok powinien wyglądać tak:

Kod do skopiowania:
const text = $input.first().json.textPlain// Zakładając, iż treść wiadomości jest w polu 'text' const correctedText = Buffer.from(text, 'binary').toString('utf8'); $input.item.json.text = correctedText; return $input.item;3. Parse From Mail
Przetwórz dane odebrane z wiadomości email. Dodaj node Set.

Zmienne do skopiowania:
- name: {{ $json.from.replace(/<.*>/, '').trim() }}
- subject: {{ $json.subject }}
- email: {{ $json.from.match(/<([^>]+)>/)[1] }}
- body: {{ $json.text }}
- phone: 999 999 99
Scalanie danych
- Wstaw node Merge (tryb Append)
- Połącz wyjścia z Webhooka i z Email Triggera
- Efekt: jednolity obiekt:

Generowanie tytułu i oferty przez GPT-4
Dodaj Node OpenAI.

- Wybierz model, np. gpt-4o.
- W polu Messages, w roli Assistant, wklej precyzyjnie przygotowany prompt.
To najważniejsza część – mówisz AI, co dokładnie ma zrobić. Oto przykład z naszego procesu:
Komtekst: obsługujemy zapytanie od klienta. Musimy stworzyć dla niego ofertę. Zrób po polsku podsumowanie wiadomości w 1 zdaniu. Niech to będzie tytuł szansy sprzedaży do CRM. Zapytanie od potencjalnego klienta: {{ $json.body }} Przygotuj ofertę na wykonanie zlecenia o której pyta klient. Staraj się podać przedział cenowy. Podpisz się jako Marek Golan firma Dogtronic Sp. z o.o. Odpowiedź rozbij na 2 sekcje: - tytuł szansy sprzedaży (zmienna "title") - oferta (zmienna "offer") bez kolejnych sekcjiOczywiście powyższy prompt przygotuje nam ofertę na dużym poziomie ogólności. Nie należy się nim sugerować. To co nam napisze AI możemy traktować jako podpowiedź w jaki sposób odpisać osobie, która zadała nam pytanie. W kolejnym poradniku napiszemy jak dodać wiedzę o naszej formie / ofercie do modelu AI by odpowiedzi były bardziej wartościowe.

Scalanie danych
Musisz ponownie scalić dane odebrane z 2 źródeł.

1. Dodaj node Set nazwij go GPT form.

Zmienne do skopiowania:
- title: {{ $json.message.content.title }}
- name: {{ $('Parse From Webhook').item.json.name }}
- email: {{ $('Parse From Webhook').item.json.email }}
- body: {{ $('Parse From Webhook').item.json.body }}
- offer: {{ $('GPT processing').item.json.message.content.offer }}
- phone: {{ $('Parse From Webhook').item.json.phone }}
2. Dodaj node Set nazwij go GPT Mail.

Zmienne do skopiowania:
- name: {{ $('Merge Input').item.json.name }}
- title: {{ $('GPT processing').item.json.message.content.title }}
- offer: {{ $('GPT processing').item.json.message.content.offer }}
- email: {{ $('Merge Input').item.json.email }}
- body: {{ $('Parse From Mail').item.json.body.replace(/\r?\n/g, '\n') }}
Integracja z CRM PipeDrive
Czas automatycznie dodać wszystko do naszego systemu CRM.

Wyszukaj Osobę: Dodaj węzeł Pipedrive i wybierz operację Person -> Search. W polu Term wstaw e-mail klienta z poprzednich kroków. To zapobiegnie tworzeniu duplikatów.

Jaki url podaj:
https://api.pipedrive.com/v1/itemSearch?term={{$json.email}}&field_key=email&exact_match=true&item_types=personDodaj node Code

Wklej poniższy kod:
const inputItems = $input.all(); // Check if there are items and that the items array is not empty const hasItems = inputItems.length > 0 && inputItems[0]?.json?.data?.items.length > 0; // Retrieve the ID of the first item if available const firstItemId = hasItems ? inputItems[0].json.data.items[0].item.id : null; return { hasItems, firstItemId };Sprawdź, czy Istnieje: Dodaj węzeł IF. Ustaw warunek, który sprawdzi, czy poprzedni krok znalazł jakieś wyniki.

Dwie Ścieżki:

Ścieżka „Fałsz” (Brak osoby w CRM):
Połącz ją z nowym węzłem Pipedrive ustawionym na Person -> Create. Wypełnij pola name, email, phone, aby stworzyć nowy kontakt.

Zmienne do skopiowania:
- Name: {{ $('Merge Input').item.json.name }}
- Email: {{ $('Merge Input').item.json.email }}
- Phone: {{ $('Merge Input').item.json.phone }}
Ścieżka „Prawda”: Zostaw ją pustą – idziemy dalej.
Dodaj node Code w którym zadbamy o Person ID.

Wklej poniższy kod:
// Check whether the value from the previous node is available let personId; // Check whether the value of 'IF Person exists in Pipedrive' node is present if ($('IF Person exists in Pipedrive').item.json.firstItemId) { personId = $('IF Person exists in Pipedrive').item.json.firstItemId; } // If the above value is not available, check whether a value of '$('Pipedrive').item.json.id' is available else if ($('Pipedrive').item.json.id) { personId = $('Pipedrive').item.json.id; } // If a value was found for personId, it is output as a new variable if (personId) { return { person_id: personId }; } else { return { error: 'Keine Person-ID gefunden' }; }Utwórz Szansę Sprzedaży (Lead):
Połącz obie ścieżki z węzłem Pipedrive ustawionym na Lead -> Create.

Zmienne do skopiowania:
- title: {{ $('GPT processing').item.json.message.content.title }}
- Person ID: {{ $json.person_id }}
Powiąż leada z osobą, używając ID z kroku wyszukiwania lub tworzenia.
Dodaj Notatkę: Na końcu dodaj jeszcze jeden węzeł Pipedrive (Note -> Create). W treści notatki
Umieść oryginalne zapytanie klienta oraz ofertę od AI. To da Twojemu zespołowi pełen kontekst.

Zmienne:
- Zapytanie: {{ $('Merge Input').item.json.body }}
- Oferta (AI): {{ $('GPT processing').first().json.message.content.offer }}
Efekt:

Powiadomienia
Slack
W tym kroku wyślemy wiadomość na Slacka oraz na maila do klienta oraz naszego zespołu.

Skonfiguruj node Slack. Pamiętaj o autoryzacji.

Skopiuj poniższy kod do pola Blocks
{ "blocks": [ { "type": "header", "text": { "type": "plain_text", "text": "Nowa wiadomość z Dogtronic.io :email:", "emoji": true } }, { "type": "context", "elements": [ { "type": "mrkdwn", "text": " {{ $('Merge Input').item.json.name }} {{ $('Merge Input').item.json.email }}" } ] }, { "type": "section", "text": { "type": "mrkdwn", "text": "*Analiza (AI):* {{ $('GPT processing').item.json.message.content.title }} \r\n " } }, { "type": "divider" }, { "type": "section", "text": { "type": "mrkdwn", "text": "*Klient:* \r\n {{ $('Merge Input').item.json.body.replace(/\r?\n/g, '\\n') }}" } }, { "type": "divider" }, { "type": "section", "text": { "type": "mrkdwn", "text": "*Oferta (AI):* \r\n {{ $('GPT processing').item.json.message.content.offer.replace(/\n/g, '\\n'); }}" } }, { "type": "divider" }, { "type": "section", "text": { "type": "mrkdwn", "text": "Zaplanuj działanie w CRM" }, "accessory": { "type": "button", "text": { "type": "plain_text", "text": "PipeDrive", "emoji": true }, "value": "click_me_123", "url": "https://dogtronic.pipedrive.com/deal/{{ $json.deal_id }}", "action_id": "button-action" } } ] }Efekt:

Odpowiedź AI jest wyłącznie do naszego wglądu.
Zadbajmy o profesjonalny wizerunek i spokój klienta.
Dodaj węzeł do wysyłki e-maili, np. Mailgun.
W polu To Email wstaw adres e-mail klienta.
Napisz treść maila z podziękowaniem za kontakt i potwierdzeniem otrzymania danych. Możesz choćby wkleić wiadomość, którą wysłał, aby miał pewność, iż wszystko dotarło poprawnie.

Przykładowa treść wiadomości do klienta:
Szanowni Państwo,Dziękujemy za przesłanie wiadomości za pośrednictwem naszego formularza kontaktowego. Potwierdzamy otrzymanie Państwa zapytania i poinformujemy, iż skontaktujemy się z Państwem najszybciej, jak to możliwe, aby omówić szczegóły.
Dla przypomnienia, poniżej znajdują się dane, które otrzymaliśmy:
Imię i nazwisko: {{ $('Merge Input').item.json.name }}
Adres e-mail: {{ $('Merge Input').item.json.email }}
Treść wiadomości:
{{ $('Merge Input').item.json.body.replace(/\n/g, '
') }}
Jeśli mają Państwo dodatkowe pytania lub chcą uzupełnić swoje zapytanie, prosimy o odpowiedź na tę wiadomość.
Z poważaniem,
Zespół Dogtronic
Efekt

Aktywacja
Połącz wszystkie węzły zgodnie z opisaną logiką, upewnij się, iż wszystkie ścieżki są połączone, a na koniec kliknij przełącznik Active w prawym górnym rogu.
Gotowe! Właśnie zbudowałeś potężną machinę, która oszczędzi Ci dziesiątki godzin i sprawi, iż żaden potencjalny klient nie zostanie pominięty.
Co dalej? To dopiero początek! Możesz rozbudować ten proces o kolejne kroki:
- Automatyczne przypisywanie handlowców do leadów.
- Wysyłanie spersonalizowanych follow-upów po kilku dniach.
- Analizę sentymentu wiadomości od klienta.
Automatyzacja to nie przyszłość, to teraźniejszość. Eksperymentuj, ucz się i daj znać w komentarzach, jakie procesy Ty zautomatyzowałeś w swojej firmie
Chcesz przetestować działanie tego procesu? Napisz na sales@dogtronic.io lub wypełnij nasz formularz kontaktowy.