Webhook-Payloads umwandeln
Die E-Mail-Adresse aus data.customer.email landet unter correo und der Betrag 8500 unter importe, während ein nicht vorhandener Pfad einfach entfällt: Beschreiben Sie die Form, die das Zielsystem erwartet, und erhalten Sie die Nachricht passend umgebaut. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Läuft direkt in Ihrem Browser – kostenlos. Ihre Datei verlässt Ihren Browser nicht und wird an keinen Server übertragen.
kostenlos, direkt im Browser
Warum zwei Systeme selten dieselbe Form nutzen
Zwei Systeme, die sich integriert nennen, sind sich selten über Namen, Verschachtelung oder auch nur Datumsformate einig. Ein Zahlungsdienst schickt den Betrag in Cent als ganze Zahl, Ihre Abrechnung erwartet ihn als Dezimaltext drei Ebenen tiefer. Ein CRM meldet einen neuen Interessenten als flaches Objekt, Ihr Marketingwerkzeug will eine Liste von Kontakten, auch wenn es nur einen gibt. Das sind keine Fehler, sondern zwei Teams, die unabhängig voneinander unterschiedliche, vernünftige Entscheidungen treffen, und genau diese Abweichung bricht Integrationen, die in einer Vorführung noch funktionierten. Dieses Werkzeug sitzt dazwischen und baut das, was die eine Seite schickt, in die Struktur um, die die andere erwartet, ohne dass eine Seite ihren Code ändert.
Eine Zuordnung statt handgeschriebenem Code
Die Zielform beschreiben Sie mit einer Zuordnung. Jeder Name im Ergebnis zeigt auf den Pfad mit Punkten, unter dem sein Wert in der eingehenden Nachricht steht: Im Beispiel zeigt correo auf data.customer.email und importe auf data.amount, sodass der Betrag 8500 unter importe landet. Ein nicht vorhandener Pfad wie data.no.existe entfällt, statt mit einem erfundenen Wert gefüllt zu werden. Dass die Zuordnung außerhalb Ihrer Anwendung liegt, zählt: Handgeschriebene Umwandlungen geraten in Vergessenheit und brechen still, wenn die Quelle Monate später einen Namen ändert, während eine eigene Zuordnung für sich geprüft werden kann. Ein Dienst mit Dutzenden Partnern kann je Partner eine Zuordnung pflegen und neue aufnehmen, ohne gemeinsamen Code anzufassen.
Verschachtelte Felder und Listen
Die Zuordnung funktioniert auch über mehrere Ebenen hinweg und bei Listen: Ein Array aus Bestellpositionen lässt sich zu einer Summe zusammenfassen, ein tief verschachteltes Feld lässt sich auf die oberste Ebene heben. Einzelne Elemente einer Liste lassen sich zusätzlich herausfiltern, etwa um nur bezahlte Positionen einer Bestellung an die eigene Anwendung weiterzugeben.
Häufige Fragen
Muss ich mich anmelden?
Nein. Es gibt derzeit keine Konten – die Nutzung im Browser ist kostenlos und ohne Limit.
Funktioniert das auch mit verschachtelten Feldern und Listen?
Ja. Felder lassen sich über mehrere Ebenen hinweg verschieben, und Listen lassen sich zusammenfassen oder filtern.
Wie beschreibe ich die gewünschte Form?
Mit einer Zuordnung: Für jeden Namen im Ergebnis geben Sie den Pfad mit Punkten an, unter dem der Wert in der eingehenden Nachricht steht. Im Beispiel zeigt importe auf data.amount, also erscheint die dortige 8500 unter importe.
Was passiert, wenn ein Pfad der Zuordnung nicht existiert?
Dieser Eintrag fehlt im Ergebnis einfach, statt mit einem erfundenen Wert gefüllt zu werden. Im Beispiel zeigt falta auf data.no.existe, das es in der Quelle nicht gibt, daher enthält das Ergebnis nur correo und importe.
Warum sollte die Umwandlung außerhalb meiner Anwendung liegen?
Eine handgeschriebene Umwandlung in der Anwendung gerät leicht in Vergessenheit und bricht still, wenn die Quelle Monate später etwas ändert. Außerhalb lässt sich die Zuordnung eigenständig prüfen, und ein neuer Partner braucht nur eine neue Zuordnung statt einer neuen Auslieferung.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/dev/webhook-transform \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"payload":{"user":{"name":"Ada"}},"mapping":{"nombre":"user.name"}}'const res = await fetch("https://api.kit.forhosting.com/dev/webhook-transform", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"payload": {
"user": {
"name": "Ada"
}
},
"mapping": {
"nombre": "user.name"
}
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/webhook-transform",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"payload": {
"user": {
"name": "Ada"
}
},
"mapping": {
"nombre": "user.name"
}
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/webhook-transform", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"payload":{"user":{"name":"Ada"}},"mapping":{"nombre":"user.name"}}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"payload":{"user":{"name":"Ada"}},"mapping":{"nombre":"user.name"}}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/webhook-transform", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"payload": {
"user": {
"name": "Ada"
}
},
"mapping": {
"nombre": "user.name"
}
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.webhook_transform",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Diese Funktion wandelt den JSON-Inhalt eines eingehenden Webhooks in ein anderes Format um – Felder umbenennen, verschachteln, zusammenführen oder herausfiltern. Gedacht für alle, die Webhook-Daten eines Anbieters an die von einer eigenen Anwendung erwartete Struktur anpassen müssen, ohne dafür eigenen Code zu schreiben.
Eine Zuordnung statt eigenem Code
Sie fügen ein Beispiel des eingehenden Payloads ein und legen fest, wie die Felder im Ergebnis heißen und angeordnet sein sollen – etwa das Feld „customer.email“ eines Anbieters auf „kunde_email“ in der eigenen Struktur. Die Funktion wendet diese Zuordnung auf jeden weiteren Payload an, ohne dass Sie dafür eine eigene Transformationsfunktion schreiben müssen. Auch feste Zusatzwerte, etwa ein Herkunftskennzeichen, das im ursprünglichen Payload gar nicht vorkommt, lassen sich beim Anlegen der Zuordnung ergänzen.
Verschachtelte Felder und Listen
Damit passt sich der Payload auch dann an, wenn die eigene Anwendung eine deutlich flachere oder andere Struktur erwartet als der Anbieter liefert.
Kostenlos im Browser, per API automatisierbar
So lässt sich eine im Browser entworfene und getestete Zuordnung ohne weiteren Aufwand in eine produktive Pipeline übernehmen. Für den laufenden Betrieb – etwa als Zwischenschritt zwischen einem Zahlungsanbieter und der eigenen Anwendung – steht dieselbe Zuordnung über die API zur Verfügung, für $0.002 pro Ereignis.
Typische Anbieter und Formate
Statt bei jeder neuen Integration eine eigene Übersetzungsfunktion zu schreiben, genügt eine einmal eingerichtete Zuordnung, die sich bei Bedarf anpassen lässt. Häufig eingesetzt wird die Funktion für Webhooks von Zahlungsanbietern, Formular-Diensten oder CRM-Systemen, deren Payload-Struktur sich vom eigenen Datenmodell unterscheidet. Ändert der Anbieter später die Struktur seines Payloads, lässt sich die bestehende Zuordnung entsprechend nachziehen, statt den gesamten Integrationscode neu zu schreiben.
Integrationsbeispiele
Zahlungsanbieter an eigenes Datenmodell anpassen
Ein Entwickler bei der Schneider IT-Systeme GmbH & Co. KG richtet eine Zuordnung ein, die eingehende Webhooks eines Zahlungsanbieters in das interne Bestellformat der eigenen Anwendung umwandelt, bevor sie weiterverarbeitet werden.
Formulardaten für ein internes System aufbereiten
Anna Hoffmann leitet Webhook-Daten eines Formular-Dienstes über die Funktion um, damit Feldnamen und Struktur zum internen CRM-System passen, ohne dass jemand im Team eigenen Übersetzungscode pflegen muss.
Testfälle für die eigene Webhook-Verarbeitung prüfen
Ein Entwickler testet im Browser-Widget, ob ein Beispiel-Payload korrekt in das erwartete Zielformat überführt wird, bevor er die Zuordnung in die produktive Pipeline übernimmt.
Technische Fragen
Verlässt der Payload meinen Browser?
Nein, solange Sie die Funktion im Browser nutzen. Die Umwandlung läuft direkt auf dieser Seite, ohne Übertragung an einen Server.
Wie richte ich eine Zuordnung ein?
Sie fügen ein Beispiel des eingehenden Payloads ein und legen fest, wie die Zielfelder heißen und angeordnet sein sollen; die Zuordnung lässt sich anschließend speichern und wiederverwenden.
Was kostet die Nutzung über die API?
$0.002 pro Ereignis. Im Browser bleibt die Funktion unabhängig davon kostenlos.
Für welche Webhook-Anbieter eignet sich das?
Für jeden Anbieter, dessen Payload im JSON-Format vorliegt – häufig genutzt bei Zahlungsanbietern, Formular-Diensten und CRM-Systemen.
Gibt es einen AVV für die Verarbeitung von Kundendaten im Payload?
Aktuell steht kein separater Auftragsverarbeitungsvertrag zur Verfügung. Wer das für sein Unternehmen benötigt, schreibt uns bitte vorab an human@forhosting.com.