Weekly Square restock brief, one message per supplier

Every Monday at 7am, see which Square products will run out first based on real sales speed, with a ready to send order list for each supplier.

Agentic Task
SquareSlack BotGoogle SheetsOperationsAI ReportsDaily Digests
PromptCreate

Every Monday at 7am, build a supplier by supplier reorder brief from my Square inventory and post it to Slack, one message per supplier.

Start by getting my locations from Square with List Locations, then pull my full product list with List Catalog, covering items and item variations including the vendor recorded against each variation. Get current stock on hand for every tracked variation with Batch Retrieve Inventory Counts.

Work out how fast each item is genuinely selling instead of relying on a flat stock threshold. Use Search Orders to pull completed orders and their line items across the trailing 30 days, add up units sold per variation, and turn that into an average daily sales rate. Then calculate days of cover for each item as current stock on hand divided by that daily rate. Rank the reorder list by days of cover ascending, so the items about to run out come first rather than the items that merely have a small number on hand. Note that orders taken offline on Square Point of Sale can take up to 72 hours to appear, so treat very recent figures as provisional.

Ignore discontinued and seasonal lines. Run a second Search Orders pass over the trailing 60 days and drop any item that has sold zero units in that window. Also skip items Square does not track stock for, since there is no meaningful cover figure for them.

Group the results by supplier so each message maps to one purchase order. Use Search Vendors to list active vendors and Bulk Retrieve Vendors to pull details for the vendor IDs attached to the items being reordered. If an item has no vendor recorded in Square, collect those lines into a final unassigned supplier section rather than dropping them.

For each line, recommend an order quantity. Order enough to bring the item back up to roughly 45 days of cover at its current sales rate, rounded to a sensible whole number. Use your judgement on the edge cases: items with only a few days of sales history, items where one large spike order is distorting the average, and items already sitting on plenty of cover that need nothing this week. Flag anything already at zero stock as urgent.

Post one message per supplier to the #purchasing channel using the Slack Bot Send a Message action. Lead with the supplier name and how many lines need ordering, then give a compact list showing item name, current stock, average units sold per day, days of cover, and recommended order quantity. Put the urgent out of stock lines at the top. Keep each message short enough to act on without opening anything else.

Finally, append every recommended reorder line to the tracking tab of my purchasing Google Sheet using Append Values, so purchasing keeps a running history. Write one row per line with the run date, supplier name, item name, variation, current stock, units sold in the last 30 days, average daily sales, days of cover, and recommended order quantity.

Example output

Reorder brief for Peak Coffee Roasters, 4 lines to order URGENT, out of stock Ethiopia Yirgacheffe 250g, 0 on hand, 4.2 sold/day, 0 days cover, order 190 Running low House Espresso 1kg, 11 on hand, 2.8 sold/day, 3.9 days cover, order 115 Decaf Colombia 250g, 9 on hand, 1.1 sold/day, 8.2 days cover, order 41 Cold Brew Concentrate, 22 on hand, 1.6 sold/day, 13.8 days cover, order 50 Based on 30 days of sales to 9 Aug. Recommended quantities top each item back up to about 45 days of cover.

What does this prompt do?

  • Works out how fast every product in your Square catalog is really selling over the last 30 days, then how many days of stock you have left.
  • Ranks your buying list by what runs out soonest rather than by a fixed low stock number, so a fast seller with 20 left outranks a slow one with 3.
  • Posts one Slack message per supplier, each reading like a ready to send purchase order, and ignores anything that has not sold in 60 days.
  • Logs every recommended order line to a Google Sheet so purchasing has a running history to look back on.

What do I need to use this?

  • A Square account with inventory tracking turned on for the products you want watched
  • Suppliers recorded against your items in Square, so the brief can group orders by who you buy from
  • A Slack workspace and a channel for the brief to land in, such as #purchasing
  • A Google Sheet with a tab for tracking reorder history
  • At least a month of sales history in Square so the sales speed figures mean something

How can I customize it?

  • Change the timing. Monday at 7am suits a weekly ordering rhythm, but daily or twice weekly works the same way.
  • Set your own cover target. The default tops each item back up to about 45 days of stock, which you can raise for suppliers with long lead times.
  • Choose where it lands and what gets ignored. Send everything to one channel or split it per supplier, and widen the 60 day cutoff used to skip discontinued and seasonal lines.

FAQs

How is this different from Square's built in low stock alerts?
Square's alert fires when an item drops below a number you set, so it treats a product that sells 30 a week the same as one that sells 1 a month. This brief looks at what actually sold in the last 30 days and ranks by how many days of stock you have left, so you hear about fast movers early and stop getting nagged about slow ones.
Do I need to have suppliers set up in Square?
It works best when your items have a supplier recorded, because that is what lets it send one message per supplier. Anything without one still appears, gathered into an unassigned section at the end so nothing goes missing.
What if an item had one unusually large order last month?
The brief is written to spot that. A single bulk purchase that distorts the average gets called out rather than quietly turned into a large reorder recommendation, so you can decide whether it was a one off.
Will it try to reorder seasonal stock I have deliberately stopped selling?
No. Anything that has sold zero units in the last 60 days is left out, which covers discontinued lines and out of season stock. You can change that window to suit your range.
Does it place the orders for me?
No. It recommends what to order and how much, posts it to Slack and records it in your sheet. Sending the purchase order to the supplier stays with your team.

Related templates

Build a credential rotation checklist when someone leaves

When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.

1Password
Rippling
Slack Bot
+1
Agentic Task
Weekly Amazon S3 bucket security audit posted to Slack

Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.

Amazon S3
Slack Bot
Google Sheets
Agentic Task
Log Agorapulse social conversations to HubSpot contacts

Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.

Agorapulse
HubSpot
Slack Bot
Agentic Task
Turn procurement portal tenders into CRM deals each morning

Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.

Anchor Browser
Google Sheets
HubSpot
+1
Agentic Task
Clean up HubSpot contacts from your Amazon SES suppression list

Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.

Amazon SES
HubSpot
Slack Bot
Agentic Task
Draft polite follow-ups for emails that never got a reply

Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.

Aurinko
Google Sheets
Slack Bot
Agentic Task

Stop hearing you are out of stock from a customer.

Get a supplier ready buying list in Slack every Monday, ranked by what actually runs out first.