AnleitungUltimate-Tarif

Webhooks einrichten

Senden Sie Echtzeit-Updates zu Terminen, Kunden, Rechnungen und mehr an Ihr eigenes System und prüfen Sie, ob jede Anfrage von Softalon stammt.

5 Min. LesezeitRolle: Super-Administrator oder höherIntegrationen & EntwicklerAktualisiert am 25. Oktober 2026
In der App öffnen

Ein Webhook sendet eine HTTP-Anfrage an eine von Ihnen gewählte URL, sobald in Ihrem Salon etwas passiert, zum Beispiel wenn ein Termin erstellt oder ein Kunde aktualisiert wird. So halten Sie ein anderes System mit Softalon synchron.

Bevor Sie beginnen

  • Ihr Salon nutzt den Tarif Ultimate.
  • Sie haben die Rolle Super-Administrator oder Inhaber.
  • Sie haben eine URL, die POST-Anfragen mit JSON-Body annimmt und mit https:// oder http:// beginnt.

Einen Webhook erstellen

  1. 1

    Schritt 1 von 4

    Webhooks öffnen

    Gehen Sie zu Einstellungen › Entwickler › Webhooks und klicken Sie auf Webhook erstellen.

  2. 2

    Schritt 2 von 4

    Das Ziel eingeben

    Geben Sie die Ziel-URL ein, zum Beispiel https://example.com/webhook, und optional eine Beschreibung, damit Sie den Webhook später wiedererkennen.

  3. 3

    Schritt 3 von 4

    Themen wählen

    Wählen Sie unter Themen die gewünschten Ereignisse aus. Der Tab Alle Themen listet alle verfügbaren Themen auf, und Ausgewählte Themen zeigt Ihre Auswahl. Ihre URL erhält nur die Themen, die Sie auswählen.

  4. 4

    Schritt 4 von 4

    Speichern

    Klicken Sie auf Webhook erstellen.

    Das sehen Sie:

    Webhook erstellt, und der Webhook erscheint in der Tabelle mit aktiviertem Statusschalter.

Themen

Themen heißen resource.action. Diese sind verfügbar:

BereichThemen
Mitarbeitersalons/member.created, .updated, .deleted
Standortelocations/location.created, .updated, .deleted
Dienstleistungenservices/service.created, .updated, .deleted
Kundenclients/client.created, .updated, .deleted, .birthday, .lapsed
Anmeldecodes von Kundenclients/session_request.code_generated
Terminebooking/appointment.created, .updated, .deleted, .upcoming, .started
Unterhaltungenconversations/conversation.created, .updated, .deleted
Rechnungenfinances/invoice.created, .updated, .deleted

Was jeder Trigger bedeutet, erfahren Sie unter Trigger für Automatisierungen erklärt.

Was Softalon sendet

Jedes Ereignis ist eine POST-Anfrage mit einem JSON-Body:

{
  "topic": "booking/appointment.created",
  "event": {
    "id": "...",
    "type": "booking/appointment.created",
    "resource": "booking/appointment",
    "resourceId": "...",
    "salonId": "...",
    "data": {
      "object": { "...": "the full object" },
      "previousAttributes": { "...": "changed fields, for updates" }
    }
  }
}

Die Anfrage hat diese Header:

HeaderWert
X-Webhook-Signaturesha256= gefolgt von der Signatur
X-Webhook-TopicDas Thema, zum Beispiel booking/appointment.created
X-Webhook-Endpoint-IdDie ID Ihres Webhooks
X-Webhook-Delivery-IdDie ID dieser Zustellung. Sie bleibt gleich, wenn eine Zustellung wiederholt wird.
User-AgentSoftalon API

Die Signatur prüfen

Jeder Webhook hat ein Secret. Softalon signiert den Anfrage-Body damit per HMAC-SHA256 und sendet das Ergebnis in Hex-Darstellung in X-Webhook-Signature. Berechnen Sie denselben Wert aus dem unveränderten Anfrage-Body und vergleichen Sie. Stimmen die Werte nicht überein, ignorieren Sie die Anfrage.

const crypto = require("crypto");

function isValid(rawBody, header, secret) {
  const expected = "sha256=" + crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(header));
}

Zur Verwaltung des Secrets verwenden Sie die Schaltflächen in der Spalte Secret:

  • Die Augen-Schaltfläche zeigt das vollständige Secret, die Kopieren-Schaltfläche kopiert es.
  • Die Schaltfläche zum Neugenerieren erstellt sofort ein neues Secret. Das alte Secret funktioniert ab sofort nicht mehr. Aktualisieren Sie Ihr System daher gleichzeitig.

Zustellungen und Wiederholungen

  • Ihre URL muss innerhalb von 10 Sekunden mit einem 2xx-Statuscode antworten. Alles andere gilt als Fehlschlag.
  • Eine fehlgeschlagene Zustellung wird wiederholt, insgesamt bis zu 5 Versuche. Die Wartezeiten zwischen den Versuchen werden länger: etwa 30 Sekunden, 1 Minute, 2 Minuten und 4 Minuten.
  • Verwenden Sie X-Webhook-Delivery-Id, um eine bereits verarbeitete Zustellung zu ignorieren.

Jede Zustellung hat einen dieser Status:

StatusBedeutung
pendingWartet auf den Versand.
deliveredIhre URL hat mit einem 2xx-Status geantwortet.
failedDer letzte Versuch ist fehlgeschlagen. Sind noch Versuche übrig, wird erneut zugestellt.
exhaustedAlle 5 Versuche sind fehlgeschlagen. Es wird nicht erneut versucht.

Die App zeigt noch kein Zustellungsprotokoll. Sie können Zustellungen über die API unter GET /v1/salons/:salonId/webhook-endpoints/:webhookEndpointId/deliveries abrufen. Siehe Eine API-App erstellen.

Sind die letzten 5 Zustellungen an einen Webhook alle erschöpft, schaltet Softalon den Webhook aus. Beheben Sie das Problem an Ihrem Endpunkt und schalten Sie den Statusschalter dann wieder ein. Ereignisse, die eintreten, während ein Webhook ausgeschaltet ist, werden nicht nachträglich gesendet.

Einen Webhook bearbeiten, pausieren oder löschen

  • Pausieren: Schalten Sie den Schalter in der Spalte Status aus.
  • Bearbeiten: Öffnen Sie das Menü der Zeile und wählen Sie Aktualisieren.
  • Löschen: Öffnen Sie das Menü der Zeile und wählen Sie Löschen.

Webhooks senden nur, solange Ihr Salon ein aktives, in der Testphase befindliches oder überfälliges Abonnement mit einem Tarif hat, der Webhooks enthält.

Häufige Fragen

Jede Zustellung wird separat gesendet und nach ihrem eigenen Zeitplan wiederholt. Verlassen Sie sich daher nicht auf die Reihenfolge, in der Anfragen ankommen. Verwenden Sie stattdessen die Zeitstempel des Objekts.