Wróć do CRM

Przewodnik integracji

Zapier, Make i n8n: CRM w Twoich scenariuszach bez programisty

Dwa kierunki krok po kroku: zdarzenie w CRM uruchamia scenariusz Zapier, Make albo n8n, a scenariusz dodaje szansę do CRM.

Webhook wychodzący to adres Catch Hook i zaznaczone zdarzenia, a webhook przychodzący to token i jeden POST z JSON-em.

Dwa kierunki

KierunekCo się dziejeGdzie ustawić
CRM → Zapier, Make, n8npo zdarzeniu (np. nowy lead, zmiana etapu) CRM wysyła POST z JSON-em na adres scenariuszaUstawienia, blok Webhooki, Dodaj webhook
Zapier, Make, n8n → CRMscenariusz wysyła POST z danymi kontaktu, a CRM tworzy szansę albo rozpoznaje duplikatUstawienia, blok Webhooki przychodzące

Oba kierunki ustawia właściciel konta w panelu, bez zmian w kodzie i bez udziału FluxLab.

CRM uruchamia scenariusz

1. Adres w Zapierze, Make albo n8n

2. Webhook w CRM

  1. Ustawienia, blok Webhooki, przycisk Dodaj webhook.
  2. Nazwa (np. „Zapier, nowe leady”), Adres (https): adres skopiowany ze scenariusza.
  3. Zdarzenia: zaznacz te, które mają uruchamiać scenariusz (lista niżej).
  4. Opcjonalnie: Tylko z tych źródeł i Tylko na tych etapach (po przecinku, puste = wszystkie) oraz lekki ładunek (tylko id i typ, bez danych osobowych).
  5. Zapisz. CRM pokaże sekret podpisu jeden raz; zachowaj go, jeśli chcesz sprawdzać podpis.

3. Próbka do mapowania pól

Przy webhooku kliknij Wyślij zdarzenie testowe. Scenariusz dostanie przykładową szansę z tymi samymi polami co prawdziwa, więc w Zapierze (Test trigger) albo w Make (Run once, potem Redetermine data structure) wszystkie pola są od razu do zmapowania. Wynik widać w dzienniku pod webhookiem: kod odpowiedzi i czas.

Co przychodzi

Żądanie POST z Content-Type: application/json. Przykład zdarzenia nowy_lead:

{
  "zdarzenie": "nowy_lead",
  "id_dostawy": 1,
  "kiedy": "2026-11-11T17:15:02",
  "sekwencja": 1,
  "lead": {
    "id": 18,
    "nazwa": "Jan Testowy",
    "firma": "Przykład sp. z o.o.",
    "email": "jan.testowy@example.com",
    "telefon": "+48500600700",
    "status": "w_trakcie",
    "etap": "nowe",
    "kwota": null,
    "zrodlo": "make",
    "tytul": null
  }
}

Zdarzenia mogą mieć dodatkowe pola obok lead, np. zmiana_etapu ma etap_przed, a opiekun_zmieniony ma opiekun_przed i opiekun. sekwencja rośnie osobno dla każdej szansy, więc scenariusz może ułożyć zdarzenia w kolejności.

Nagłówki: X-FluxCRM-Event (nazwa zdarzenia), X-FluxCRM-Delivery (id dostawy), X-FluxCRM-Timestamp (czas uniksowy w sekundach), X-FluxCRM-Sequence (ta sama liczba co sekwencja w treści) i X-FluxCRM-Signature: sha256= i HMAC-SHA256 z tekstu <timestamp>.<treść>, kluczem jest sekret webhooka. Zapier i Make same podpisu nie sprawdzają; adres Catch Hook jest tajny i to on chroni scenariusz. Kto chce sprawdzać podpis, robi to w kroku kodu (Code by Zapier, n8n Code) albo na własnym serwerze; przykłady w Pythonie i Node są w dokumentacji API.

Zdarzenia

ZdarzenieKiedy
nowy_leadpowstała nowa szansa (panel, API, import, kanał, formularz)
zmiana_etapuszansa zmieniła etap; etap_przed to poprzedni
wygranaszansa dostała status wygrany
przegranaszansa dostała status przegrany
oferta_wyslanado klienta wyszła oferta
oferta_zaakceptowanaklient podpisał ofertę
wiadomosc_klientaklient napisał (mail, kanał, portal)
wiadomosc_wyslanado klienta wyszła wiadomość
zadanie_utworzonedodano zadanie przy szansie
zadanie_wykonanezadanie oznaczono jako zrobione
notatka_dodanadodano notatkę przy szansie
opiekun_zmienionyzmienił się opiekun szansy
lead_scalonyszansa została scalona z inną
pole_zmienionezmieniło się pole szansy (każda zapisana zmiana: pole, stara i nowa wartość, kto)
dokument_zmienionydokument szansy dostał nowy stan albo został dodany
umowa_utworzonapowstała nowa umowa

Zdarzenia łapie sama baza, więc przychodzą niezależnie od tego, czy zmianę zrobił człowiek w panelu, import, API czy automat.

Gdy scenariusz nie odpowiada

Adresy w sieci prywatnej, localhost i adresy metadanych chmury są odrzucane, więc webhook musi wskazywać publiczny adres https.

Scenariusz dodaje szansę do CRM

1. Token w CRM

Ustawienia, blok Webhooki, część Webhooki przychodzące: wpisz Nazwa (np. „Make, formularz partnera”) i Źródło (np. zapier, make; pod tą nazwą szanse będą widoczne na liście), potem Utwórz token. CRM pokaże pełny adres jeden raz:

