Webhooks einrichten: andere Systeme bei neuen Aufträgen sofort informieren
Du willst, dass deine Warenwirtschaft, dein Versandtool oder ein eigenes Skript sofort erfährt, wenn in billware ein Auftrag, ein Kunde oder ein Artikel angelegt, geändert oder gelöscht wird? Dafür gibt es Webhooks. billware schickt dann bei jedem passenden Ereignis die Daten per HTTPS an eine Adresse, die du festlegst. Du brauchst dafür das Zusatzmodul Webhook und einen Endpunkt, der die Daten annimmt. Den Endpunkt baut meist jemand, der programmieren kann. Diese Anleitung zeigt beides: die Einrichtung in billware und was der Endpunkt wissen muss.
Webhook in billware einrichten
- Öffne „Apps › Webhook“ und klicke auf „neuer Webhook“.
- Klappe den neuen Eintrag auf und stell den Status auf „aktiviert“.
- Gib dem Webhook einen Namen, an dem du ihn später wiedererkennst, zum Beispiel „Neue Bestellung an Warenwirtschaft“.
- Wähle bei „Event“, wann billware senden soll, etwa
order.createfür neue Aufträge. - Trag bei „Endpunkt“ die Adresse ein, die die Daten empfangen soll. Sie muss mit https:// beginnen.
- Klicke beim „Schlüssel“ auf „neu generieren“ und kopiere den Schlüssel in deinen Endpunkt. Damit prüft er später, ob eine Anfrage wirklich von billware kommt. Jeder Webhook braucht einen eigenen Schlüssel.

Ein Webhook, der bei jedem neuen Auftrag an den eigenen Endpunkt sendet. - Klicke auf „Speichern“.
Zwei Felder sind optional:
- Verzögerung: Mit einer ganzen Zahl zwischen 0 und 96 legst du fest, wie viele Stunden billware nach dem Ereignis wartet, bevor es sendet. Bei 0 geht der Webhook zeitnah raus. Gesendet werden die Daten so, wie sie beim Ereignis waren.
- Zusätzliche Daten: Über das Plus fügst du Paare aus Key und Value hinzu, die bei jedem Aufruf mitgeschikt werden. Das hilft zum Beispiel, wenn mehrere billware-Konten an denselben Endpunkt senden und du sie auseinander halten willst.
Welche Events es gibt
| Event | Wird ausgelöst, wenn |
|---|---|
order.create, order.update, order.delete | ein Auftrag angelegt, geändert oder gelöscht wird |
customer.create, customer.update, customer.delete | ein Kunde angelegt, geändert oder gelöscht wird |
article.create, article.update, article.delete | ein Artikel angelegt, geändert oder gelöscht wird |
Das gilt auch für Aufträge, die über einen Import nach billware kommen, etwa vom eBay-Importer. Importierst du viele Aufträge auf einmal, ruft billware den Webhook für jeden einzelnen auf. Soll ein anderes System davon nichts mitbekommen, deaktivier den Webhook vorher. Der CSV-Importer zeigt dir vor dem Start an, welche aktiven Webhooks ein Import auslöst.
Was billware an den Endpunkt schickt
Für jedes Ereignis sendet billware eine POST-Anfrage an den Endpunkt. Der Inhalt ist JSON mit zwei Feldern:
dataenthält den Auftrag, den Kunden oder den Artikel.additional_payloadenthält die Zusätzlichen Daten aus den Einstellungen als Liste von Einträgen mitkeyundvalue.
Dazu kommen zwei Header:
X-Bw-Eventnennt das Event, zum Beispielorder.create.X-Bw-Signatureenthält die Signatur, mit der dein Endpunkt die Anfrage prüft.
Signatur prüfen
Jeder, der die Adresse deines Endpunkts kennt, könnte ihm Daten schicken. Prüf deshalb bei jeder Anfrage die Signatur, bevor du mit den Daten arbeitest. Die Signatur ist ein HMAC-SHA256 über den unveränderten Inhalt der Anfrage, berechnet mit dem Schlüssel des Webhooks und Base64-kodiert.
- Lies den Inhalt der Anfrage so, wie er ankommt, bevor du das JSON auswertest.
- Berechne daraus mit deinem Schlüssel einen HMAC-SHA256 und kodier das Ergebnis mit Base64.
- Vergleiche den Wert mit dem Header
X-Bw-Signature. Stimmen beide nicht überein, verwirf die Anfrage.
So sieht das in PHP aus:
$body = file_get_contents('php://input');$expected = base64_encode(hash_hmac('sha256', $body, $secret, true));$signature = $_SERVER['HTTP_X_BW_SIGNATURE'] ?? '';if (!hash_equals($expected, $signature)) { http_response_code(401); exit; }$payload = json_decode($body, true);
Wichtig: Rechne die Signatur über den Inhalt, wie er angekommen ist. Wandelst du das JSON erst um und kodierst es neu, können sich Leerzeichen oder Sonderzeichen ändern, und die Signatur passt nicht mehr. Der Schlüssel gehört nur in deinen Endpunkt, nicht in öffentlichen Code.
Antworten des Endpunkts: Statuscodes
| Antwort | Was billware macht |
|---|---|
| 200 bis 299 | Der Aufruf gilt als erfolgreich. |
| 410 | billware deaktiviert den Webhook sofort und schickt dir eine E-Mail. Nutze den Code, wenn der Endpunkt nichts mehr empfangen soll. |
| jeder andere Code oder keine Antwort | billware versucht es später noch einmal. Schlägt es dauerhaft fehl, wird der Webhook deaktiviert und du bekommst eine E-Mail. |
Antworte also mit 200, sobald du die Daten angenommen hast. Längere Arbeiten, etwa das Anlegen eines Lieferscheins in einem anderen System, erledigst du am besten danach. Weil ein Aufruf wiederholt werden kann, sollte dein Endpunkt damit klar kommen, denselben Auftrag zweimal zu bekommen, zum Beispiel indem er die Auftragsnummer prüft.
Tipp: Wenn du Daten nicht nur empfangen, sondern selbst in billware abrufen oder anlegen willst, schau in die API-Dokumentation. Webhooks und API lassen sich gut kombinieren: Der Webhook meldet, dass sich etwas geändert hat, und über die API holst du bei Bedarf weitere Daten.
Häufige Fragen
Wie viele Webhooks kann ich anlegen?
Kann ich einen Endpunkt mit http:// verwenden?
Wie schalte ich einen Webhook vorübergehend ab?
Warum ist mein Webhook plötzlich deaktiviert?
Brauche ich für Webhooks ein Zusatzmodul?
Stimmt etwas nicht mehr mit billware überein?