Zum Hauptinhalt springen
Jeder Webhook, den Social media studio zustellt, folgt demselben Umschlag und demselben Signaturverfahren. Diese Seite zeigt den genauen Aufbau der Anfrage, wie du die Signatur verifizierst und wie der data-Block bei gängigen Events aussieht.

Anfrageformat

Jede Zustellung enthält diese Header:

Umschlag

Sofern du kein eigenes payloadTemplate konfigurierst, ist der Body ein JSON-Objekt mit vier Feldern:
  • event — Der exakte Event-Name (entspricht X-Webhook-Event)
  • category — Die Kategorie, zu der das Event gehört (z. B. post, inbox, subscription)
  • timestamp — ISO-8601-Zeitstempel des Zeitpunkts, zu dem das Event versendet wurde
  • data — Die eventspezifische Payload (siehe Beispiele unten)
Wiederholungen verwenden dieselbe X-Webhook-Delivery-Id. Nutze sie als Idempotenzschlüssel, damit eine wiederholte Zustellung ein bereits verarbeitetes Event nicht erneut verarbeitet.

Signature Verification

Jeder Request-Body wird mit dem Secret deines Endpunkts per HMAC-SHA256 signiert. Verifiziere ihn bei jeder Anfrage, um zu bestätigen, dass die Zustellung tatsächlich von Social media studio stammt.
Verifiziere immer mit dem rohen Request-Body, bevor er als JSON geparst wird — wenn das geparste Objekt neu serialisiert wird, ändern sich Leerzeichen und die Signatur wird ungültig.

Beispiel-Payloads

Der Aufbau des data-Blocks hängt vom Event ab. Hier sind repräsentative Beispiele aus häufig genutzten Kategorien.

Beitrag

Freigabe

Posteingang

WhatsApp

Social-Konto

Abonnement

Das Feld newPlanName enthält die interne Tarifkennung, zum Beispiel scale für Advanced.

KI

Wissensdatenbank

Analysen

Beste Zeit

Empfehlung

Die vollständige Liste der 162 Events in 26 Kategorien findest du in der Webhooks-Übersicht.

Eigene Payload-Vorlagen

Erwartet dein Endpunkt eine andere Form (z. B. Slack, Discord), setze ein payloadTemplate für dein Webhook-Abonnement. Verfügbare Variablen sind:
  • {{event}}
  • {{category}}
  • {{timestamp}}
  • {{data}} — das vollständige Datenobjekt als JSON
  • {{data.any_field}} — jedes verschachtelte Feld der eventspezifischen Payload
Nicht auflösbare Variablen bleiben unverändert stehen (z. B. bleibt {{data.postId}} wörtlich erhalten, wenn das Event kein postId liefert). Beispiele für Discord- und Slack-Vorlagen findest du auf der Übersichtsseite.

Lokal testen

Während der Entwicklung:
  1. Nutze ein Tunneling-Tool wie ngrok oder Cloudflare Tunnel, um deinen lokalen Server verfügbar zu machen.
  2. Erstelle unter Einstellungen → Webhooks ein Webhook-Abonnement, das auf deine Tunnel-URL zeigt.
  3. Klicke beim Abonnement auf die Schaltfläche Test, um ein Beispiel-Event zu senden, ohne echte Aktivität auszulösen.
  4. Sieh dir die Payload in Webhook.site an, wenn du die rohe Anfrage sehen möchtest, bevor du einen Verifizierer schreibst.
Schlägt dein Endpunkt bei 10 aufeinanderfolgenden Zustellungen fehl, wird das Abonnement automatisch deaktiviert. Aktiviere es nach der Behebung des Problems im Dashboard wieder.