🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Google Sheets + Gmail: low stock POs sent for you

Lisa Granqvist Partner Workflow Automation Expert

You don’t run out of stock because you “forgot inventory.” You run out because checking a sheet every day turns into checking it every few days, then reacting when it’s already too late.

Operations managers feel it when pickers can’t ship. A store owner feels it when customers bounce. And a busy procurement lead feels it when suppliers need “just one more detail” while you’re building POs by hand. This Google Sheets inventory automation takes the daily monitoring and the email drafting off your plate.

You’ll see how this workflow checks stock levels on a schedule, creates purchase order details for any item that’s below its threshold, emails suppliers via Gmail, and logs everything back into Google Sheets for clean tracking.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Google Sheets + Gmail: low stock POs sent for you

The Problem: Low-stock checks turn into last-minute emergencies

If your inventory lives in Google Sheets, the process usually looks “simple” on paper: open the sheet, filter low stock, calculate what to reorder, draft a purchase order, email the supplier, then remember to log what you sent. In reality, it’s constant context switching. You check stock while you’re also answering customer emails, dealing with returns, or chasing late shipments. Small mistakes creep in too: ordering the wrong quantity, emailing the wrong supplier contact, or forgetting to record the reorder, which means next week’s check is based on bad data.

The friction compounds. Here’s where it breaks down.

  • Daily stock monitoring slips, so you catch problems only after someone complains or a product page shows “out of stock.”
  • Purchase orders get built from scratch in email threads, which means every reorder feels like starting over.
  • Manual logging is easy to skip, and that’s how you end up with “Did we already order this?” moments.
  • When you scale to dozens of SKUs, the spreadsheet is still fine, but the human process around it starts to crack.

The Solution: Daily low-stock POs from Google Sheets to Gmail

This n8n workflow automates your reorder loop from end to end. It runs on a daily schedule (or whatever interval you choose), opens your Google Sheets inventory, and identifies items where current stock is below the minimum threshold you’ve defined. For each low-stock item, it calculates how many units to order, then composes purchase order details like SKU, item name, quantity needed, and supplier email. Next, it routes that info into a ready-to-send email and dispatches it via Gmail to the supplier automatically. Finally, it writes the “PO Sent” record back into Google Sheets with a timestamp, so you get an audit trail without chasing receipts in your inbox.

The workflow starts with a scheduled trigger and a sheet lookup. Then two code steps assemble the order lines and generate the purchase order email content. After that, Gmail sends the message and Google Sheets gets updated so your log stays clean.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you track 40 SKUs in Google Sheets and, on an average week, about 10 of them dip below minimum stock. Manually, you might spend roughly 10 minutes per SKU to verify numbers, calculate reorder quantity, draft an email, and log it, which is about 1.5 hours each week. With this workflow, you spend maybe 10 minutes once to set thresholds and email fields, then the daily run handles the checking, email sending, and logging while you do other work. Your “inventory time” becomes quick spot-checking, not daily admin.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets to store inventory, thresholds, and PO logs
  • Gmail to email suppliers automatically
  • Google account access (authorize Sheets and Gmail in n8n)

Skill level: Intermediate. You’ll connect accounts and map sheet columns carefully, plus do light testing to confirm emails and logs look right.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A daily schedule kicks it off. The workflow runs automatically on a timer, so reorders don’t depend on someone remembering to “do inventory” at the end of the day.

Your inventory sheet gets scanned for low stock. n8n reads rows from Google Sheets and compares current stock against each item’s minimum threshold. Only the items that actually need attention move forward.

Order quantities and PO content are generated. Two code steps calculate the quantity needed and assemble a clean purchase order message (SKU, item name, stock level, and the supplier email). A switch decides what path to take, so the workflow can handle different cases without you babysitting it.

Suppliers get the email and your sheet gets the record. Gmail sends the purchase order out, then Google Sheets gets updated with a timestamp and status like “PO Sent” so you can track what happened later.

You can easily modify the reorder rules to match your real-world purchasing habits (like case packs, lead times, or preferred suppliers) based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Schedule Trigger

This workflow starts on a daily cadence using the schedule trigger before pulling inventory data.

  1. Add and open Daily Schedule Trigger.
  2. Set the Rule interval to run daily (the default rule structure is present; specify the exact daily time you want).
  3. Connect Daily Schedule Trigger to Fetch Low Stock Items.

Step 2: Connect Google Sheets

Three Google Sheets nodes read inventory data and log purchase orders.

  1. Open Fetch Low Stock Items and select the document ID [YOUR_ID] with the sheet Inventory_Stock (gid 0).
  2. In Fetch Low Stock Items, set the filter to Inventory Status equals Low Stock.
  3. Open Retrieve PO Records and select the document ID [YOUR_ID] with the sheet Purchase Order (gid 1455016343).
  4. In Retrieve PO Records, set filters to SKU equals ={{ $json.sku }} and Order Status equals In Progress.
  5. Open Log Purchase Order, set Operation to append, and map columns using the provided expressions such as SKU={{ $('Compose Email and PO').item.json.sku }} and Order StatusIn Progress.

