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.

Agentic Task
ShipStationSlackOperationsNotifications & AlertsDaily Digests

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?
Those carriers usually bill on a monthly invoice instead of carrying a prepaid balance, so they don't expose a balance to check. The workflow automatically skips any carrier that doesn't report a balance and focuses on the prepaid ones like USPS and Stamps.com.
How does it know how fast we're burning through postage?
It looks at the labels you've purchased in the last 7 days and uses the average daily spend per carrier to estimate how long your current balance will last.
Will the Slack channel get spammed every day?
No. By default it only calls out carriers that are at risk of running out soon. Healthy carriers are rolled up into one line at the bottom so you can confirm the check ran without scrolling.
Can I send the alert to more than one channel?
Yes. You can post the same summary to multiple channels, or split urgent alerts to one place and the daily recap to another.
What if a carrier was just topped up and the recent spend looks low?
The estimate uses a rolling 7-day average, so a single quiet day won't move it much. You can also tune the threshold or the lookback window when you set the workflow up.

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.