Zum Hauptinhalt springen

Webhooks in Famly

Monica Göbel avatar
Verfasst von Monica Göbel
Vor über 2 Monaten aktualisiert

🔒 Die Webhook-Funktion befindet sich aktuell in der Beta-Phase. Das bedeutet, dass sich einzelne Ansichten oder Abläufe bis zur finalen Version noch leicht verändern können.

Was sind Webhooks?

Webhooks sind eine Möglichkeit, Famly mit anderen Systemen zu verbinden. Sie sorgen dafür, dass bestimmte Aktionen in Famly (z. B. eine neue Rechnung oder ein neu angemeldetes Kind) automatisch an ein externes System weitergemeldet werden. So können z. B. Buchhaltungssysteme oder andere Plattformen automatisch reagieren – ohne manuelle Eingaben.

💡 Beispiel: Sobald in Famly eine neue Rechnung erstellt wird, kann diese automatisch an euer Abrechnungssystem gesendet werden – ganz ohne zusätzlichen Aufwand.


So funktionieren Webhooks

Das Webhook-System arbeitet asynchron, d. h. Ereignisse werden im Hintergrund verarbeitet.
Wenn ein Ereignis eintritt (z. B. ein neues Kind wird hinzugefügt), prüft Famly, ob für dieses Ereignis Webhooks registriert sind – entweder für die Einrichtung oder die Organisation.

Wenn entsprechende Webhooks existieren, wird eine Anfrage in die Warteschlange gestellt und asynchron verarbeitet. In der Regel erfolgt dies nahezu in Echtzeit, kleinere Verzögerungen sind jedoch möglich.

Technische Details

  • Webhooks senden HTTP POST-Anfragen an die angegebene URL

  • Die Anfrage enthält einen HTTP-Header mit einem SHA256 HMAC-Hash des Payloads zur Verifizierung

  • Der empfangende Endpunkt muss innerhalb von 10 Sekunden antworten

  • Bei einem HTTP-Fehler erfolgt ein erneuter Zustellversuch – bis zu fünfmal, mit exponentiellem Backoff

  • Alle Ereignisse – inklusive Payload und Antwort – werden für 30 Tage gespeichert und sind in Famly einsehbar


So abonnierst du Webhooks

  • Öffne Famly

  • Gehe zu Einstellungen → Integrationen → Webhooks

Diese Funktion muss für deinen Standort aktiviert sein und du benötigst entsprechende Berechtigungen. Wenn du keinen Zugriff hast, kontaktiere unseren Support über den In-App-Chat oder per E-Mail an support@famly.de.

In der Liste siehst du alle registrierten Webhooks.

Um einen neuen hinzuzufügen, klicke auf Webhook hinzufügen und:

  • Wähle die Ereignisse aus, die überwacht werden sollen

  • Vergib einen Namen für den Webhook

  • Gib die URL an, die beim Eintreten des Ereignisses aufgerufen werden soll

  • Stelle sicher, dass der Webhook aktiviert ist

  • Trage beim Feld „Geheimer Schlüssel“ einen eindeutigen Schlüssel ein, der zur Erstellung des Payload-Hashes verwendet wird

    • So kannst du überprüfen, ob die Anfragen tatsächlich von Famly stammen


Empfang von Webhook-Aufrufen

Sobald ein Webhook eingerichtet ist, sendet Famly bei Eintreten eines Ereignisses automatisch eine POST-Anfrage an die hinterlegte URL. Diese Anfrage enthält unter anderem folgende HTTP-Header (Beispielwerte):

  • Content-Type: application/json

  • Accept-Encoding: gzip, deflate

  • User-Agent: Java-http-client/17.0.8

  • X-Famly-Hmac: 24961ed7451342......a58713ad3ae066

  • Content-Length: 527

Der Inhalt der Anfrage (Payload) hängt vom jeweiligen Ereignis ab, z. B. ob ein neues Kind hinzugefügt oder eine Rechnung geändert wurde.

Beispiel für einen Payload:

{

"requestId": "01HBZQ60T0E834D3KCE7P3TVF3",

"eventId": "5dc5bfcf-59b6-46d2-a1c9-b9d41e9f61c7",

"siteSetId": "6d130c40-93aa-44c2-8f5b-3d52b310e34e",

"eventTime": "2023-10-05T10:47:21Z",

"operation": "Updated",

"objectType": "ChildEvent",

"data": {

"childId": "be0ea60c-1191-4dd2-8629-81793b6b83c3",

"name": {

"fullName": "API Test2 16112022",

"firstName": "API",

"middleName": "Test2",

"lastName": "16112022"

},

"gender": null,

"birthDay": "2022-11-02",

"startDate": "2022-11-16",

"endDate": null,

"groupId": "37626de8-c2dd-4f0b-af74-55387353e3ca",

"address": null

}

}

Alle Ereignisse enthalten im Hauptteil (Root-Objekt) des Payloads folgende Schlüssel:

  • requestId – Eine eindeutige Kennung für jede einzelne Anfrage. Wenn eine Anfrage erneut gesendet wird (z. B. bei einem Fehler), ändert sich diese ID.

  • eventId – Eine eindeutige Kennung für das jeweilige Ereignis. Sie bleibt bei Wiederholungen desselben Ereignisses gleich.

  • siteSetId – Eine eindeutige Kennung der Einrichtung oder Organisation, auf die sich das Ereignis bezieht.

  • eventTime – Der Zeitpunkt, zu dem das Ereignis eingetreten ist. Dieser kann leicht vom Versandzeitpunkt abweichen, z. B. durch Warteschlangen oder erneute Zustellung.

  • operation – Gibt an, was mit dem Objekt passiert ist. Meist handelt es sich um:

    • Created (erstellt)

    • Updated (aktualisiert)

    • Deleted (gelöscht)

  • objectType – Der Typ des betroffenen Objekts. Aktuell werden folgende Typen unterstützt:

    • Child (Kind)

    • BillPayer (Rechnungszahler:in)

    • Invoice (Rechnung)

    • Contact (Kontakt)

  • data – Die Struktur dieses Schlüssels hängt vom jeweiligen Objekttyp ab und enthält die inhaltlichen Details des Ereignisses.


Validierung des Payloads

Der Header X-Famly-HMAC enthält einen Hash, mit dem du die Anfrage verifizieren kannst. Dabei handelt es sich um einen hex-kodierten SHA256 HMAC, erzeugt mit dem bei Registrierung des Webhooks angegebenen geheimen Schlüssels.

Beispiel zur HMAC-Validierung mit CryptoJS:

var CryptoJS = require("crypto-js");

function verifySignature(payload, secret, expectedSignature) {

return webhookDigest(payload, secret) === expectedSignature;

}

const webhookDigest = (payload, secret) => {

const words = CryptoJS.HmacSHA256(payload, secret);

return CryptoJS.enc.Hex.stringify(words);

}


Webhook-Ereignisse einsehen

Um HTTP-Anfragen einzusehen, die durch ein Webhook-Ereignis ausgelöst wurden:

  • Gehe zu Einstellungen → Integrationen → Webhooks

  • Wähle den entsprechenden Webhook aus

Auf dieser Seite kannst du alle Anfragen einsehen - einschließlich der Anfrage- und Antwort-Header sowie des Payloads. Du kannst von hier aus auch eine Anfrage manuell erneut senden.

Hat dies deine Frage beantwortet?