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.
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?
Will it spam my Zendesk queue if the same package stays late for days?
What carriers does this work with?
Does the customer get the apology message automatically?
Can I send these alerts somewhere other than Zendesk?
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.