https://crm.twojafirma.pl/api/v1/wejscie/whin_…

Adres z tokenem działa jak hasło do wpisywania szans: wklej go tylko do scenariusza. Token można w każdej chwili usunąć; licznik przyjętych i odrzuconych zgłoszeń widać przy tokenie.

2. Krok w scenariuszu

PoleOpisLimit znaków
nazwaimię i nazwisko kontaktu200
emailadres e-mail200
telefonnumer telefonu40
firmanazwa firmy200
tytultemat zgłoszenia200
wiadomosctreść zgłoszenia (przyjmujemy też nazwę opis)4000
ididentyfikator w systemie nadawcy, chroni przed duplikatem100

Wymagane jest przynajmniej jedno z: nazwa, email, telefon, wiadomosc.

{
  "id": "make-1234",
  "nazwa": "Jan Testowy",
  "email": "jan.testowy@example.com",
  "telefon": "500600700",
  "firma": "Przykład sp. z o.o.",
  "wiadomosc": "Prośba o kontakt"
}

Odpowiedzi

KodTreśćZnaczenie
200{"ok": true, "lead_id": 18, "nowy_lead": true, "duplikat": false}szansa utworzona; lead_id można zapisać w scenariuszu
200{"ok": true, "lead_id": 18, "nowy_lead": false, "duplikat": true}to samo id (albo ta sama treść) przyszło drugi raz, nic nie dodano
401{"ok": false, "powod": "nieznany albo wylaczony token"}zły albo usunięty token
422{"ok": false, "powod": "…"}brak wymaganych pól albo pole za długie

Szansa z webhooka przechodzi tę samą drogę co zgłoszenie z formularza na stronie, razem z filtrem, który oznacza spam i oferty kierowane do Twojej firmy. Jej utworzenie wywołuje też zdarzenie nowy_lead dla webhooków wychodzących.

Powiadomienia na Slacku i w Teams

Do powiadomień zespołu na Slacku albo w Teams nie potrzeba Zapiera, Make ani n8n. Wystarczy adres Incoming Webhook.

  1. W Slacku dodaj do kanału aplikację Incoming Webhooks. W Teams na kanale wybierz Przepływy pracy albo Łączniki, potem Incoming Webhook. Skopiuj adres zaczynający się od https://.
  2. W CRM otwórz Ustawienia, blok Webhooki, przycisk Dodaj kanał Slack lub Teams (widzi go właściciel konta). Wybierz komunikator, wklej adres i zaznacz zdarzenia.
  3. Kliknij Wyślij zdarzenie testowe przy nowym kanale. Na kanale pojawi się wiadomość „Test FluxCRM: powiadomienia na ten kanał działają”.
ZdarzenieWiadomość na kanale
nowy_leadNowy lead: kontakt (firma), tytuł szansy
zmiana_etapuZmiana etapu: kontakt (firma), etap przed → etap po
wygranaWygrana: kontakt (firma), kwota

Każda wiadomość ma link Otwórz kartę do szansy w panelu. Kanał można dodać też przez API: POST /api/automatyzacje/kanaly z polami typ (slack albo teams), url i zdarzenia. GET /api/automatyzacje/kanaly podaje przy każdym kanale stan dostawy: wstrzymany (data wstrzymania po serii błędów albo null), wstrzymanie_powod, bledy_z_rzedu i ostatnia_dostawa (zdarzenie, stan, kod HTTP, błąd, godzina ostatniej próby).

Kanał dodany w Ustawieniach dostaje tylko trzy zdarzenia szansy z tabeli. Skrzynka zespołu (wzmianki w czacie szansy i inne powiadomienia dla handlowców) to osobne ustawienie instancji: adresy slack_webhook i teams_webhook w sekcji [integracje] pliku instancja.toml oraz lista zespol_kanaly. Ustawia je administrator instancji. Ten sam adres Incoming Webhook może służyć do obu, wtedy na kanale pojawią się oba rodzaje wiadomości.

Gdy trzeba więcej

Do odczytu i zmian innych danych (szanse, zadania, notatki, etapy) służy API REST z kluczem integracji: Ustawienia, blok Klucze API integracji (nie „Klucze dostępu”, to logowanie bez hasła). Klucz ma wybrane moduły, tryb odczyt albo zapis i termin ważności. Wysyła się go w nagłówku Authorization: Bearer <klucz>; w n8n to węzeł HTTP Request z Authentication: Generic Credential Type, Header Auth (nazwa Authorization, wartość Bearer <klucz>).

CoMetoda i adresUwagi
lista szansGET https://crm.twojafirma.pl/api/v1/leady?limit=50odpowiedź ma next_cursor; następna strona: cursor=<next_cursor>, koniec listy: null; tylko zmienione: zmienione_od=<data i godzina>
jedna szansaGET https://crm.twojafirma.pl/api/v1/leady/<id>z notatkami, zadaniami i historią
nowa szansaPOST https://crm.twojafirma.pl/api/v1/leadyJSON z polami firma, nazwa_kontaktu, email, tytul (co najmniej jedno z pierwszych trzech)

Pola w REST mają inne nazwy niż w webhooku przychodzącym (nazwa_kontaktu zamiast nazwa). Webhook przychodzący wystarcza do dodawania szans i sam rozpoznaje duplikaty; REST jest do reszty. Opis wszystkich ścieżek i przykłady: dokumentacja API. Formularz na własnej stronie podłącza się według przewodnika formularza.