Email customers about stalled orders before they ask where it is

By General Input

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.

Integrations

  • Gladly
  • Shopify
  • Slack

Type

Agentic Task

Categories

  • Customer Support
  • Operations

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.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentWin back LiveChat visitors whose chats went unansweredChat quality review board for LiveChat support leadsReceiving dock console for inspecting and restocking Loop returnsWin back no-show and cancelled appointments every morningSee which influencer creators actually drove Shopify salesLive Loop returns analytics with product-level drill-downNewsletter pre-flight and approval board for Mailjet sendsTurn a prospect spreadsheet into personalized sequence enrollmentsMailjet email delivery lookup console for support teams