Shopify Flow triggers and actions reference
Read time: 6 minutes. Last updated: August 28, 2026 Who it's for: Anyone building a Flow workflow against QuotWay, or evaluating what QuotWay exposes to Flow before committing to it.
This is the field-level reference. For how to build your first workflow, start with Shopify Flow.
QuotWay exposes 10 triggers and 3 actions. Triggers require the Professional plan or higher; actions require Enterprise.
Triggers
Every trigger fires from a quote event and carries a flat set of fields you can use in Flow conditions and pass to downstream actions.
| Trigger | Fires when |
|---|---|
| Quote submitted | A buyer submits a quote request |
| Quote proposal sent | You send a priced proposal to the buyer |
| Quote countered | Either side counters, starting a new round |
| Quote accepted | The buyer accepts - fully or partially |
| Quote declined | The buyer declines |
| Quote expired | The quote passes its expiry date |
| Quote converted | The quote becomes a Shopify draft order |
| Quote approval requested | An approval chain starts, on your side or the buyer's |
| Quote approval granted | An approval step or chain is approved |
| Quote approval rejected | An approval step or chain is rejected |
The three approval triggers fire for both merchant-side and buyer-side chains. Use the Approval kind field (MERCHANT or BUYER) in a Flow condition to tell them apart rather than expecting separate triggers.
Fields on every trigger
| Field | Type | Notes |
|---|---|---|
| Quote id | Text | QuotWay's internal id |
| Quote number | Text | The human reference, e.g. Q-1042 |
| Quote admin url | Text | Deep link straight to the quote in your admin - useful in a Slack message |
| Status | Text | The quote's status at the moment the event fired |
| Mode | Text | Which quoting model the quote is running under |
| Total amount | Number | The quote total |
| Currency code | Text | The quote's currency |
| Actor type | Text | Who caused the event - merchant, buyer, or system |
| Occurred at | Text | ISO 8601 timestamp |
| Customer id | Text | The numeric Shopify customer id, or empty for guest quotes |
| Buyer email | Always present, so a downstream action can email the buyer directly |
Two notes that matter when you build conditions:
- Customer id is plain text, not a customer reference. Guest quote requests have no Shopify customer, and Shopify requires every declared field to be present - a reference field can't be empty, a text field can. One trigger therefore covers both guest and signed-in quotes. To branch, use a Flow condition on Customer id is not empty.
- Buyer email is always populated (it's validated at intake), which is what makes it safe to wire an email action straight off any trigger - including for guest requests, where it's the only buyer contact you have.
Extra fields on specific triggers
| Trigger | Additional field | Value |
|---|---|---|
| Quote countered | Round number | Which negotiation round this is |
| Quote accepted | Acceptance type | FULL or PARTIAL |
| Quote accepted | Accepted total | The total accepted |
| Quote converted | Draft order id | The draft order's GID |
| Approval requested / granted / rejected | Approval kind | MERCHANT or BUYER |
Why "Quote converted" carries a draft order id rather than an order reference. At conversion only a draft order exists - the real order isn't created until the buyer checks out. Declaring an order reference that isn't there yet would make Shopify reject the trigger, so the draft order GID travels in a plain-text field instead.
Actions
Actions let a Flow workflow act back on a quote. All three require the Enterprise plan.
Update quote status
Moves a quote to a new status.
| Input | Required | Notes |
|---|---|---|
quote_id |
Yes | From a trigger's Quote id field |
target_status |
Yes | One of IN_REVIEW, DECLINED, EXPIRED |
note |
No | Recorded against the quote |
The allowed targets are deliberately narrow - re-open a quote for review, decline it, or expire it. Statuses that represent work someone has to do (sending a proposal, accepting on the buyer's behalf) aren't settable from Flow.
Assign quote to staff
Routes a quote to a team member.
| Input | Required | Notes |
|---|---|---|
quote_id |
Yes | From a trigger |
staff_email |
Yes | Matched case-insensitively against your QuotWay staff |
Send quote notification
Posts a message to the quote thread and emails the buyer.
| Input | Required | Notes |
|---|---|---|
quote_id |
Yes | From a trigger |
message |
Yes | The message body |
What you can build with triggers alone
Triggers are Professional, so most useful workflows don't need Enterprise:
- Quote accepted over $25,000 → post to a Slack channel with the admin deep link, tag the customer, create a task.
- Quote submitted from a customer tagged
vip→ notify the account owner immediately. - Approval rejected → email the sales manager with the quote number and total.
- Quote expired → add the customer to a re-engagement segment.
Actions add the ability to write back - re-opening a quote, reassigning it, or messaging the buyer - from inside a workflow.
What Flow can't give you
Flow triggers carry quote-level fields, not line-level detail. If your workflow needs individual line items, quantities, or per-line pricing - for example to sync a quote into an ERP - that needs the API rather than Flow. A public API and outbound webhooks aren't available yet; see Integrations for the current position.
Related articles
- Shopify Flow - building your first workflow, and the plan gates.
- Approval workflows - the approval events that fire the three approval triggers.
- Plans, trial, and billing - Professional for triggers, Enterprise for actions.
Still need a hand? The team is happy to help.