> ## Documentation Index
> Fetch the complete documentation index at: https://docs.brosbots.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Oddzwanianie do leadów z formularza

> Agent dzwoni do osoby, która wypełniła formularz na stronie, w kilka sekund po zgłoszeniu.

## Co to robi

Do agenta zbudowanego z szablonu **Oddzwanianie do leadów (Speed-to-Lead)**
dołączony jest adres webhooka. Wklejasz go do swojego formularza na stronie.
Od tego momentu każde zgłoszenie kończy się telefonem do tej osoby - zwykle
zanim zdąży zamknąć kartę przeglądarki.

Adres nosi swój token w URL-u, więc działa też w narzędziach, które nie
potrafią wysłać nagłówka HTTP (Elementor, wtyczki WordPressa, Webflow).

## Gdzie znaleźć adres

Najprościej: **Integracje** → zakładka **Własne** → **Leady z formularza**.
Kreator pyta o agenta, godziny dzwonienia i pole z telefonem, pozwala
sprawdzić przykładowe zgłoszenie bez dzwonienia i na końcu pokazuje adres.
Działa dla każdego agenta: jeśli nie ma węzła **Webhook z formularza**
w grafie, kreator go doda ([Własne integracje](/pl/integrations/custom#leady-z-formularzy)).

Adres jest też w edytorze agenta → zakładka **Integracje** → sekcja
**Źródła leadów**. Wygląda tak:

```
https://twoja-domena/api/v1/public/lead/<id>?t=<token>
```

<Warning>
  Adres jest jak klucz - kto go ma, ten może wywołać połączenie. Nie publikuj go
  w kodzie strony widocznym dla odwiedzających; wklej go po stronie serwera lub
  w konfiguracji narzędzia formularzowego.
</Warning>

## Jak podpiąć popularne narzędzia

| Narzędzie | Gdzie wkleić |
| - | - |
| Elementor Pro | Formularz → Actions After Submit → **Webhook** → Webhook URL |
| WPForms / CF7 (z wtyczką webhook) | Ustawienia formularza → Webhook URL, metoda POST |
| Webflow | Site settings → Integrations → Form webhook |
| Tally / Typeform | Integrations → Webhooks |
| Zapier / Make | Krok **Webhooks → POST**, body jako JSON ([gotowe szablony](/pl/integrations/leads/make-zapier)) |
| Własny backend | `POST` z dowolnym JSON-em zawierającym numer telefonu |

## Jakie dane przyjmuje

Dowolne. Payload jest spłaszczany, a numer telefonu wyszukiwany po nazwie pola
(`telefon`, `phone`, `numer_telefonu`, `tel`, `mobile`…), a jeśli nazwa jest
nietypowa - po samym kształcie wartości. Jeśli Twój formularz nazywa to pole
inaczej, wpisz jego nazwę w **Nazwa pola z telefonem**.

Numer jest normalizowany do formatu międzynarodowego: `600 123 456`,
`0600123456`, `0048600123456` i `+48 600-123-456` trafiają do tego samego
połączenia. Pole **Kierunkowy kraju** decyduje, co dopisać do numeru krajowego.

Pozostałe pola formularza trafiają do rozmowy jako zmienne (`{{imie}}`,
`{{budzet}}`…) i do arkusza Google, jeśli masz go włączonego.

## Godziny dzwonienia

Zgłoszenie, które przyjdzie poza wyznaczonymi godzinami, **nie przepada** -
połączenie jest planowane na najbliższe otwarcie okna. Domyślnie: pn-pt,
9:00-20:00, Europe/Warsaw.

Gdy w danym momencie wszystkie kanały wychodzące są zajęte, lead czeka i jest
ponawiany co minutę przez około dziesięć minut.

Gdy na koncie nie ma środków, lead też **nie przepada**: czeka i jest
ponawiany co pięć minut przez godzinę. Doładowanie w tym czasie wystarczy,
żeby agent zadzwonił. Dopiero po godzinie lead dostaje status **Nie
zadzwoniono** (zobacz [Lista Leady](#lista-leady)).

## Podwójne zgłoszenia

Ten sam numer zgłoszony ponownie w ciągu 10 minut (domyślnie) jest pomijany -
podwójne kliknięcie w "Wyślij" nie oznacza dwóch telefonów.

## Lista Nie dzwonić

Do numeru z listy **Nie dzwonić** Twojej organizacji agent nie zadzwoni,
także z formularza. Zgłoszenie dostaje `200 {"status":"do_not_call"}`,
a połączenie nie jest ani wykonywane, ani planowane. Jak numery trafiają na
listę (ręcznie, z CSV, od agenta w rozmowie i po SMS-ie `STOP`), opisuje
[Kontakty](/pl/features/contacts#lista-nie-dzwonić).

## Limity

Każde zgłoszenie to płatna rozmowa, a adres bywa widoczny w kodzie strony.
Dlatego adres każdego agenta przyjmuje najwyżej:

| Limit | Wartość |
| - | - |
| Zgłoszenia z jednego adresu IP | 10 na 10 minut |
| Zgłoszenia do jednego agenta | 20 na 10 minut i 150 na dobę |
| Połączenia czekające na agenta (poza godzinami, zajęte kanały) | 50 |

Powyżej limitu adres odpowiada kodem `429` z nagłówkiem `Retry-After`
i polem `detail` w rodzaju
`{"code": "lead_rate_limited", "message": "...", "retry_after": 600}`
(`lead_queue_full`, gdy czeka za dużo połączeń). Właściciel konta dostaje
o tym e-mail, najwyżej raz dziennie na agenta. Formularze leadów Google Ads
mają te same limity; Facebook Lead Ads, podpisywane przez Metę, tylko limit
czekających połączeń.

Jeśli Twój prawdziwy ruch jest większy, napisz do nas, a podniesiemy limit.
Jeśli nie spodziewasz się tylu zgłoszeń, ktoś mógł skopiować adres: wyłącz
webhook w ustawieniach agenta i daj nam znać.

## Lista Leady

**Obserwuj** → **Leady** pokazuje każde zgłoszenie, do którego agent miał
oddzwonić (formularz, Google Ads, Facebook Lead Ads, nieodebrane połączenie,
nowy kontakt w CRM), i co się z nim stało:

| Status | Znaczenie |
| - | - |
| Czeka | poza godzinami, zajęte kanały albo brak środków; widać, kiedy kolejna próba |
| Wybrano numer | połączenie wyszło; link otwiera rozmowę |
| Odebrany | rozmowa się odbyła |
| Nieodebrany | nikt nie odebrał albo odezwała się poczta głosowa |
| Nie zadzwoniono | po wszystkich próbach: brak środków, zajęte kanały, źródło wyłączone, błąd wybierania |
| Nie dzwonić | numer jest na liście Nie dzwonić |
| Odrzucony (limit) | przekroczony limit zgłoszeń albo za dużo połączeń w kolejce |

Podwójne zgłoszenia nie są zapisywane osobno. Zgłoszenia odrzucone przez
limit zapisujemy do 50 na agenta dziennie, żeby skopiowany adres nie zapełnił
listy. Leady znikają razem z transkrypcjami, jeśli w **Prywatności** ustawisz
czas ich przechowywania.

Gdy lead dostaje status **Nie zadzwoniono** albo **Odrzucony (limit)**,
w dzwonku pojawia się powiadomienie (najwyżej jedno na godzinę dla agenta),
a webhooki z włączonym zdarzeniem `lead.dropped` dostają jego szczegóły
([Webhooki](/pl/integrations/webhooks)).

## Odpowiedzi

| Kod | Znaczenie |
| - | - |
| `200 {"status":"calling"}` | dzwonimy teraz |
| `200 {"status":"scheduled"}` | poza godzinami, brak wolnego kanału albo brak środków - zaplanowane |
| `200 {"status":"duplicate"}` | ten numer był już przyjęty przed chwilą |
| `200 {"status":"do_not_call"}` | numer jest na liście Nie dzwonić - bez telefonu |
| `400` | w zgłoszeniu nie było numeru telefonu, który da się wybrać |
| `401` | zły lub brakujący token w adresie |
| `403` | webhook wyłączony w ustawieniach agenta |
| `429` | przekroczony limit (zobacz [Limity](#limity)); odczekaj tyle, ile podaje `Retry-After` |

## Test

Bez dzwonienia: krok **Test** w kreatorze leadów pokazuje, jaki numer i jakie
pola odczytamy z wklejonego zgłoszenia i kiedy agent by zadzwonił.

Prawdziwe zgłoszenie (agent zadzwoni pod podany numer):

```bash theme={null}
curl -X POST "https://twoja-domena/api/v1/public/lead/<id>?t=<token>" \
  -H "Content-Type: application/json" \
  -d '{"imie": "Jan Kowalski", "telefon": "600123456", "email": "jan@firma.pl"}'
```

## Po rozmowie

Każdą rozmowę można zapisywać do Arkusza Google, a kampania potrafi cyklicznie
obdzwaniać wiersze arkusza. Złożenie tego w całość - formularz, który zapełnia
arkusz, i kampania, która na nim pracuje - opisuje
[Pętla leadowa](/pl/integrations/leads/callback-loop).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.