Synchronous response

Normally a webhook answers the caller immediately and your Shopify Flow workflow runs in the background. With Synchronous response on, the app holds the caller's HTTP request open until your workflow sends data back, and returns that instead.

Useful when the caller needs an answer, not just an acknowledgement - a form that shows a result, a system that wants a computed value, a lookup.

Turn it on

Advanced Settings -> Synchronous response on the webhook.

Build the workflow

A sync webhook fires the Sync Webhook Trigger, not the standard Webhook Trigger. That trigger carries an extra field, invocationId, which identifies the individual request waiting for an answer.

Step What
Trigger Sync Webhook Trigger
Condition Webhook ID equals your webhook's id
Last action Return Webhook Response

The action takes three fields:

Field What to put in
Invocation ID Bind {{invocationId}} from the trigger. Without it your reply cannot be matched to the waiting caller and is discarded.
Response body What the caller receives - see below.
Content type Optional. Defaults to application/json; use text/plain for plain text.

Writing the response body

You can write the body directly in the field using the trigger's variables, which is all most workflows need:

{"ok": true, "orderId": "{{fieldOne}}", "email": "{{fieldTwo}}"}

Every trigger field is available: {{fieldOne}} to {{fieldFour}}, {{rawBody}}, and {{webhookId}}.

For anything that needs logic - looking a customer up, computing a total, shaping a larger object - use a Run Code action earlier in the workflow and bind its result here instead.

When no answer arrives

If your workflow does not reply within 15 seconds, the caller gets the ordinary response instead - the same 200 a non-sync webhook returns. It is never an error and the caller is never left hanging. The invocation still appears in History and the workflow may still finish; only the reply is too late to use.

The usual causes:

  • The workflow is not turned on.
  • It is built on the standard Webhook Trigger rather than the Sync one.
  • A branch finished without reaching Return Webhook Response.
  • The Invocation ID was not bound.

Things worth knowing

  • First reply wins. If two workflows answer the same request, the caller gets the first; the second is discarded.
  • Duplicate deliveries never wait. A request suppressed by Duplicate delivery protection returns immediately - no workflow runs, so there is nothing to reply with.
  • Typical round trip is 2-4 seconds, but Shopify publishes no timing guarantee for Flow. Treat synchronous responses as best-effort: fast in practice, with the 15-second fallback as the backstop.