---
title: "Which Shopify Flow triggers and actions does the app add?"
description: "Pre-order triggers and actions for Shopify Flow: pre-order placed, balance charge failed, limit reached, collect balance, release holds, campaign status."
url: "https://smart-preorder.com/help/preorders/shopify-flow-triggers-and-actions"
updated: "2026-11-02"
product: "SMART Preorder & Back in stock"
section: "Help center / Pre-orders"
---


# Which Shopify Flow triggers and actions does the app add?

Three pre-order triggers, **Pre-order placed**, **Pre-order balance charge failed** and **Pre-order limit reached**, and three actions, **Set pre-order campaign status**, **Collect pre-order balance** and **Release pre-order holds**. Back in stock adds two more triggers. They show up in Shopify Flow once the app is installed.

Shopify Flow is a free Shopify app on the Basic, Grow, Advanced and Plus plans ([Shopify Help Center](https://help.shopify.com/en/manual/shopify-flow)). In a workflow, search for the trigger or action by its name.

## Triggers

| Trigger | Runs when | Data it passes |
| --- | --- | --- |
| **Pre-order placed** | A customer places an order with a pre-order item, right after the app records it. | The order, Campaign title, Payment type (deposit or full), Total amount, Deposit amount |
| **Pre-order balance charge failed** | A deposit balance couldn't be charged after every attempt. | The order, Balance amount, Result ("Order cancelled" or "Order kept open", from your Deposits and cancellations setting) |
| **Pre-order limit reached** | A campaign's whole-campaign unit limit is used up and it stops taking pre-orders. | Campaign title, Campaign ID, Order limit |

- Each trigger is sent once, with no retry.
- **Pre-order placed** isn't sent for orders cancelled at checkout. Use it instead of Shopify's order created trigger plus a tag check: the "Pre-order" tag is added seconds after Shopify creates the order, so a workflow that checks the tag right away can miss it.
- **Pre-order limit reached** runs only for **The whole campaign** limits. With **Each variant** (the default for new campaigns) a full variant stops on its own and the campaign stays active, so it never runs.
- There are no triggers for a balance paid, an order shipped or an order cancelled.

## Actions

| Action | Fields | What it does |
| --- | --- | --- |
| **Set pre-order campaign status** | Campaign ID, New status (active or paused) | Activates or pauses a campaign. The storefront and the checkout guard update automatically. Activating is refused if the campaign's products are already in another live campaign. |
| **Collect pre-order balance** | The order | Charges the outstanding balance on the saved payment method, the same way as Collect balance in the app. Full-payment orders and orders that aren't pre-orders pass as done, so you can use it in general workflows. |
| **Release pre-order holds** | The order | Releases the fulfillment holds the app placed. Holds from other apps stay. Orders without an app hold pass as done. |

- **Campaign ID** is the number after cid= in the campaign editor's address.
- **Collect pre-order balance** refuses cancelled orders, a balance that went up after a refund, and a payment Shopify never confirmed. Use it for balances that are still due. If a balance that already failed fails again, the action reports that nothing started, and Flow retries such a step for up to 36 hours ([Shopify developer docs](https://shopify.dev/docs/apps/build/flow/actions/endpoints)), so the customer can get more than one payment failed email. For failed balances, use **Collect balance** in the app.
- **Release pre-order holds** refuses an order whose cancellation is in progress. Releasing an order that still owes its balance makes it shippable before the balance is collected.

## Workflow ideas

- **Pre-order placed** with Payment type deposit: add your own order tag or notify your team with Flow's built-in actions.
- **Pre-order balance charge failed** with Result "Order kept open": alert your support team to follow up with the customer.
- **Pre-order limit reached**: tell your team, or use **Set pre-order campaign status** to activate a follow-up campaign you prepared (its products must not be in another live campaign).
- Your own stock-arrived workflow: end it with **Release pre-order holds** for the orders that should ship.

## Back in stock triggers

**Back in stock signup added** (a shopper signs up on a sold-out product) and **Back in stock alert sent** (a back in stock email went out). Both pass Customer email, Variant ID and Product title. See [Waitlist signups](https://smart-preorder.com/help/back-in-stock/waitlist-signups).

**Automate pre-orders with Shopify Flow** Pre-order triggers and actions for Flow, plus back in stock triggers, in a free Shopify app. [Install SMART Preorder & Back in stock on the Shopify App Store](https://apps.shopify.com/smart-preorder-back-in-stock).

## Frequently asked questions

### Why doesn't my Pre-order limit reached workflow run?

The trigger runs only when a whole-campaign limit is used up. Campaigns that limit each variant never send it, because the campaign itself stays active.

### Can Flow charge the balance when I fulfill an order?

You don't need Flow for that: choose When you fulfill the order under Collect the balance in the campaign, and the app charges it when the whole order is fulfilled. Collect pre-order balance is for your own custom timing.
