Google Sheets Inventory Reorder Automation
On a schedule, the flow checks an inventory Google Sheet for items at or below reorder point, drafts purchase-order rows or emails to suppliers, logs the PO in a Dataverse table, and updates the sheet's on-order quantity and status. Automates low-stock reordering straight from a Google Sheet.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
This flow automates low-stock reordering from an inventory Google Sheet. On a daily schedule it reads every inventory row, keeps only the items whose current quantity is at or below their reorder point, logs a purchase order to a Microsoft Dataverse table, emails the supplier (via Office 365 Outlook), and writes the on-order quantity and status back to the originating sheet row so the same item is not reordered next run. Why it matters: Manual reorder checks lead to stockouts or over-ordering. Automating the reorder-point check, PO logging, and supplier notification keeps stock healthy with a fully auditable trail — while the business team keeps working in a familiar Google Sheet. Status: Ships Off (demo). Going live requires only authorizing the three connections and setting the three environment variable values.
Use Case
A small operations/finance team tracks inventory in a Google Sheet and wants reorders triggered, recorded, and communicated automatically. Each row carries its own reorder point, target reorder quantity, and supplier email, so purchasing logic lives in the sheet (no flow edits needed to change thresholds or suppliers). Expected sheet columns: SKU, ItemName, Quantity, ReorderPoint, ReorderQuantity, SupplierEmail, OnOrderQty, Status.
Flow Architecture
Recurrence
RecurrenceRuns the inventory check once per day (Day / 1, 7:00 AM ET).
Initialize variables
Initialize VariableLoads spreadsheet ID, worksheet name, fallback purchasing email, on-order status label, and a run correlation id.
Get Inventory Rows
Google Sheets — GetItemsReads all inventory rows (body/value).
Filter Low Stock
Filter arrayKeeps rows where Quantity is at or below ReorderPoint.
Apply to each Low Stock Item
ForeachProcesses each low-stock item: compose PO number, create PO record, email supplier, write back.
Create PO Record
Microsoft Dataverse — CreateRecordLogs the PO to the Inventory Reorder PO table.
Send Reorder Email
Office 365 Outlook — SendEmailV2Emails the supplier (or fallback) the reorder request.
Update Sheet Row
Google Sheets — PatchItemWrites on-order qty + status back to the sheet row so the item is not reordered next run.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_GoogleSheetSpreadsheetId | String | <configure> | Google Sheets file ID — the dataset for all Sheets actions. |
| flowlibs_GoogleSheetWorksheetName | String | Inventory | Worksheet/tab name — the table for all Sheets actions. |
| flowlibs_PurchasingEmail | String | alerts@yourcompany.com | Fallback recipient when a row has no SupplierEmail. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Google Sheets | shared_googlesheet | GetItems PatchItem |
| Microsoft Dataverse | shared_commondataserviceforapps | CreateRecord |
| Office 365 Outlook | shared_office365 | SendEmailV2 |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Skip already-on-order items
- Extend Filter_Low_Stock to also require Status not equal to On Order so reminders aren't duplicated between runs.
- EOQ
- Replace the ReorderQuantity column with an economic-order-quantity calculation in a Compose before Create_PO_Record.
- Approval gate
- Insert an Approvals StartAndWaitForAnApproval before Send_Reorder_Email for orders above a value threshold.
- Receipt reconciliation
- Add a companion flow that clears OnOrderQty/Status when stock is received.
- Cadence
- Change the Recurrence trigger frequency/time to match your purchasing rhythm.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Low-stock filter (Filter_Low_Stock where)
Keeps items at or below their reorder point.
EXPR.02PO number
Builds a unique PO number from timestamp + SKU.
EXPR.03Supplier with fallback
Uses the row's supplier email or the configured fallback.
EXPR.04Sheet row id for PatchItem
Row key used to write back to the correct row.
EXPR.05Whole-item write-back (PatchItem item)
Passed as a single object to keep the Google Sheets dynamic schema clean.
Customize & download
Generate a ready-to-import copy of this solution with your environment-variable values baked in — available on Base, Pro, or Team.
Upgrade to customize
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.