Turn your pantry sheet into a ready-to-buy Instacart cart

Every Thursday we check your pantry sheet, find what is running low, and post a one-click Instacart cart to Slack so nobody retypes a shopping list.

Deterministic Code
InstacartGoogle SheetsSlackOperationsNotifications & AlertsData Sync
PromptCreate

Every Thursday at 9am, check our office pantry inventory in Google Sheets and hand our office manager a ready-to-buy Instacart cart for everything that is running low. Use a cron trigger.

Start by reading the Pantry Inventory tab with the Google Sheets Get Values operation. Each row holds an item name, a UPC barcode, the unit we buy it in, the current count on hand, and the par level we want to keep in stock. Treat the first row as headers and resolve columns by header name rather than fixed positions, so the sheet can be reordered without breaking the run.

Keep only the rows where the current count is below the par level, and compute the reorder quantity as par level minus current count. Skip rows missing an item name or with non-numeric counts. If no rows are below par, end the run immediately without posting to Slack and without writing to the sheet, so the channel stays quiet on well-stocked weeks.

Build the cart with the Instacart Create Shopping List Page operation, turning each short row into one line item. Reference the product by upcs when the row has a UPC and by name when it does not. Note that upcs and product_ids are mutually exclusive on a single line item, and UPCs take priority for product matching. Put the reorder quantity and unit into line_item_measurements, which is the shopping-list field, not measurements, which is recipe-only. Stick to each, lb, and oz for pantry goods and map anything unrecognized to each.

Instacart returns a 400 when the same identifier appears on more than one line item, so dedupe rows before building the payload: group by UPC when present and by lowercased item name when not, summing the reorder quantities of merged rows. Expose a max items cap as a configurable knob defaulting to 50, and take the largest shortfalls first when the list exceeds it.

Post the result to Slack with the Send a Message operation in our office ops channel. Include how many items are short, an itemized list with each item name plus its reorder quantity and unit, and the one-click Instacart link from products_link_url so the office manager picks a store and checks out without retyping anything. Format the message with Slack mrkdwn.

Finally, use the Google Sheets Update Values operation to stamp the run date and the generated Instacart link back onto the sheet, so we have a record of what was reordered and when. Keep in mind the generated link expires after 30 days by default.

Example output

6 pantry items are below par this week. • Cold brew concentrate (32 oz) x 4 • Oat milk (each) x 6 • Sparkling water, lime (each) x 12 • Ground coffee, dark roast (lb) x 3 • Granola bars (each) x 24 • Paper towels (each) x 8 One-click cart: https://www.instacart.com/store/partner_recipe/... Pick a store, review, and check out. Sheet has been stamped with today's run.

Additional information

What does this prompt do?
  • Reads your pantry inventory sheet every Thursday morning and compares what is on hand against the target level you set for each item.
  • Builds a ready-to-buy Instacart cart with only the items that are short, at the exact quantity needed to get back to your target.
  • Posts the shortage list and a one-click checkout link to your office ops Slack channel, so your office manager just picks a store and checks out.
  • Stamps the run date and the cart link back onto the sheet, and stays completely silent on weeks when nothing is running low.
What do I need to use this?
  • A Google Sheet with a Pantry Inventory tab, one row per item you stock
  • Each row needs an item name, the unit you buy it in, the current count, and the target level you want to keep on hand
  • A barcode column is optional, but items that have one get matched to the right product much more accurately
  • A Slack workspace and the channel your office team actually watches
  • An Instacart account with access to their developer platform, which is what generates the shareable cart link
How can I customize it?
  • Change the day and time. Thursday at 9am is just a starting point; some offices run it Monday morning, others twice a week.
  • Point it at a different channel, or send it as a direct message to whoever actually does the ordering.
  • Set a cap on how many items land in a single cart, or only reorder once an item falls a certain amount below target instead of any amount.

FAQs

What happens on a week when nothing is running low?
Nothing at all. The run ends quietly without posting anything, so your channel stays clean and people keep paying attention on the weeks it does fire.
Do I need a barcode for every item?
No. Barcodes give the most accurate product match, but any row without one is matched on the item name instead. You can mix both in the same sheet.
Does this actually place the order and spend money?
No, and that is deliberate. It builds the cart and hands your office manager a link. They pick the store, review the cart, and check out, so a person always approves the spend.
Can I use this for things other than pantry snacks?
Yes. Anything you track in a sheet with a current count and a target level works the same way, including cleaning supplies, break room stock, or event supplies.
What if the same item shows up on two rows?
Duplicate items get merged and their quantities added together before the cart is built, so you will not end up with the same product listed twice.

Related templates

Turn website roof inspection requests into JobNimbus leads

New roof inspection requests from your website form land in JobNimbus within a minute, with no duplicate records and nothing retyped by your team.

JobNimbus
Google Forms
Slack
Agentic Task
Flag at-risk students in Canvas before they fall behind

Every weekday at 7am, your active courses are checked for missing work, silent logins, and slipping grades, with a ranked list sent to your advising channel.

Canvas
Google Sheets
Slack Bot
Agentic Task
Triage new Jira Service Management requests before anyone opens them

Every new customer request gets a priority, triage labels, a friendly reply with the right help article, and a Slack ping only when it is truly urgent.

Jira Service Management
Jira
Slack
Agentic Task
Weekly Canvas grading backlog report in Slack and Sheets

Every Monday at 8am, see exactly which assignments have work waiting, sorted worst first, posted to Slack and logged to a spreadsheet.

Canvas
Slack Bot
Google Sheets
Deterministic Code
Risk-check every dependency upgrade pull request in GitHub

When a bot opens a version bump pull request, we read the real documentation for that exact version and tell you whether it is safe to merge.

Context7
GitHub
Slack
Agentic Task
Launch an Ironclad contract when a HubSpot deal is won

The moment a deal hits Closed Won, the right contract starts in Ironclad, the link lands on the deal, and your sales channel hears who owns the next step.

Ironclad
HubSpot
Slack
Agentic Task

Stop retyping the pantry list into a shopping cart.

Let the sheet do the counting and hand your office manager a cart that is ready to check out.