Przejdź do głównej treści

Po co używać webhooków?

Webhooki sprawiają, że wyniki trafiają do Ciebie, zamiast tego, żebyś wielokrotnie o nie pytał. Zamiast odpytywać endpoint GET aż do zakończenia wyszukiwania, Enrow wysyła każdy wynik na Twój serwer w momencie, gdy jest gotowy — oszczędzając żądania, zmniejszając opóźnienia i utrzymując prostotę kodu. Przestań marnować żądania — pozwól, aby wyniki same do Ciebie trafiały. Ponieważ każdy endpoint Enrow jest asynchroniczny, webhooki są zalecanym sposobem otrzymywania wyników w Email Finder, Email Verifier oraz Phone Finder. Webhooki całkowicie omijają również limity szybkości, ponieważ to Enrow wywołuje Ciebie, a nie odwrotnie.

Jak przebiega proces webhooka?

Proces webhooka zamienia pojedyncze żądanie wyszukiwania w automatyczne dostarczenie. Mówisz Enrow, dokąd wysłać wyniki, a Enrow robi resztę:
  1. Wysyłasz POST z żądaniem wyszukiwania z adresem URL webhook w settings
  2. Enrow natychmiast zwraca ID wyszukiwania
  3. Enrow przetwarza wyszukiwanie w tle
  4. Po zakończeniu Enrow wysyła POST z wynikami na Twój adres URL webhooka

Jak skonfigurować webhooka?

Webhooka możesz zarejestrować na dwa sposoby, w zależności od tego, czy chcesz go dla jednego wyszukiwania, czy dla każdego:
  1. Dla pojedynczego żądania: Dołącz adres URL webhook w obiekcie settings dowolnego wywołania API
  2. Globalnie: Skonfiguruj domyślny webhook na stronie integracji w panelu
{
  "fullname": "Dwight Schrute",
  "company_domain": "dundermifflin.com",
  "settings": {
    "webhook": "https://your-app.com/webhooks/enrow"
  }
}
Twój adres URL webhooka musi być prawidłowym endpointem HTTPS, który zwraca kod statusu 200.

Które zdarzenia wyzwalają wywołanie webhooka?

Sześć typów zdarzeń może wyzwolić wywołanie webhooka, po jednym na każdy endpoint i typ wyszukiwania:
ZdarzenieOpis
single_search_finishedPojedyncze wyszukiwanie adresu e-mail zostało zakończone
bulk_search_finishedMasowe wyszukiwanie adresów e-mail zostało zakończone
verification_finishedPojedyncza weryfikacja adresu e-mail została zakończona
bulk_verification_finishedMasowa weryfikacja adresów e-mail została zakończona
single_phone_search_finishedPojedyncze wyszukiwanie numeru telefonu zostało zakończone
bulk_phone_search_finishedMasowe wyszukiwanie numerów telefonu zostało zakończone

Jak wygląda ładunek webhooka?

Ładunek webhooka zależy od endpointu oraz od tego, czy wyszukiwanie było pojedyncze, czy masowe. Pojedyncze wyszukiwania dostarczają pełny wynik bezpośrednio, natomiast masowe wyszukiwania dostarczają powiadomienie o zakończeniu, po którym wykonujesz żądanie GET.

Email Finder — pojedynczy

W przypadku pojedynczych wyszukiwań otrzymujesz pełny wynik bezpośrednio w powiadomieniu webhook. Eliminuje to potrzebę wykonywania żądania GET.
{
  "event": "single_search_finished",
  "id": "910f3e13-b2bf-442d-ab0b-4cf44dfrij84fjrt",
  "credits": {
    "cost": 1
  },
  "result": {
    "email": "dwight.schrute@dundermifflin.com",
    "qualification": "valid",
    "custom": "your_custom_data",
    "info": {
      "company_domain": "dundermifflin.com",
      "fullname": "Dwight Schrute",
      "firstname": "Dwight",
      "lastname": "Schrute"
    }
  }
}

Email Finder — masowy

W przypadku masowych wyszukiwań otrzymujesz powiadomienie o zakończeniu partii. Następnie wywołaj endpoint GET /email/find/bulk z id, aby pobrać wyniki.
{
  "event": "bulk_search_finished",
  "id": "910f3e13-b2bf-442d-ab0b-4cf44dfrij84fjrt",
  "credits": {
    "cost": 2284
  }
}

Email Verifier — pojedynczy

Pełny wynik jest dołączony bezpośrednio — żądanie GET nie jest potrzebne.
{
  "event": "verification_finished",
  "id": "910f3e13-b2bf-442d-ab0b-4cf44dfrij84fjrt",
  "email": "pam.beesly@dundermifflin.com",
  "qualification": "valid",
  "custom": "your_custom_data"
}

Email Verifier — masowy

To wyłącznie powiadomienie. Wywołaj GET /email/verify/bulk z id, aby pobrać wyniki.
{
  "event": "bulk_verification_finished",
  "id": "910f3e13-b2bf-442d-ab0b-4cf44dfrij84fjrt",
  "credits": {
    "cost": 386.25
  }
}

Phone Finder — pojedynczy

