Need help in holding up orders in Shopify Flow

Hi there! We’re hoping you can help us complete a Shopify Flow setup we’ve been working on.
We’d like to automatically hold all orders placed overnight and then release them at 8:30 AM each morning, giving customers a window to request cancellations or changes before fulfillment begins.

What we’ve set up so far:

  • Workflow 1 (Completed):

    • Trigger: Order created

    • Action: Hold fulfillment order

  • Workflow 2 (In Progress):

    • Trigger: Scheduled time (set for 8:30 AM daily)

    • Action added: Get order data

At this point, we’re running into a limitation as we’re not seeing an option for a “common order search”, so we’re unsure how to properly filter and retrieve only the relevant orders.

What we need help with:

  • The correct query/filter to identify only the orders that were placed overnight and are currently on hold

  • The exact steps/actions needed to release only those held orders at 8:30 AM

We want to make sure we’re not accidentally releasing any orders that shouldn’t be included. Any guidance or step-by-step direction would be greatly appreciated! Thank you so much! - Jiminy’s

For workflow 2, when configuring the “Get order data” you can select “Created at the last day” filter:

The query can also be modified to be more preicze (like “after 8:30 yesterday”). Like created_at:<='{{ scheduledAt }}' AND created_at:>'{{ scheduledAt | date_minus: "24 hours" }}


Another approach is to add a tag to the order in Workflow 1.
This way in Workflow 2 you can query only orders with this tag (query like tag:on_hold) and then remove this tag as Workflow 2 processes the orders.


if my post is helpful, please like it ♡ and mark as a solution -- this will help others find it

Thank you so much! We’ve set up the first approach that you recommended and will test it today. We’ll mark this as the solution if it works!

Hi Jiminy’s. To finish your second workflow, you need to use a specific search query in the Get order data step. In the query box, you should type fulfillment_status:on_hold. This will pull all orders that are currently stuck in that holding state.

Once you have your list of orders, you need to add a For each loop to the workflow. Inside that loop, you will add the Release fulfillment hold action. This tells the system to look at every order found by your query and clear the hold so your team can start packing at 8:30 AM. To be extra safe and ensure you only release orders from the last 24 hours, you can expand the query to fulfillment_status:on_hold AND created_at:>=now-1d.

Hope this helps.