Daily ShipStation postage balance check, posted to Slack
Every weekday morning, get a Slack alert for any ShipStation carrier projected to run out of postage in the next 5 business days.
Build me an agent workflow that runs every weekday morning at 9am ET and warns our operations team in Slack before any ShipStation postage account runs dry.
Use a cron trigger scheduled for weekday mornings. When the workflow runs, the agent should call ShipStation's List Carriers operation to pull every connected carrier and read each carrier's current balance. For each carrier that exposes a balance (typically prepaid USPS and Stamps.com style accounts), look at how fast we're burning postage by calling ShipStation's List Labels operation filtered to that carrier_id over the last 7 days. Sum the shipment_cost amount values across those labels and divide by 7 to get an average daily spend per carrier. Carriers that don't expose a balance (e.g. negotiated UPS or FedEx accounts) should be skipped silently.
For each balance-tracking carrier, divide the current balance by the average daily spend to compute estimated days of runway. Flag any carrier whose runway is 5 business days or less. If a carrier has no labels in the last 7 days, include it with its current balance but mark it as 'no recent activity' so we don't divide by zero and don't pretend it's at risk.
Post the result as one Slack message using Send a Message into a channel the user picks at setup (default suggestion: #shipping-ops). The message should lead with any at-risk carriers, one block each, showing the carrier name, current balance, the 7-day average daily spend, and the estimated days of runway. End with a single-line 'OK' footer listing the remaining healthy carriers and their balances so the team gets a daily confirmation the check ran without flooding the channel.
If no carriers are at risk, still send the daily recap so the team knows the check ran successfully. If List Carriers returns nothing or the call errors out, post a short error notice in the same channel instead of going silent. Keep the message in Slack mrkdwn formatting (single asterisks for bold, plain currency strings).
Additional information
What does this prompt do?
- Checks every ShipStation carrier each weekday morning and reads its current postage balance.
- Estimates how many days of runway each carrier has left, based on the last 7 days of label spend.
- Posts a Slack alert that flags any account on track to run out within 5 business days, with the current balance and recent daily average.
- Lists the rest of your carriers in a quiet one-line footer so the channel only gets noisy when something actually needs attention.
What do I need to use this?
- A ShipStation account with USPS, Stamps.com, or similar prepaid postage carriers connected.
- A Slack workspace and a channel where you want the alerts to land.
- Permission for the Slack user signing in to post messages in that channel.
How can I customize it?
- Change the time the check runs, or have it run every day instead of just weekdays.
- Adjust the runway threshold (default is 5 business days) to be more or less cautious.
- Pick a different Slack channel, or send a direct message to your shipping lead instead of broadcasting to a team channel.
Frequently asked questions
Will this work for UPS or FedEx accounts?
How does it know how fast we're burning through postage?
Will the Slack channel get spammed every day?
Can I send the alert to more than one channel?
What if a carrier was just topped up and the recent spend looks low?
Stop finding out about postage outages from failed labels.
Connect ShipStation and Slack once, and Geni warns you every weekday morning before any carrier runs out of funds.