Shopify Flow triggers
The three Workflow Forms triggers in Shopify Flow - Form submitted, Form submission rejected and Form submission status changed - with their variables.
Workflow Forms adds three triggers to Shopify Flow. Build a workflow on one of them to email your team, tag a customer, create a task or send the data to another system.
| Trigger | Starts when |
|---|---|
| Form submitted | A visitor submits a form on your store and the submission is stored |
| Form submission rejected | A submission is refused (invalid, spam, too many attempts, plan limit) |
| Form submission status changed | A submission is marked read, archived or new again in the inbox |
Set up a workflow
- Open Shopify Flow (the app's Help page has a shortcut, or an install link if Flow is not on your store yet).
- Create a workflow and choose Form submitted under Workflow Forms as the trigger.
- Add a condition on Form handle if the workflow is for one form only. The trigger starts for every form.
- Add your actions and turn the workflow on.
Form submitted
| Variable | What it holds |
|---|---|
| Form handle | The handle of the form, for example contact |
| Form title | The form's title |
| Submission ID | Workflow Forms' id of this submission |
| The value of the form's first email field (empty when the form has none) | |
| Customer ID | The id of the logged-in customer, empty for a guest |
| Locale | The storefront language the form was filled in, for example de |
| Marketing consent | True when the visitor checked a consent box marked as email marketing consent |
| Data | All submitted values as JSON, keyed by field handle |
Reading a value from Data
Data is one JSON text with every value under its field's handle:
{ "name": "Alex", "email": "alex@example.com", "message": "Hello", "newsletter": true }
A Checkbox or Consent checkbox is true or false, Checkboxes is a list, everything else is text. Fields hidden by a condition are not in it.
To use a single value in a later step, read it with Flow's Run code action or with the json filter in a Liquid text field. This is why field handles never change: your workflows depend on them.
Good to know
- Customer ID is text, not a customer object, because most visitors are guests. To work with the customer, look them up by the id or by Email in a later step.
- Marketing consent only tells your workflow what the visitor checked. Workflow Forms does not subscribe anyone itself; do that in the workflow.
- There is no built-in email notification per submission. A workflow with Form submitted and a send-email action is the way to get one.
- Shopify Flow refuses a trigger payload of 50,000 bytes or more. Such a submission is stored and shown as Not sent to Flow.
- If Flow does not accept a submission, nothing is lost: it stays in your inbox and can be sent again. See The submissions inbox.
Form submission rejected
Starts when a submission is refused and therefore not stored.
| Variable | What it holds |
|---|---|
| Form handle | The handle of the form |
| Reason | validation, spam, rate_limit or quota |
| Details | What was wrong, without the submitted values: field errors as JSON, or the spam check that matched |
| Locale | The storefront language, for example de |
| Reason | Meaning |
|---|---|
validation |
A value was invalid or missing, or the email domain is blocked |
spam |
A spam check matched. See Spam protection |
rate_limit |
Too many submissions from one visitor in a short time |
quota |
Your plan's submissions are used up. See Plans and pricing |
The trigger is throttled: it starts at most once per form and reason every 5 minutes, so a wave of spam does not start hundreds of workflow runs. It is a signal that something is happening, not a count. Details never carries a submitted value.
A typical use: notify yourself when the reason is quota, so you can act before more submissions are refused.
Form submission status changed
Starts when a submission's inbox status changes, from its page or with a bulk action.
| Variable | What it holds |
|---|---|
| Form handle | The handle of the form |
| Submission ID | The submission that changed |
| Status | NEW, READ or ARCHIVED |
| Previous status | The status before the change |
A typical use: when a return request is archived, tag the customer or post to your team chat.
Testing
Send your form once on your storefront (the editor's Test like a visitor mode sends nothing). Then check the workflow's run in Shopify Flow, or use Send to Flow again on an existing submission to repeat the trigger without filling the form in again.
Next steps
- The submissions inbox - statuses and sending again.
- Fields and the field library - handles and marketing consent.
- Save submissions as metaobjects - use submissions elsewhere in Shopify.