Pełny wynik jest dołączony bezpośrednio — żądanie GET nie jest potrzebne.
{
  "event": "single_phone_search_finished",
  "id": "910f3e13-b2bf-442d-ab0b-4cf44dfrij84fjrt",
  "credits": {
    "cost": 50
  },
  "result": {
    "number": "+15705551234",
    "params": {
      "linkedin_url": "https://www.linkedin.com/in/michael-scott"
    },
    "qualification": "found"
  }
}

Phone Finder — masowy

To wyłącznie powiadomienie. Wywołaj GET /phone/bulk z id, aby pobrać wyniki.
{
  "event": "bulk_phone_search_finished",
  "id": "910f3e13-b2bf-442d-ab0b-4cf44dfrij84fjrt"
}

Czym różnią się webhooki pojedyncze i masowe?

Webhooki pojedynczych wyszukiwań zawierają kompletny wynik, więc nie jest potrzebne dodatkowe wywołanie. Webhooki masowych wyszukiwań jedynie sygnalizują, że partia jest gotowa — następnie pobierasz wyniki za pomocą odpowiadającego endpointu GET.
TypPojedyncze wyszukiwaniaMasowe wyszukiwania
ŁadunekDołączony pełny wynikTylko powiadomienie (ID + kredyty)
Potrzebny GET?NieTak — użyj endpointu GET z id
W przypadku pojedynczych wyszukiwań webhook zawiera wszystko, czego potrzebujesz. W przypadku masowych wyszukiwań webhook informuje, że partia jest gotowa — wtedy pobierasz wyniki.

Jakie są najlepsze praktyki dla endpointów webhooków?

Niezawodny endpoint webhooka odpowiada szybko, akceptuje wyłącznie HTTPS i toleruje sporadyczne duplikaty. Stosuj te praktyki, aby dostarczanie było niezawodne:
Przetwarzaj ładunki webhooków asynchronicznie. Zwróć 200 natychmiast, a następnie obsłuż dane w zadaniu działającym w tle.
Zawsze używaj endpointów HTTPS. Webhooki HTTP będą odrzucane.
W rzadkich przypadkach webhooki mogą zostać dostarczone więcej niż raz. Użyj pola id, aby usuwać duplikaty.
Przekazuj dane custom w swoich żądaniach, aby zidentyfikować, do którego rekordu należy wynik webhooka:
{
  "fullname": "Dwight Schrute",
  "company_domain": "dundermifflin.com",
  "custom": { "crm_id": "lead_001" }
}
Pole custom jest zwracane w ładunku webhooka bez zmian.

Czy używać webhooków, czy odpytywania?

Używaj webhooków w produkcji, a odpytywania tylko do szybkiego prototypowania lub debugowania. Webhooki dostarczają wyniki w czasie rzeczywistym, nie zużywając Twojego limitu żądań, natomiast odpytywanie wykonuje powtarzające się wywołania GET, które wliczają się do Twoich limitów szybkości.
WebhookiOdpytywanie (GET)
OpóźnienieCzas rzeczywistyZależy od interwału odpytywania
Wywołania API0 (Enrow wywołuje Ciebie)Wiele wywołań na wyszukiwanie
Wpływ na limit szybkościBrakZużywa limit
ZłożonośćWymaga konfiguracji endpointuProstsze we wdrożeniu
Zalecamy webhooki do użytku produkcyjnego. Odpytywania używaj tylko do szybkiego prototypowania lub debugowania.

FAQ

Nie. Webhooki nie zużywają dodatkowych kredytów — płacisz tylko za samo wyszukiwanie. Koszt w kredytach jest podawany w polu credits.cost ładunku. Zobacz Kredyty i rozliczenia, aby poznać koszty dla poszczególnych endpointów.
Twój adres URL webhooka musi być prawidłowym endpointem HTTPS, który zwraca kod statusu 200. Jeśli Twój serwer jest nieosiągalny lub odpowiada innym statusem, dostarczenie jest traktowane jako nieudane. Jako rozwiązanie awaryjne zawsze możesz pobrać wyniki, odpytując odpowiedni endpoint GET z id wyszukiwania.
Użyj id z odpowiedzi wyszukiwania albo przekaż obiekt custom w swoim żądaniu — jest on zwracany w ładunku webhooka bez zmian, dzięki czemu możesz przyporządkować wyniki do własnych rekordów, takich jak ID leada w CRM.
Najczęstsze przyczyny to adres URL inny niż HTTPS, endpoint, który nie zwraca 200, lub serwer, który przekracza limit czasu. Upewnij się, że Twój endpoint jest publicznie osiągalny przez HTTPS. Aby uzyskać szersze wskazówki dotyczące rozwiązywania problemów, zobacz Obsługa błędów oraz Kody statusu.

Następne kroki

Znajdź adres e-mail

Przekaż adres URL webhooka w settings, aby wynik został dostarczony automatycznie.

Pobierz wyniki masowe

Pobierz wyniki partii po wyzwoleniu webhooka bulk_search_finished.

Uwierzytelnianie

Jak przekazać swój klucz API w nagłówku x-api-key.

Limity szybkości

Zobacz, dlaczego webhooki unikają limitu żądań zużywanego przez odpytywanie.