Weekly ShipStation shipping performance digest

Every Monday morning, get a Slack summary of last week's shipping spend, carrier performance, and cost outliers from ShipStation.

Agentic Task
ShipStationSlack BotOperationsFinanceAI ReportsDaily Digests

Every Monday at 9am in my local timezone, run a cron workflow that generates a written weekly shipping performance digest for the ops team and posts it as a single Slack message using the Slack Bot integration (so the message comes from a shared bot, not a personal account).

Pull last week's data from ShipStation. Use List Labels with a date range filter covering the previous Monday through Sunday. Also call List Carriers once so you can map raw carrier_id values to friendly carrier names (UPS, USPS, FedEx, DHL, etc.) in the digest. ShipStation money fields like shipment_cost are returned as objects shaped { amount, currency }, so unwrap amount before summing or averaging. Paginate List Labels until you have every label in the window.

Aggregate the labels by carrier. For each carrier, compute: total labels purchased, total spend (sum of shipment_cost.amount), and average cost per shipment. Then pull the prior week with the same logic and compute week-over-week percentage change in total spend, average cost per shipment, and label volume for each carrier.

In the digest, also call out: (1) the single most expensive shipment of the week (carrier, service, cost, destination if available); (2) the carrier with the best (lowest) average cost per shipment that week; and (3) any carrier where average cost per shipment spiked sharply versus the prior week, or where volume dropped sharply. Use roughly a 20% change as the default threshold but apply judgment based on volume so we don't flag noise from a carrier that only had two shipments.

Format the output as a readable Slack message using Slack mrkdwn (single asterisks for bold, no double asterisks, plain bullet lists). Structure it as: a short headline with the date range and total weekly spend, then a per-carrier breakdown table-style block, then the callouts at the bottom. Keep it scannable in under one screen height. Post to #shipping-ops by default and let me change the channel during setup.

If the window had zero labels, still post the digest with a one-line note that there was no shipping activity last week instead of sending an empty report.

Additional information

What does this prompt do?
  • Pulls last week's purchased shipping labels from ShipStation and groups them by carrier.
  • Compares total spend, label count, and average cost per shipment across UPS, USPS, FedEx, DHL, and any other connected carrier.
  • Flags week over week swings: spend jumps, average cost spikes, and sharp volume drops.
  • Calls out the single most expensive shipment of the week and the carrier with the best cost per shipment.
  • Posts the whole digest as one Slack message every Monday at 9am so ops gets an actionable read without opening ShipStation.
What do I need to use this?
  • A ShipStation account with at least one carrier connected and shipments purchased through it.
  • A Slack workspace where the bot can post and the name of the channel you want the digest delivered to.
  • An ops or leadership channel that should own shipping cost decisions (e.g. #shipping-ops, #operations, or a leadership DM).
How can I customize it?
  • Change the schedule or post time, for example a daily morning recap or a monthly executive summary.
  • Swap the destination from a channel to a direct message, or send to multiple channels.
  • Narrow the carriers compared, or tell the agent to split the report by domestic vs international.
  • Adjust what counts as a spike or drop, for example flag anything above a 15 percent change instead of the default.

Frequently asked questions

Do I need a paid ShipStation plan to use this?
You need a plan that allows API access. Once you have access, you generate an API key from Settings, Account, API Settings in ShipStation and paste it into General Input. Sandbox keys work too, but obviously they only see sandbox data.
Can I run this for a different period than weekly?
Yes. Tell the workflow author you want a daily, biweekly, or monthly cadence. The agent will adjust both the schedule and the date range it pulls from ShipStation.
How do I change which Slack channel it posts to?
Pick the channel when you first connect Slack. You can change it later from the workflow's edit screen, and you can also point it at a DM or multiple channels if you want.
Will it work if I only ship with one carrier?
Yes. The digest will still report total spend, volume, average cost per shipment, the priciest shipment of the week, and the week over week trend for that one carrier.
What if a week has zero shipments?
The digest still posts. It will say there was no activity in the window and skip the per-carrier breakdown rather than send a blank report.

Stop logging into ShipStation to read off the weekly numbers.

Connect ShipStation and Slack once, and Geni posts a fresh shipping performance digest every Monday at 9am.