POST an die URL.
Sie können Webhooks in der App unter Settings → Webhooks verwalten (siehe Ausgehende Webhooks hinzufügen und verwalten) oder mit der Webhooks-API. Diese Seite ist die Referenz dafür, was Flowella sendet.
Ereignistypen
Aktivieren Sie diese Ereignisse, wenn Sie einen Webhook hinzufügen, oder übergeben Sie sie inevents, wenn Sie einen Webhook mit der API erstellen.
Kontaktereignisse werden nur bei diesen API-Aufrufen für einzelne Kontakte ausgelöst. Sie werden nicht ausgelöst bei
POST /v1/contacts/bulk-upsert, bei Kontakten, die durch eingehende Nachrichten erstellt werden, oder bei Änderungen, die in der App vorgenommen oder aus HubSpot synchronisiert werden.
Flowella sendet außerdem webhook.test, wenn Sie in der App Send test event wählen oder POST /v1/webhooks/{id}/test aufrufen. Sie können es nicht abonnieren. Sein data ist { "test": true, "sentAt": "<ISO 8601 time>" }.
Eine ausgehende Nachricht kann zwei
message.sent-Ereignisse erzeugen: eines, wenn Flowella sie an Meta übergibt, und eines, wenn Meta sie als gesendet meldet. Die beiden haben unterschiedliche id-Werte auf oberster Ebene. Verwenden Sie data.messageId, um sie derselben Nachricht zuzuordnen.Anfrageformat
Flowella sendet jedes Ereignis als HTTP-POST mit diesen Headern:
Flowella sendet keine weiteren benutzerdefinierten Header. Ereignistyp und ID stehen im Body.
Body
Jeder Webhook hat eine Payload-Version, die von der Webhooks-API alspayloadVersion zurückgegeben wird. Version 1 ist der Standard für jeden Webhook, und weder in der App noch in der API gibt es eine Einstellung, um sie zu ändern. Die beiden Versionen verwenden diese Hüllen:
Flowella sendet kein Ereignis, dessen
data größer als 256 KB ist.
Signaturen prüfen
Prüfen Sie die Signatur jeder Anfrage, bevor Sie ihr vertrauen. Flowella berechnetX-Flowella-Signature so:
- Algorithmus: HMAC mit SHA-256.
- Schlüssel: das Signatur-Secret als UTF-8-Text, genau wie gespeichert. Ein von der API erzeugtes Secret enthält sein Präfix
whsec_. - Nachricht: der Roh-Body der Anfrage, Byte für Byte, so wie Flowella ihn gesendet hat. Sonst wird nichts signiert: Die Signatur enthält weder Zeitstempel noch URL.
- Ausgabe: hexadezimale Kleinbuchstaben, 64 Zeichen, ohne Präfix
sha256=.
Antworten, Wiederholungen und Timeouts
Flowella stellt mehrere Ereignisse gleichzeitig zu, daher können sie in anderer Reihenfolge ankommen. Verwenden Sie
created_at oder occurred_at, wenn die Reihenfolge wichtig ist. Antworten Sie mit einem 2xx-Status, sobald die Signatur geprüft ist, und verarbeiten Sie das Ereignis dann im Hintergrund. Wie Wiederholungen in der App aussehen, erfahren Sie unter Wiederholungen und Back-off.
Ereignisse deduplizieren
Ihr Endpunkt kann dasselbe Ereignis mehrmals erhalten: durch eine Wiederholung, nachdem Ihr Endpunkt in ein Timeout gelaufen ist, die Anfrage aber trotzdem verarbeitet hat, oder durch erneutes Senden über die API. Deduplizieren Sie anhand derid auf oberster Ebene:
- Speichern Sie die
idjedes verarbeiteten Ereignisses. - Wenn eine eingehende
idbereits gespeichert ist, antworten Sie mit200und tun Sie sonst nichts. - Bewahren Sie gespeicherte IDs mindestens so lange auf, wie Sie Zustellungen eventuell erneut senden.
data.messageId. Verschiedene Ereignisse zur selben Nachricht, etwa message.sent und message.delivered, teilen sie.
Ereignis-Feed
Der Ereignis-Feed ist eine Pull-Alternative zu Webhooks.GET /v1/events gibt Ereignisse der letzten 7 Tage zurück, einschließlich Ereignissen, die kein Webhook abonniert. Er benötigt den Scope events:read. Filtern Sie mit type (ein Typ oder eine kommagetrennte Liste), occurredAfter und occurredBefore und blättern Sie mit limit und cursor.
Jedes Element hat id, type, occurredAt, version, correlationId und data. Die id entspricht der id im Webhook-Body, sodass Sie mit dem Feed Lücken schließen können, nachdem Ihr Endpunkt ausgefallen war.
Webhooks mit der API verwalten
Alle Webhook-Endpunkte benötigen einen API-Schlüssel oder ein OAuth-Zugriffstoken mit dem Scopewebhooks:manage. In der App erstellte Schlüssel haben ihn. Zur Authentifizierung siehe die API-Einführung.
Webhook-Objekte enthalten
id, name, url, events, isActive, consecutiveFailures, signingSecretPrefix (die ersten 8 Zeichen des aktuellen Secrets), payloadVersion, lastTriggeredAt, disabledAt, createdAt und updatedAt.
Für Webhooks, die über die API verwaltet werden, gelten einige Regeln:
- Sie können das Signatur-Secret nicht über die API wählen.
POST /v1/webhookserzeugt eines, das mitwhsec_beginnt, und gibt es einmalig alssigningSecretzurück. - Erneute Sendungen zählen nicht zum Fehlerzähler und setzen ihn nicht zurück. Flowella stellt eine erneute Sendung nur zu, solange der Webhook aktiv ist und diesen Ereignistyp noch abonniert.
- Die URL muss denselben URL-Regeln wie in der App entsprechen.
Signatur-Secret rotieren
Rotieren Sie ein Secret, wenn Sie vermuten, dass es offengelegt wurde, oder in regelmäßigen Abständen. Die Rotation funktioniert für jeden Webhook mit einem Secret, auch für Webhooks, deren Secret Sie in der App eingegeben haben.1
Neues Secret anfordern
Rufen Sie den Rotations-Endpunkt auf und speichern Sie das
signingSecret aus der Antwort. Flowella gibt es nur einmal zurück.2
Beide Secrets 24 Stunden lang akzeptieren
Neue Zustellungen werden in
X-Flowella-Signature mit dem neuen Secret und in X-Flowella-Signature-Previous mit dem alten Secret signiert. Ein Handler, der noch das alte Secret verwendet, funktioniert weiter, wenn er beide Header prüft, wie im Beispiel unter Signaturen prüfen.3
Zum neuen Secret wechseln
Stellen Sie Ihren Handler innerhalb von 24 Stunden auf das neue Secret um. Danach sendet Flowella
X-Flowella-Signature-Previous nicht mehr.Lokal testen
Um Webhooks auf Ihrem eigenen Computer zu empfangen, machen Sie Ihren lokalen Server über einen öffentlichen Tunnel wie ngrok oder Cloudflare Tunnel erreichbar. Verwenden Sie die öffentliche URL des Tunnels als Endpunkt. Senden Sie dann mit Send test event Anfragen, wann immer Sie sie benötigen. Flowella lehnt lokale und private Adressen ab, daher funktioniert einelocalhost-URL nicht.
Verwandte Themen
Webhooks in der App verwalten
Endpunkte hinzufügen, Testereignisse senden und das Zustellprotokoll lesen.
API-Einführung
Authentifizierung, Scopes, Ratenlimits und Fehler.
API-Schlüssel
Erstellen Sie den Schlüssel, den Sie für die Webhooks-API benötigen.
Developer Hub
Letzte API-Anfragen, Quickstarts und die API-Sandbox.

