Mastering Overnight Order Holds: A Shopify Flow Guide from the Community

Hey fellow store owners! Ever found yourself wishing you could put a pause button on overnight orders? You know, give customers a little extra wiggle room to change their minds or update an address before your fulfillment team springs into action at 8:30 AM? It’s a common scenario, and frankly, a smart business move that enhances customer service and reduces errors.

That's exactly the challenge a store owner, 'hello_3463' (who goes by Jiminy's!), brought to the Shopify Community forums recently. They were looking to fine-tune their Shopify Flow setup to automate this exact process, and the discussion that followed offered some really valuable insights.

The Overnight Order Challenge: Hold and Release

Jiminy's had a clear goal: automatically hold all orders placed overnight, then release them at 8:30 AM each morning. This thoughtful approach gives customers a crucial window to request cancellations or changes before fulfillment begins, preventing unnecessary shipping costs and returns.

They'd already set up the first part of their automation:

  • Workflow 1 (Completed):
    • Trigger: Order created
    • Action: Hold fulfillment order

This workflow successfully put newly created orders on hold. But the trickier part was Workflow 2, designed to release these specific orders at a scheduled time:

  • Workflow 2 (In Progress):
    • Trigger: Scheduled time (set for 8:30 AM daily)
    • Action added: Get order data

The snag? They were running into a limitation, not seeing an obvious option for a “common order search.” They needed to know how to properly filter and retrieve only the relevant orders – those placed overnight and currently on hold – without accidentally releasing orders that shouldn't be included. This is a classic Flow dilemma: how do you get Flow to 'remember' or 'identify' specific groups of items later?

Community Wisdom to the Rescue: Two Smart Approaches

That's where 'tim_1', a helpful expert from the community, jumped in with some fantastic advice, offering two robust solutions to filter those orders effectively.

Approach 1: The Precise Query Filter (Jiminy's Choice!)

The first approach, and the one Jiminy's decided to test, involves using a precise query directly within the 'Get order data' action. This is powerful because it allows you to dynamically filter orders based on their creation time relative to when your release workflow runs.

Step-by-Step for the Query Approach:

  1. Open Workflow 2: Navigate to your Shopify Flow and open the workflow triggered by a Scheduled time (set for 8:30 AM daily).

  2. Configure 'Get order data': Locate the 'Get order data' action you've already added. This is where you'll tell Flow exactly which orders to look for.

  3. Apply a Date Filter: Within the configuration options for 'Get order data', you might see a straightforward filter like “Created at the last day.” This is a good starting point to target orders from the past 24 hours.

    Screenshot 2026-04-15 at 11.34.49 PM
  4. Refine with a Liquid Query (for ultimate precision): For even more granular control, tim_1 suggested a Liquid query. This is incredibly powerful because it lets you define a specific time window relative to your scheduled trigger. The query looks like this:

    created_at:<'{{ scheduledAt }}' AND created_at:>'{{ scheduledAt | date_minus: "24 hours" }}'

    Let's break that down: scheduledAt is a Shopify Flow variable representing the exact time your scheduled workflow is running (e.g., 8:30 AM today). date_minus: "24 hours" subtracts 24 hours from that time. So, this query tells Flow: "Find me all orders created before or at the current scheduled time, but after 24 hours prior to the scheduled time." This ensures you're only processing orders from the most recent overnight period.

  5. Add the Release Action: Once your 'Get order data' action is configured to identify the correct orders, the next crucial step is to release them. Add an action immediately after 'Get order data':

    • Action: Release fulfillment hold

    This action will apply to all the orders that were successfully retrieved by your 'Get order data' step, effectively releasing those overnight holds.

Approach 2: The Elegant Tagging Method

tim_1 also proposed a really elegant alternative: using order tags. This approach can make your workflows incredibly clear and robust, especially if you have multiple reasons for holding orders.

Step-by-Step for the Tagging Approach:

  1. Modify Workflow 1 (Order created): When an order is created and you apply the 'Hold fulfillment order' action, add another action right after it:

    • Action: Add tags to order

    You'd add a unique tag here, something like on_hold_overnight. This explicitly marks the order as one that needs to be released by your scheduled workflow.

  2. Modify Workflow 2 (Scheduled time): In your 'Get order data' action, instead of the date query, you'd simply query for orders with your specific tag:

    tag:on_hold_overnight

    This tells Flow to fetch only orders that have this specific tag, ensuring you're only targeting the orders you intend to release.

  3. Add a Cleanup Step: After your Workflow 2 successfully releases the fulfillment hold (using the Release fulfillment hold action as described above), it's good practice to clean up. Add a final action in Workflow 2:

    • Action: Remove tags from order

    Target the on_hold_overnight tag. This keeps your order data clean and prevents accidental re-processing if you were to run a similar workflow in the future.

Which Approach is Best for You?

Both the query-based and tagging methods are valid and highly effective. The tagging method offers a clear, explicit flag on the order itself, which some merchants find easier to manage and troubleshoot, especially if they need to manually intervene or quickly see why an order is on hold. The query approach is more dynamic and doesn't require an extra tag action, but relies on accurate time calculations.

Jiminy's initially went with the query-based approach, which is a testament to its effectiveness and flexibility. It's a fantastic example of how Shopify Flow, combined with a little community wisdom, can tackle quite specific operational needs.

Automating these kinds of processes doesn't just save you time; it significantly enhances your customer experience by giving them that crucial window for changes, and it streamlines your fulfillment operations. So, next time you're thinking about a tricky automation, remember the power of precise queries or simple tagging in Flow. And, of course, don't hesitate to tap into the incredible knowledge base of the Shopify Community – there's always someone ready to lend a hand and share their expertise!

Share:

Start with the tools

Explore migration tools

See options, compare methods, and pick the path that fits your store.

Explore migration tools