Open Zendesk tickets for late ShipStation shipments

Each morning, find ShipStation packages running late and open a Zendesk ticket so your support team can reach out before customers complain.

Agentic Task
ShipStationZendeskCustomer SupportOperationsNotifications & AlertsFeedback Triage

Build an agent workflow that runs every morning on a cron schedule (default: 8am in the account's local timezone) to proactively catch late ShipStation shipments and open a Zendesk ticket for each one so the CX team can reach out before the customer complains.

Step 1. Pull active shipments from ShipStation. Use the List Labels operation filtered to in-transit status, paging through all results. Explicitly skip anything with status=delivered.

Step 2. For each in-transit label, call Get Label Tracking to fetch the latest carrier events and the estimated delivery date. Be mindful of ShipStation's 200 requests/minute limit and back off on 429s.

Step 3. The agent decides which packages are genuinely late using two heuristics: (a) the estimated delivery date has passed and the package has not been delivered, or (b) there has been no new carrier scan event in the last 48 hours (a stalled package). Skip anything still comfortably on schedule. De-dupe by tracking number against shipments that were already ticketed in a prior run so the same package is not ticketed every morning.

Step 4. For each late shipment, call Zendesk Create Ticket with: requester set to the customer's name and email from the ship-to address on the label; subject of the form '[Late shipment] Tracking {tracking_number} via {carrier}, past expected delivery' (or 'stalled, no scan in {hours}h' when that is the trigger); tags 'late-shipment' plus the carrier slug; and a body containing a one-line reason this was flagged, a freshly drafted apology message the agent writes per ticket that the support rep can copy, paste, and lightly personalize before sending to the customer, and a chronological list of the raw tracking events with timestamps and locations.

Make the schedule, the 'late' thresholds (past-ETA window and idle-stall hours), and the Zendesk priority/assignee group easy to tweak. Keep the workflow idempotent so the same shipment is never ticketed twice.

Additional information

What does this prompt do?
  • Scans ShipStation every morning for in-transit packages that are past their estimated delivery date or have not been scanned by the carrier in over 48 hours.
  • Opens a clearly written Zendesk ticket for each late shipment, with the customer's name, tracking number, and carrier already filled into the subject.
  • Drafts a ready-to-send apology message inside the ticket so your support agent can read it, tweak it, and send it without rewriting from scratch.
  • Skips packages that have already been delivered or are still on schedule, and avoids re-ticketing the same shipment day after day.
What do I need to use this?
  • A ShipStation account on the V2 API with shipments you can track
  • A Zendesk account where you can create new tickets
  • A few minutes to choose what time it should run and what counts as 'late' for your business
How can I customize it?
  • Change when it runs each day, or switch from daily to every few hours.
  • Adjust the rules for what counts as late. The defaults are 'past estimated delivery' and 'no carrier scan in the last 48 hours.'
  • Set the Zendesk priority, tags, or assignee group so late-shipment tickets land with the right person on your CX team.

Frequently asked questions

Doesn't ShipStation already alert me when a shipment is late?
No. Late-shipment alerts are not a built-in ShipStation feature, and it has been one of the most requested items in their community for years. There are paid third-party tools that exist only to add this. This prompt lets you build the same workflow yourself in a few minutes.
Will it spam my Zendesk queue if the same package stays late for days?
It can remember the tracking numbers it has already ticketed and skip them on the next run, so each late shipment turns into exactly one ticket rather than a new one every morning.
What carriers does this work with?
Any carrier you already ship through in ShipStation, including UPS, USPS, FedEx, DHL, and others. The workflow reads whatever carrier events ShipStation collects on your behalf.
Does the customer get the apology message automatically?
No. The drafted apology sits inside the Zendesk ticket as a starting point. A real person on your team reviews it, personalizes anything that needs a human touch, and then sends the reply.
Can I send these alerts somewhere other than Zendesk?
Yes. You can point the workflow at a different help desk, post the late list into a Slack channel, or email it to a shared support inbox. The detection part stays the same.

Stop letting late packages turn into angry support tickets.

Connect ShipStation and Zendesk once, and Geni catches stalled shipments every morning before your customers do.