Email customers about stalled orders before they ask where it is

Every weekday morning we find orders that were paid but never shipped, email those buyers a real status update, and log it all in Gladly.

Agentic Task
GladlyShopifySlackCustomer SupportOperationsEmail AutomationNotifications & AlertsDaily Digests
PromptCreate

Every weekday at 8am, find Shopify orders that customers have already paid for but that still have not shipped past our normal lead time, and reach out to those buyers before they have to ask where their order is.

Start with Shopify List Orders to pull orders that are paid and unfulfilled, looking back over the last 30 days and ignoring anything cancelled or refunded. Treat an order as past lead time when more than 3 business days have passed since payment, and make that threshold easy for me to change. Cap the run at 25 orders, oldest first, because Gladly allows roughly 10 requests per second per organization and I would rather process a small batch reliably every morning than trip the limit.

For each candidate order, call Shopify List Fulfillment Orders on it to work out whether the order is genuinely stalled or already moving. Fulfillment orders that are open or unassigned with no activity mean the order is stuck. Fulfillment orders that are in progress, scheduled, or already closed against a fulfillment mean the warehouse is working it, and I do not want to apologize for an order that is about to ship. Use judgement rather than a rigid rule: a partly fulfilled order whose remaining items have not moved in days still counts as stalled.

For each stalled order, take the buyer's email from the order and look them up with Gladly Find Customers. Gladly customer emails are unique across the org, so email is a safe key for joining a Shopify order to a Gladly profile. If no Gladly customer matches, skip the outreach and list that order in the digest instead of creating a new profile.

Before sending anything, call Gladly List Customer Conversations for that customer and read the recent timeline. Skip anyone who already has an open conversation about this order, since an agent is already on it, and skip anyone this workflow has already emailed about the same order. Nobody should get double-messaged.

For everyone who is left, use Gladly Send Email to send a personalized apology. Write each one for that customer rather than filling in a template: name what they ordered, say plainly where the order actually stands, give a realistic revised expectation instead of a vague promise, and invite them to simply reply if they need something. Keep it short and human, apologize once rather than repeatedly, and never invent a ship date that the fulfillment data does not support.

Gladly outbound sends through the communications API are non-routable and non-searchable, so agents will not find that email in the conversation history. Immediately after each send, use Gladly Add Conversation Note to log the outreach on the customer's timeline with the order number, how many days it had been stalled, a summary of what I told them, and the revised date I promised. That note is what an agent will rely on when the customer replies.

Finish with a single Slack Send a Message digest to the support lead's channel. List who was contacted, with order numbers and days waiting; who was skipped, with the reason for each; and call out separately any order stalled long enough that a human needs to chase fulfillment, meaning more than 7 days since payment with no fulfillment activity. If nothing was stalled this morning, post a short all-clear rather than staying silent.

What does this prompt do?

  • Checks every weekday morning for orders that were paid but still have not shipped past your normal lead time.
  • Tells the difference between an order that is genuinely stuck and one already moving through the warehouse, so you only contact people who are really waiting.
  • Skips anyone who already has an open support conversation about that order, then emails everyone else a personal apology with where their order stands and a realistic new date.
  • Records every message on the customer's Gladly timeline and posts a Slack summary to your support lead covering who was contacted, who was skipped, and which orders need a human to chase.

What do I need to use this?

  • A Shopify store with online orders
  • A Gladly account where your customer profiles live
  • A Slack workspace and a channel for your support lead
  • A sense of your normal lead time, meaning how many days between payment and shipping counts as normal for your brand

How can I customize it?

  • Change what counts as late, for example treat anything unshipped after two days as stalled instead of three
  • Adjust the run time and pick which Slack channel receives the morning summary
  • Move the escalation line, meaning how many days an order has to sit before it gets flagged for a human to chase
  • Send a text message instead of an email for customers who have given you phone consent

FAQs

Will this email customers whose orders are already on the way?
No. Before writing to anyone, it checks how the order is actually progressing through fulfillment. Orders that are picked, packed, scheduled, or already shipped are left alone. Only orders sitting untouched past your lead time get an email.
What if the customer has already contacted us about the order?
They get skipped. The workflow reads the customer's recent conversation history in Gladly first, and anyone with an open conversation about that order is left to your agents so nobody gets messaged twice. The Slack summary tells you who was skipped and why.
Will my agents see the email that was sent?
Yes. Outbound messages of this kind do not show up in normal conversation search in Gladly, so the workflow also writes a note on the customer's timeline with the order number, how long it was stalled, and the date that was promised. When the customer replies, your agent has the full record.
How many orders does it handle in one run?
It works through a capped batch each morning, oldest orders first, so it stays comfortably inside Gladly's usage limits. The default is 25 orders per run and you can raise or lower it.
Do I need a developer to set this up?
No. You connect your Shopify store, your Gladly account, and Slack, then tell it your normal lead time and which channel should get the summary.

Related templates

Browse and shortlist creators without burning audit credits

Search creators for free, shortlist the best with your team, and spend an audit credit only when you decide someone is worth a closer look.

HypeAuditor
Airtable
Slack
App
Morning repricing console for Shopify with margin-safe rules

Pick a repricing rule, send an assistant out to check competitor pages, then approve the new prices that clear your margin floor.

Hyperbrowser
Shopify
Google Sheets
App
Hiring funnel dashboard for every open Hireflix role

One screen showing invited, completed, and shortlisted counts for every open role, plus the stalled invites that have quietly gone nowhere.

Hireflix
Slack
App
Global operations exposure map for your sites and suppliers

Open one board each morning to see which of your facilities, suppliers and shipping lanes are sitting near trouble in the news right now.

GDELT
Airtable
Slack
App
Compare creators on post performance before you pay them

Pick creators from your saved list and see their best and worst Instagram posts side by side, so your brief is built on what actually lands.

HypeAuditor
Google Docs
Slack
App
Review every Hireflix video interview from one daily queue

One screen where your hiring team watches every unscored candidate, reads the transcript alongside each answer, and scores and shortlists on the spot.

Hireflix
Slack
App

Stop letting silence turn into support tickets.

Set this up once and every waiting customer hears from you first, so your team spends the morning fixing orders instead of answering "where is my order".