Risposta sincrona
Normalmente un webhook risponde immediatamente al richiedente e il Suo workflow Shopify Flow viene eseguito in background. Con l’opzione “Risposta sincrona” attivata, l’app mantiene aperta la richiesta HTTP del richiedente fino a quando il Suo workflow non invia i dati, e restituisce questi ultimi al posto della richiesta.
Utile quando il chiamante necessita di una risposta, non solo di una conferma: un modulo che mostra un risultato, un sistema che richiede un valore calcolato, una ricerca.
Accendetelo
Impostazioni avanzate -> Risposta sincrona sul webhook.
Creare il workflow
Un webhook di sincronizzazione attiva il trigger “Sync Webhook Trigger”, non il trigger standard “Webhook Trigger”. Tale trigger contiene un campo aggiuntivo, invocationId, che identifica la singola richiesta in attesa di una risposta.
| Fase | Cosa |
|---|---|
| Trigger | Trigger webhook di sincronizzazione |
| Condizione | Webhook ID corrisponde all’ID del Suo webhook |
| Ultima azione | Risposta del webhook di ritorno |
L'azione si svolge su tre campi:
| Campo | Cosa inserire |
|---|---|
| ID invocazione | Assegni l'{{invocationId}} dal trigger. In assenza di tale parametro, la Sua risposta non potrà essere associata al chiamante in attesa e verrà scartata. |
| Corpo della risposta | Cosa riceve il chiamante - si veda di seguito. |
| Tipo di contenuto | Opzionale. Il valore predefinito è application/json; per il testo in chiaro, utilizzare text/plain. |
Scrittura del corpo della risposta
È possibile scrivere il corpo direttamente nel campo utilizzando le variabili del trigger, il che è tutto ciò di cui la maggior parte dei workflow ha bisogno:
{"ok": true, "orderId": "{{fieldOne}}", "email": "{{fieldTwo}}"}
Sono disponibili tutti i campi di trigger: da {{fieldOne}} a {{fieldFour}}, {{rawBody}} e {{webhookId}}.
Per qualsiasi operazione che richieda l’uso della logica - come la ricerca di un cliente, il calcolo di un totale o la suddivisione di un oggetto di grandi dimensioni - si raccomanda di utilizzare un’azione “Esegui codice” in una fase precedente del workflow e di associarne il risultato in questa sede.
Quando non si riceve alcuna risposta
Se il Suo workflow non risponde entro 15 secondi, il chiamante riceve invece la risposta standard, ovvero lo stesso codice di stato 200 restituito da un webhook non sincrono. Non si tratta mai di un errore e il chiamante non viene mai lasciato in attesa. L’invocazione compare comunque nella Cronologia e il workflow potrebbe comunque completarsi; semplicemente, la risposta arriva troppo tardi per poter essere utilizzata.
Le cause più comuni:
- Il workflow non è attivato.
- Si basa sul trigger Webhook standard anziché su quello di sincronizzazione.
- Un ramo si è concluso senza raggiungere la fase “Risposta al webhook di ritorno”.
- L'ID dell'invocazione non è stato associato.
Informazioni utili
- Vince la prima risposta. Se due workflow rispondono alla stessa richiesta, il richiedente riceve il il primo; il secondo viene scartato.
- Le consegne duplicate non possono mai attendere. Una richiesta soppressa da Protezione contro le consegne duplicate restituisce immediatamente il risultato: non viene eseguito alcun workflow, pertanto non vi è non ho nulla da rispondere.
- Il tempo di andata e ritorno tipico è di 2-4 secondi, ma Shopify non fornisce alcuna garanzia in merito ai tempi per Shopify Flow. Considerare le risposte sincrone come “best-effort”: veloci nella pratica, con i 15 secondi una soluzione di riserva come misura di sicurezza.

