Body-Formate und Aufteilung von Arrays
Nicht jedes System sendet JSON, und nicht jede Anfrage bezieht sich auf eine einzelne Sache. Zwei Einstellungen decken beide Fälle ab.
Textformate
Das Format wird aus dem Header Content-Type der Anfrage übernommen. Unabhängig vom Format verwendet Ihre Feldzuordnung stets dieselben Punktpfade.
| Inhaltstyp | Wird wie folgt analysiert: | Typische Absender |
|---|---|---|
application/json |
JSON | Die meisten APIs, n8n, Make, Zapier |
application/x-www-form-urlencoded |
Formularfelder | Twilio, PayPal IPN, einfache HTML-Formulare |
multipart/form-data |
Formularfelder und Dateiteile werden zum Dateinamen | Formulargeneratoren, Upload-Endpunkte |
text/xml, application/xml, *+xml |
XML | Ältere ERP- und Speditionssysteme |
Zwei wissenswerte Details:
- Ein Textkörper, der gültiges JSON ist, wird stets als JSON gelesen, selbst wenn der Absender ihn als etwas anderes kennzeichnet. Viele Tools versenden JSON mit dem Inhaltstyp „Form“, wodurch ihre Funktionsfähigkeit gewährleistet bleibt.
- Formular- und XML-Inhalte können Felder enthalten, die Sie nicht zugeordnet haben. Das ist kein Problem: Da der Absender die Struktur selbst festlegt, unterliegen diese Inhalte nicht der strengen Prüfung, die für das von Ihnen kontrollierte JSON gilt.
curl -X POST https://your-app-url/webhook/ab12cd34 \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "X-Api-Key: your-token" \
--data-urlencode "From=+15551234567" \
--data-urlencode "Body=Where is my order?"
# Map fieldOne to: From
# Map fieldTwo to: BodyXML-Attribute
Ein XML-Attribut ist unter seinem Namen verfügbar, dem das Präfix @_ vorangestellt ist; so wird beispielsweise <order id="7"> als order.@_id abgebildet und <order><name>Bob</name></order> als order.name. Die Werte werden als Text übergeben, wodurch lange IDs exakt erhalten bleiben.
Aufteilung von Arrays in Läufe
Wenn eine Anfrage eine Liste enthält - beispielsweise 20 Bestellungen aus einem ERP-System oder eine Reihe von Bestandsaktualisierungen -, möchten Sie in der Regel, dass Ihr Workflow einmal pro Eintrag ausgeführt wird und nicht nur einmal für den gesamten Stapel.
Geben Sie unter „Erweiterte Einstellungen“ -> „Arrays in Durchläufe aufteilen“ den Pfad zum Array an:
| Pfad | Verwenden Sie dies, wenn |
|---|---|
items |
Das Array ist ein Feld auf oberster Ebene: { "items": [ ... ] } |
data.orders |
Es ist verschachtelt: { "data": { "orders": [ ... ] } } |
$ |
Der Textkörper selbst ist das Array: [ { ... }, { ... } ] |
| (leer) | Aus. Ein Durchlauf pro Anfrage - dies ist die Standardeinstellung. |
Jedes Element wird zu einem eigenständigen Durchlauf, wobei **dieses Element als Payload **dient; daher beziehen sich die Zuordnungswege relativ auf das jeweilige Element: Ordnen Sie sku zu, nicht items.0.sku.
{
"items": [
{ "sku": "ABC-1", "qty": 2 },
{ "sku": "ABC-2", "qty": 1 },
{ "sku": "ABC-3", "qty": 7 }
]
}
// Split path: items
// Map fieldOne to: sku
// Map fieldTwo to: qty
// Response: { "runs": 3, "blocked": 0 }Regeln und Einschränkungen
- Pro Anfrage sind höchstens 100 Elemente zulässig. Ein größerer Stapel wird abgelehnt, damit ein unkontrollierter Absender Ihren Workflow nicht überlasten kann.
- Fehlt bei einem Element ein zugeordnetes Feld oder ist es zu groß für Shopify Flow, wird die gesamte Anfrage abgelehnt und es wird nichts gesendet, wobei die Position des fehlerhaften Elements in der Fehlermeldung angegeben wird. Dadurch wird sichergestellt, dass ein Stapel entweder vollständig oder gar nicht verarbeitet wird, anstatt nur teilweise.
- Elemente, bei denen es sich um einfache Werte und nicht um Objekte handelt, werden als
{ "value": ... }übermittelt. - Die Aufteilung lässt sich nicht mit einer synchronen Antwort kombinieren: Ein Anrufer kann nicht von mehreren Ausführungsinstanzen bedient werden. Siehe Synchrone Reaktion.
- Wenn Sie einen früheren Lauf aus dem Verlauf erneut ausführen, wird nur dieser einzelne Eintrag erneut gesendet, nicht der gesamte Stapel.
In der Geschichte
Jeder Eintrag stellt einen eigenen Eintrag dar, sodass Sie jeden einzelnen separat einsehen, erneut versuchen und wiedergeben können.

