Przejdź do treści

Nowe w październiku

Wszystkie artykuły

Odpowiedzi z LinkedIna do Zapiera, Make lub n8n przez podpisane webhooki

Zespół NudgeLink · Opublikowano · Ostatnia aktualizacja · 2 min czytania

Krótka odpowiedź: wejdź w Ustawienia → Integracje → Webhooki, wklej adres „catch hook” z Zapiera, Make lub n8n, wybierz zdarzenia i kliknij „Wyślij zdarzenie testowe”. Od tej chwili NudgeLink wysyła podpisaną wiadomość JSON, gdy przyjdzie odpowiedź, dodany zostanie lead albo skończy się sekwencja. Webhooki tylko raportują: nigdy nie wysyłają niczego do leada.

Jakie zdarzenia można wysyłać

ZdarzenieKiedy
reply.receivedLead odpowiada na LinkedInie lub e-mailem
reply.positiveOdpowiedź została sklasyfikowana jako pozytywna (może dojść chwilę po reply.received)
lead.addedLead trafia na Twoje konto
sequence.finishedSekwencja leada dobiegła końca

Typowe zastosowania: pozytywna odpowiedź jako zadanie w CRM, wpis na kanale Slacka, zakończona sekwencja w arkuszu „do podtrzymania kontaktu”.

Konfiguracja w pięciu krokach

  1. W Zapierze, Make lub n8n utwórz scenariusz zaczynający się od webhooka i skopiuj jego adres. Musi zaczynać się od https.
  2. W NudgeLink otwórz Ustawienia → Integracje → Webhooki i wklej adres.
  3. Zaznacz zdarzenia i wybierz Dodaj webhook.
  4. Skopiuj sekret podpisu. Pokazujemy go tylko raz.
  5. Kliknij Wyślij zdarzenie testowe. Test dotrze do Twojego narzędzia w ciągu minuty.

Webhooki są w każdym płatnym planie, do trzech na konto. Wysyłamy tylko zdarzenia, które nastąpiły po dodaniu webhooka.

Jak sprawdzić, że żądanie pochodzi z NudgeLink

Każde żądanie ma nagłówek NudgeLink-Signature: t=<czas unix>,v1=<hex>. Wartość v1 to HMAC-SHA256 z "<t>.<surowa treść>" i Twojego sekretu. Porównuj w stałym czasie i odrzucaj żądania, w których t jest starsze niż pięć minut.

import hashlib, hmac, time

def verify(secret, raw_body, header):
    parts = dict(p.split("=", 1) for p in header.split(","))
    if abs(time.time() - int(parts["t"])) > 300:
        return False
    expected = hmac.new(secret.encode(), parts["t"].encode() + b"." + raw_body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, parts["v1"])

Catch hook w Zapierze sam nie sprawdza podpisów. Jeśli to ważne, dodaj przed nim mały krok weryfikujący (krok Code lub własny endpoint).

Co, gdy Twoje narzędzie nie działa

Odpowiedz dowolnym kodem 2xx w ciągu 10 sekund. Inna odpowiedź oznacza ponowienie po 1 minucie, 5 minutach, 30 minutach, 2 godzinach i 12 godzinach, a potem rezygnację. Po 20 porażkach z rzędu webhook się wyłącza, a Ustawienia podają powód. Po ponowieniu to samo żądanie może przyjść dwa razy, dlatego każda próba dla jednego zdarzenia ma to samo id: zapisuj obsłużone identyfikatory.

Pełny opis: Webhooki w dokumentacji.