Daily
Get a morning list of orders waiting over 48 hours
Each morning you get the orders that have sat in awaiting shipment for more than two days, so none are forgotten.
- Runs
- Daily
- Apps
- ShipStation
- AI
- Not needed
- Access
- API key + secret
Send this to your assistant
Create a ClickRuntime automation: every weekday at 8am, find ShipStation orders that have been awaiting shipment for over 48 hours and email me the order numbers, dates and customers.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Orders that sit in awaiting shipment status for too long cause the worst kind of customer complaint, because the customer has paid and nothing has happened. They hide in ShipStation for many reasons: an item was out of stock, an address needed checking, an order got imported twice, or it was simply missed in a busy day. The team looks at today's orders, not last Thursday's, so the forgotten ones stay forgotten until the customer emails asking where the order is.
Every day the automation lists orders with the awaiting_shipment status, keeps those whose order date is more than two days old, and emails you the list with order number, customer and age. It runs on a daily schedule, so the forgotten orders are brought back into view. Small sellers and fulfillment managers use it as a safety net against orders that slip through.
What you get out of it
Forgotten orders get shipped
An order stuck for three days appears in the list and gets handled. Shipping it late is far better than not shipping, and the customer receives it before they have given up and opened a dispute.
Fewer chargebacks and bad reviews
Customers whose orders do not arrive often escalate to their card issuer or leave a bad review. Resolving a delayed order proactively avoids both, and protects the store's rating. A buyer waiting a week for a paid order usually disputes the charge before writing to you.
Reasons for delay get investigated
A recurring set of old orders may share a cause, such as one SKU out of stock or one carrier error. The list reveals the pattern, letting you solve the underlying problem.
Service promises are kept
If you advertise dispatch within 48 hours, the two-day threshold matches the promise. The list tells you which orders are about to break it, so you can ship them before they do.
Stock problems are surfaced
Orders held because an item is missing show up, prompting a restock or a message to the customer. Waiting silently for a supplier delivery without telling the buyer is what causes the complaint.
How it works
What happens, step by step
Every morning, ClickRuntime checks ShipStation for orders still awaiting shipment.
It keeps only the orders placed more than 48 hours ago.
If there are any, you get an email listing each order number, order date and customer name.
Before it runs live
- Connect ShipStation
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other ShipStation steps into one automation
Under the hood
The code that runs this automation
from datetime import datetime, timedelta
from clickruntime import on_trigger, credentials, http, notify
@on_trigger
def run(event):
auth = (credentials.secret("SHIPSTATION_API_KEY"), credentials.secret("SHIPSTATION_API_SECRET"))
cutoff = (datetime.utcnow() - timedelta(hours=48)).strftime("%Y-%m-%d %H:%M:%S")
orders = http.get("https://ssapi.shipstation.com/orders", auth=auth, params={
"orderStatus": "awaiting_shipment", "orderDateEnd": cutoff, "sortBy": "OrderDate", "pageSize": 500}).json()["orders"]
if not orders:
return {"late": 0}
lines = [f"{o['orderNumber']} {o['orderDate'][:10]} {o['shipTo']['name']}" for o in orders]
notify.email_me(f"{len(orders)} orders waiting over 48 hours", "\n".join(lines))
return {"late": len(orders)}FAQ
Common questions
Can I change the two-day threshold?
Does it include orders on hold?
Will weekends count toward the two days?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Post each new ShipStation order to Slack
Your team sees every new order in Slack with its number, items and total as soon as it reaches ShipStation.
See how it worksGet a 6pm count of shipped orders and postage
Every evening you know how many orders left today and how much the shipping cost altogether.
See how it worksKnow the moment your website goes down
Your team hears in Slack when the site stops responding or slows down, and again when it's back.
See how it worksKeep exploring
Set up “Get a morning list of orders waiting over 48 hours” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.
