Body-formaten en het opsplitsen van arrays
Niet elk systeem verzendt JSON, en niet elk verzoek heeft betrekking op één enkel element. Twee instellingen dekken beide gevallen af.
Lichaamsvormen
Het formaat wordt overgenomen uit de Content-Type-header van het verzoek. Ongeacht het formaat maakt uw veldtoewijzing gebruik van dezelfde puntpaden.
| Type inhoud | Geparseerd als | Typische afzenders |
|---|---|---|
application/json |
JSON | De meeste API’s, n8n, Make, Zapier |
application/x-www-form-urlencoded |
Formuliervelden | Twilio, PayPal IPN, gewone HTML-formulieren |
multipart/form-data |
Formuliervelden en bestandselementen vormen samen de bestandsnaam | Formulierbouwers, upload-eindpunten |
text/xml, application/xml, *+xml |
XML | Oudere ERP- en vervoerssystemen |
Twee belangrijke details:
- Een bericht dat geldige JSON bevat, wordt altijd als JSON geïnterpreteerd, zelfs wanneer de afzender het als iets anders aanduidt. Veel tools verzenden JSON met het inhoudstype „form”, waardoor ze blijven functioneren.
- Formulier- en XML-inhoud kunnen velden bevatten die u niet hebt toegewezen. Dat is geen probleem: de afzender bepaalt zelf de opmaak, dus voor die inhoud geldt niet de strenge controle die van toepassing is op JSON waarover u de controle hebt.
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-attributen
Een XML-attribuut is beschikbaar onder de naam met het voorvoegsel @_; zo wordt <order id="7"> omgezet naar order.@_id en <order><name>Bob</name></order> naar order.name. Waarden worden als tekst doorgegeven, waardoor lange ID’s exact behouden blijven.
Arrays opsplitsen in reeksen
Wanneer een verzoek een lijst bevat - bijvoorbeeld 20 bestellingen uit een ERP-systeem of een reeks voorraadupdates - wilt u doorgaans dat uw workflow één keer per item wordt uitgevoerd, en niet één keer voor de gehele reeks.
Ga naar Geavanceerde instellingen -> Arrays opsplitsen in runs en geef het pad naar de array een naam:
| Pad | Gebruik wanneer |
|---|---|
items |
De array is een veld op het hoogste niveau: { "items": [ ... ] } |
data.orders |
Het is genest: { "data": { "orders": [ ... ] } } |
$ |
De tekst zelf vormt de array: [ { ... }, { ... } ] |
| (leeg) | Uitgeschakeld. Eén uitvoering per verzoek; dit is de standaardinstelling. |
Elk element vormt een afzonderlijke run met dat element als payload, zodat mapping-paden relatief zijn ten opzichte van het item: gebruik de map-sku in plaats van 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 }Regels en beperkingen
- Maximaal 100 items per verzoek. Een grotere batch wordt geweigerd, zodat een onbeheersbare afzender uw workflow niet kan overspoelen.
- Indien bij een item een toegewezen veld ontbreekt of het item te groot is voor Shopify Flow, wordt het gehele verzoek afgewezen en wordt er niets verzonden, waarbij de positie van het foutieve item in de foutmelding wordt vermeld. Hierdoor blijft een batch een ‘alles-of-niets’-geval in plaats van dat deze slechts gedeeltelijk wordt verwerkt.
- Elementen die gewone waarden zijn in plaats van objecten, worden weergegeven als
{ "value": ... }. - Splitsing kan niet worden gecombineerd met een synchrone reactie: één aanroep kan niet door meerdere uitvoeringen worden beantwoord. Zie Synchrone reactie.
- Wanneer u een eerdere run uit de geschiedenis opnieuw afspeelt, wordt alleen dat ene item opnieuw verzonden, niet de gehele batch.
In de geschiedenis
Elk item vormt een afzonderlijke vermelding, zodat u elk item afzonderlijk kunt bekijken, opnieuw kunt proberen en opnieuw kunt afspelen.