Credential Required: Connect your Google Sheets credentials.

⚠️ Common Pitfall: The column names referenced in Process Stock Orders (e.g., Available Qty, Min. Threshold) must match your sheet headers exactly.

Step 3: Set Up Processing Logic

The two code nodes calculate reorder quantities and build email/PO payloads.

  1. Open Process Stock Orders and confirm the JavaScript logic uses fields like Available Qty, Min. Threshold, Min Order, and Max Order to set reorder_needed and order_qty.
  2. Open Compose Email and PO and verify it generates type: "email" and type: "po" items, including po_number and order_date.
  3. Ensure the execution flow follows Fetch Low Stock ItemsProcess Stock OrdersCompose Email and PO.

Step 4: Configure Routing and Supplier Email

Items are routed to email or PO logging based on their type.

  1. Open Route Email vs PO and confirm the first rule matches ={{ $json.type }} equals email and renames output to Email.
  2. Confirm the second rule matches ={{ $json.type }} equals po and renames output to Purchase Order.
  3. Connect the Email output of Route Email vs PO to Dispatch Supplier Email.
  4. In Dispatch Supplier Email, set Send To to ={{ $json.supplier_email }}, Subject to ={{ $json.subject }}, and Message to ={{ $json.body }}.

Credential Required: Connect your Gmail credentials.

Step 5: Log Purchase Orders and Prevent Duplicates

This path ensures only new purchase orders are logged and iterates through PO lines.

  1. Connect the Purchase Order output of Route Email vs PO to Iterate Order Lines.
  2. Ensure Iterate Order Lines sends items to Retrieve PO Records for lookup in the Purchase Order sheet.
  3. In Verify Record Presence, confirm the condition checks that ={{ $json['Order Status'] }} exists to detect existing records.
  4. Send the false branch (no existing record) to Log Purchase Order so new rows are appended.
  5. Route the true branch to Idle Placeholder to skip duplicates, then back into Iterate Order Lines as configured.

⚠️ Common Pitfall: If Retrieve PO Records does not return an Order Status field, Verify Record Presence will route to Log Purchase Order for every item.

Step 6: Test and Activate Your Workflow

Validate the flow end-to-end before enabling daily runs.

  1. Click Execute Workflow to run Daily Schedule Trigger manually and pull low-stock items.
  2. Confirm Dispatch Supplier Email sends a supplier email and Log Purchase Order appends rows to the Purchase Order sheet.
  3. Check that items with existing Order Status in Retrieve PO Records are routed to Idle Placeholder and not logged again.
  4. Once verified, toggle the workflow to Active to enable daily scheduling.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Sheets access can fail if the connected Google account loses permission to the file or the sheet tab name changes. If things break, check the n8n credential connection and the spreadsheet ID first.
  • If you’re using Wait behavior or slow external calls, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses, especially when Sheets returns a lot of rows.
  • Gmail sending can silently misfire if you hit daily send limits or if supplier addresses aren’t validated. Test with a single SKU first and confirm the “From” address and reply handling match your process.

Frequently Asked Questions

How long does it take to set up this Google Sheets inventory automation?

About 30–60 minutes if your sheet is already organized.

Do I need coding skills to automate Google Sheets inventory reorders?

No. You’ll mostly connect accounts and map spreadsheet columns. The code steps are already built into the workflow, so you’re configuring, not programming.

Is n8n free to use for this Google Sheets inventory automation workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in any Google Workspace costs if your Gmail/Sheets are on a paid domain.

Where can I host n8n to run this Google Sheets inventory automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this Google Sheets inventory automation for approvals before sending POs?

Yes, but you’ll want to change the routing logic. Add an approval step before the Gmail send by adjusting the “Route Email vs PO” switch and inserting a manual approval path (for example, send an internal email or Slack message and wait for a response). Common customizations include supplier-specific templates, minimum order quantities, and ordering in case packs instead of single units.

Why is my Google Sheets connection failing in this workflow?

Usually it’s permissions or a changed spreadsheet structure. Reconnect the Google Sheets credential in n8n, confirm the spreadsheet ID is correct, and make sure the tab name and header columns still match what the workflow expects. If someone renamed “Supplier Email” to something else, the workflow may read blanks and you’ll see missing fields downstream. Also check that the connected Google account can actually open the file outside of n8n.

How many rows can this Google Sheets inventory automation handle?

Hundreds of rows are usually fine for a daily run.

Is this Google Sheets inventory automation better than using Zapier or Make?

It depends on how strict your purchasing rules are. Zapier and Make are great for simple triggers, but this workflow benefits from n8n’s branching and code-based processing, which helps when you’re calculating quantities, building multi-line emails, and writing clean logs back to Sheets. n8n also gives you a self-hosting option, which can be a big deal once you’re running daily checks across lots of SKUs. If you only need “if stock is low, send me a message,” the simpler tools may be enough. If you want a reliable reorder loop with an audit trail, n8n is a better fit. Talk to an automation expert if you want a quick recommendation based on your volume.

Once this is running, reorders happen in the background and your sheet stays honest. That’s fewer fire drills, and a lot more predictability.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal