Submissions and FlowShopify Flow triggers

Shopify Flow triggers

Copy page

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

  1. Open Shopify Flow (the app's Help page has a shortcut, or an install link if Flow is not on your store yet).
  2. Create a workflow and choose Form submitted under Workflow Forms as the trigger.
  3. Add a condition on Form handle if the workflow is for one form only. The trigger starts for every form.
  4. 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
Email 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