Synkron respons
Håll kvar den som ringer tills ditt Shopify Flow-arbetsflöde svarar, med hjälp av utlösaren ”Sync Webhook” och åtgärden ”Return Webhook Response”.
Normalt svarar en webhook omedelbart på anropet och ditt Shopify Flow-arbetsflöde körs i bakgrunden. När ”Synkron respons” är aktiverat håller appen anroparens HTTP-förfrågan öppen tills ditt arbetsflöde skickar tillbaka data, och returnerar den istället.
Användbart när den som ringer behöver ett svar, inte bara en bekräftelse - ett formulär som visar ett resultat, ett system som kräver ett beräknat värde eller en uppslagning.
Sätt på den
Avancerade inställningar -> Synkron respons på webhooken.
Skapa arbetsflödet
En synkroniseringswebhook utlöser utlösaren ”Sync Webhook Trigger”, inte den vanliga utlösaren ”Webhook Trigger”. Den utlösaren innehåller ett extra fält, invocationId, som identifierar den enskilda begäran som väntar på svar.
| Steg | Vad |
|---|---|
| Utlösare | Utlösare för synkroniseringswebhook |
| Skick | Webhook ID motsvarar ditt webhooks ID |
| Senaste åtgärd | Svar från returwebhook |
Handlingen utspelar sig på tre platser:
| Fält | Vad man ska lägga i |
|---|---|
| Anrop-ID | Bind {{invocationId}} från utlösaren. Utan detta kan ditt svar inte kopplas till den väntande anroparen och kasseras därför. |
| Svarets innehåll | Vad den som ringer får - se nedan. |
| Innehållstyp | Valfritt. Standardvärdet är application/json; använd text/plain för ren text. |
Skriva svarstexten
Du kan skriva själva texten direkt i fältet med hjälp av utlösarens variabler, vilket är allt som behövs i de flesta arbetsflöden:
{"ok": true, "orderId": "{{fieldOne}}", "email": "{{fieldTwo}}"}
Alla triggerfält är tillgängliga: {{fieldOne}} till {{fieldFour}}, {{rawBody}} och {{webhookId}}.
För allt som kräver logik - att söka fram en kund, beräkna ett totalbelopp, forma ett större objekt - använd istället åtgärden ”Kör kod” tidigare i arbetsflödet och koppla dess resultat hit.
När inget svar kommer
Om ditt arbetsflöde inte svarar inom 15 sekunder får den som anropar istället det vanliga svaret - samma 200 som en icke-synkroniserad webhook returnerar. Det är aldrig ett fel och den som anropar lämnas aldrig i ovisshet. Anropet visas fortfarande i historiken och arbetsflödet kan fortfarande slutföras; det är bara så att svaret kommer för sent för att kunna användas.
De vanligaste orsakerna:
- Arbetsflödet är inte aktiverat.
- Den bygger på den vanliga Webhook-utlösaren istället för synkroniseringsutlösaren.
- En gren avslutades utan att nå ”Return Webhook Response”.
- Invokations-ID:t var inte bundet.
Bra att veta
- Det första svaret vinner. Om två arbetsflöden svarar på samma förfrågan får den som ringde först; den andra kasseras.
- Dubbla leveranser väntar aldrig. En begäran som undertrycks av Skydd mot dubbla leveranser returnerar omedelbart - inget arbetsflöde körs, så det finns inget att svara på.
- En typisk tur-och-retur-tid är 2-4 sekunder, men Shopify lämnar inga tidsgarantier för Shopify Flow. Behandla synkrona svar som ”best-effort”: snabba i praktiken, med 15 sekunder en reservlösning som sista utväg.
