← All guides · By Agents4Ecom · Published Oct 14, 2026

How to Get a Stuck-Orders Alert in Shopify

To get a stuck-orders alert in Shopify, build a Shopify Flow workflow with the "Scheduled time" trigger set to run daily, a "Get order data" step that finds paid, unfulfilled orders created more than 2 days ago, a "Count" step, and a condition that only sends a "Send internal email" when the count is above zero. Shopify even ships a template for this: "Send email summary with all unfulfilled orders older than 2 days."

"Where's my order?" emails are mostly preventable. If you see a stuck order on day 2, you can ship it or message the customer before they ask. This guide shows how to set it up, test it without waiting two days, and avoid the one query mistake that floods your inbox.

What counts as a "stuck" order?

For most small stores, a stuck order is one that is:

Pick your own threshold. If you promise same-day dispatch, use 1 day. If you make to order, 5 days might be normal. Write the number down. It goes into your query.

What do you need?

How do you build the stuck-orders workflow?

  1. Start from the template (fastest). In Flow, browse templates and search for "unfulfilled orders older than 2 days." Shopify lists "Send email summary with all unfulfilled orders older than 2 days," which uses schedules, Get order data, Count and Sum. There's also "Tag unfulfilled orders older than 2 days." Or build it from scratch with the steps below.
  2. Click Create workflow and choose the Scheduled time trigger. Set a start time (for example 7:00 tomorrow), then Add repeat rule → every 1 day. The time zone defaults to your store's.
  3. Add Get order data. In the query, filter for paid, unfulfilled orders created before "now minus 2 days." Shopify's Get order data documentation shows how to build a relative date with the scheduledAt variable and the date_minus filter. Set max results to 100, the step's maximum.
  4. Add Count, pointing at the Get order data list.
  5. Add a Condition: count is greater than 0. This prevents an empty email on good days. Leave the False branch empty.
  6. On the True branch, add For each over the orders, with Add order tags → stuck inside it. Now you can filter the Orders page by tag.
  7. Still on True, add Send internal email. In the message, loop over the orders with Liquid to list order name, customer and created date. Paste the Liquid in one go rather than typing it.
  8. Name the workflow, Turn on workflow, then confirm Turn on.

Our Stuck Orders Daily Digest recipe packages this with the exact query, a copy-paste email template, and a draft "your order is on its way" message for customers.

How do you test it without waiting two days?

  1. Create a test order (Bogus Gateway, or a draft order marked as paid). Draft orders don't count until they're converted to real orders.
  2. Temporarily change the age in your query from 2 days to a few minutes.
  3. Set the schedule to start shortly after you turn it on. Shopify's own advice for testing Scheduled time workflows is to "set the first workflow to run shortly after you turn on the workflow." The minimum repeat interval is 10 minutes.
  4. Check: the email arrives, it lists the test order, the order has the stuck tag, and Recent runs shows success.
  5. Change the query back to 2 days and the schedule back to 7:00. Done when the test order appeared once and the real settings are restored.

Why does my stuck-orders email list every order?

This is the most important warning in the whole setup. Shopify's documentation warns that if a query fails, the API can return all results instead of none. A typo in the filter, a curly quote pasted from a document, or a wrong field name can make the "stuck" list contain every order, and the For each step will then tag all of them.

To protect yourself:

What other problems come up?

What do you do with the list?

The alert is only useful if it changes what you do each morning:

  1. Ship anything you can today.
  2. For anything you can't, send the customer a short, honest update before they ask. A prompt helps here: paste the order details into ChatGPT or Claude and ask for a two-sentence update in your brand voice with a realistic ship date.
  3. Remove the stuck tag once it ships, or let tomorrow's run show what's left.

What should you automate next?

Pair this with a low-stock alert, since many stuck orders are really stock problems, and a weekly KPI email. For more ideas, read Shopify Flow examples for small stores.

FAQ

Is there a built-in Shopify template for this?

Yes. Shopify's Scheduled time trigger page lists "Send email summary with all unfulfilled orders older than 2 days" and "Tag unfulfilled orders older than 2 days."

Does this work on Shopify Basic?

Yes. It uses only built-in Flow steps (Scheduled time, Get order data, Count, Add order tags, Send internal email). It doesn't need Send HTTP request, which is Grow-and-up only.

Will it email my customers?

No. Send internal email goes to you or your staff. You decide what to tell each customer.

How many orders can it check?

Get order data returns up to 100 orders per step.

Can I run it more than once a day?

Yes, down to once every 10 minutes, though daily is plenty for most stores.

Next step

Run the free AI audit to see which other jobs in your store are worth automating, each linked to a recipe. Or see the Stuck Orders Daily Digest recipe.

Recipe: Stuck Orders Daily Digest

Every weekday 7am: paid orders unfulfilled 2+ days, tagged, with a customer update drafted. Shopify Flow (free) · $19 one-time.

See the recipe

Run the free AI audit

Get your AI readiness score and the top 5 jobs worth automating in your store. Public storefront data only, no login.

Run my free audit →

Related guides