🔓 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: inventory approvals, fewer stockouts

Lisa Granqvist Partner Workflow Automation Expert

Inventory looks “fine” right up until it isn’t. A receipt gets logged late, someone pulls materials without telling anyone, and now production is stuck because the spreadsheet was quietly wrong. This inventory approvals automation fixes that gap.

Operations Managers feel the pain when the floor is waiting on materials. A Marketing lead running a small product line sees it as delayed launches. And business owners just see the same problem in a different language: avoidable surprises.

This n8n workflow turns receipts and issue requests into clean, synced records (Google Sheets + Supabase), then handles approvals and low-stock emails in Gmail. You’ll see what it automates, what results you can expect, and what you need to run it.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Google Sheets + Gmail: inventory approvals, fewer stockouts

The Problem: Inventory data drifts, then breaks

Manual inventory tracking usually fails in boring ways. A raw-material receipt comes in, someone means to update the sheet “after lunch,” and it slips. Issue requests get handled in Slack, on paper, or by a quick tap on the shoulder, which never makes it into your records. Then you’re stuck reconciling two truths: what the spreadsheet says and what the shelf actually has. The cost isn’t only stockouts. It’s the mental load of second-guessing every number, plus the time spent chasing approvals, digging up who approved what, and explaining why you ran out again.

The friction compounds. These are the usual failure points that keep showing up.

  • Receipts get recorded late, so your “current stock” is always behind reality by a day.
  • Issue requests are approved in scattered places, which means there’s no clean audit trail when questions come up.
  • Low-stock checks happen when someone remembers, and honestly, nobody remembers during busy weeks.
  • Duplicated or inconsistent product IDs create silent errors that only surface during production.

The Solution: Real-time inventory updates with email approvals

This workflow creates one reliable path for raw materials to enter and leave inventory. When a receipt is submitted (typically from a form), n8n normalizes the fields, calculates totals, and records the event in Google Sheets while also writing to Supabase for redundancy and reporting. When a material issue request comes in, the workflow validates the request, checks available stock, then sends an approval email through Gmail with an approve/reject link. Once the approver responds, n8n captures that decision, updates the request status, deducts stock if approved, and re-checks thresholds. If inventory drops under your minimum level (default is 50), Gmail alerts go out immediately, so you find out before the stockout hits.

The workflow starts with two inputs: receipts and issue requests (both via webhooks). In the middle, it cleans the data, checks product existence, updates Sheets and Supabase, then routes approvals and stock alerts through Gmail. The output is simple: your records stay consistent, approvals are logged, and low stock triggers an email without anyone babysitting the spreadsheet.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you log about 10 receipts a week and handle 15 issue requests. Manually, if each one takes roughly 10 minutes to update the sheet, check stock, and message someone for approval, that’s around 4 hours weekly. With this workflow, submitting the form takes about a minute, then n8n updates Sheets and Supabase in the background while Gmail handles the approval click. You still review exceptions, but the routine work mostly disappears.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets for your receipt and issue logs
  • Gmail to send approvals and low-stock alerts
  • Supabase API key and URL (get it from your Supabase project settings)

Skill level: Intermediate. You’ll connect credentials, map a few fields, and paste webhook URLs into your form tool.

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

How It Works

A receipt or issue request hits a webhook. Your form submission (for raw materials received or materials requested) triggers the workflow immediately, so updates don’t wait for someone to “do admin later.”

The workflow cleans and validates the data. n8n standardizes product IDs and quantities, calculates totals for receipts, and rejects bad inputs before they pollute your inventory history.

Stock is updated in two places. Google Sheets is updated for day-to-day visibility, and Supabase is updated for consistency and easier downstream reporting. Existing products get their stock incremented; new products get inserted as new rows/records.

Approvals and low-stock alerts go through Gmail. For issue requests, the approver receives an email with an approval link, and the callback updates both the request status and stock if approved. After any change, low stock is checked and alerts are emailed if you’ve dropped below the threshold.

You can easily modify the low-stock threshold to match your reorder policy based on lead time and minimum order quantities. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Webhook Trigger

This workflow starts from three webhook endpoints to capture raw materials intake, issue requests, and approval callbacks.

  1. Open Raw Materials Webhook and set Path to Pb-raw-materials with HTTP Method POST.
  2. Open Issue Request Webhook and set Path to raw-materials-issue with HTTP Method POST.
  3. Open Receive Approval Callback and set Path to /approve-issue.
  4. Ensure the approval email link in Normalize Issue Payload matches your n8n domain: Approval Link uses https://your-n8n-domain/webhook/approve-issue?submissionId={{ $json.body['Submission ID'] }}.
⚠️ Common Pitfall: If your n8n instance URL changes, update the approval link in Normalize Issue Payload or approval callbacks will fail.

Step 2: Connect Google Sheets

Google Sheets drives the inventory database, issue logs, and raw materials intake records across multiple nodes.

  1. In Add Material Request Row, select the document Plumbee Raw Material Delivery (Responses) and sheet Materials Issued, with Operation set to append.
  2. In Append Raw Materials Row, select the document Plumbee Raw Material Delivery (Responses) and sheet Raw Materials, with Operation set to append.
  3. In Update Stock Sheet and Update Stock Sheet Main, keep Operation as update and ensure Matching Columns includes Product ID.
  4. Ensure all stock lookup nodes—Check Stock for Issue, Fetch Existing Stock, Lookup Stock Sheet, Lookup Stock Sheet Main, and Fetch Stock for Issue Update—filter by Product ID using {{ $json["Product ID"] }}.
  5. Credential Required: Connect your Google Sheets credentials to all Google Sheets nodes (12+ nodes handle stock, raw materials, and issue logs).
Tip: Keep sheet column names consistent (e.g., Product ID, Current Stock, Minimum Stock Level) to avoid mapping errors across updates and lookups.

Step 3: Connect Supabase

Supabase stores the canonical inventory and issue records alongside Google Sheets.

  1. In Insert Raw Material Record, set Table to Raw Materials and Data to Send to autoMapInputData.
  2. In Insert Issue Record and Update Issue Table, set Table to Materials Issued and keep Operation as update for status updates.
  3. In Lookup Product Record, Query Stock Records, Update Stock Record, Insert Stock Row, and Supabase Stock Update, set Table to Current Stock with filters based on {{ $json["Product ID"] }}.
  4. Credential Required: Connect your Supabase credentials to all Supabase nodes (9 nodes handle issue records and stock tables).

Step 4: Set Up Data Normalization and Validation

Incoming webhook data is normalized and validated before it is stored or used in calculations.

  1. In Normalize Raw Material Data, map payload fields using expressions like {{ $json.body.product_id }}, {{ $json.body.quantity_received }}, and {{ $json.body.material_name }}.
  2. In Normalize Issue Payload, set Approval Link to https://your-n8n-domain/webhook/approve-issue?submissionId={{ $json.body['Submission ID'] }} and Status to Pending.
  3. Confirm Validate Received Qty and Validate Issue Request are enabled to throw errors on invalid quantities.
  4. Review Compute Total Cost to ensure it parses Quantity Received and Unit Price correctly for total calculation.
⚠️ Common Pitfall: If your incoming webhook payload keys differ from the expected names (e.g., product_id vs Product ID), the normalization steps will output blank fields.

Step 5: Set Up Approval Routing and Email

The issue request flow enriches the request, sends approval, and processes decision callbacks.

  1. Ensure Verify Requested Amount follows Validate Issue Request and outputs to both Add Material Request Row and Insert Issue Record in parallel.
  2. Confirm Combine Lookup Streams aggregates Check Stock for Issue and Lookup Product Record before Prepare Approval Data.
  3. In Prepare Approval Data, keep the logic that sets Is Enough and Current Stock based on stock lookup and request quantity.
  4. In Email Approval Request, update Send To from [YOUR_EMAIL] and keep the subject expression Approval Required: Material Issue Request - {{ $json['Product ID'] }}.
  5. Credential Required: Connect your Gmail credentials to Email Approval Request.

Receive Approval Callback flows to Format Approval Callback then Validate Approval Details, which outputs to both Fetch Issue Request Details and Find Issue Entries in parallel before Merge Issue Lookups and Branch on Approval Decision.

Step 6: Configure Stock Updates and Low Stock Alerts

This stage updates inventory across Sheets and Supabase, and sends low stock warnings through Gmail.

  1. When approvals are approved, Fetch Stock for Issue Update flows into Compute Stock Deduction, which outputs to both Update Stock Sheet and Update Stock Record in parallel.
  2. For new raw material intake, Compute Total Cost outputs to both Append Raw Materials Row and Insert Raw Material Record in parallel.
  3. When a product is found, Compute New Stock Level outputs to both Update Stock Sheet Main and Supabase Stock Update in parallel.
  4. For new products, Deduplicate Response outputs to both Add New Stock Item and Insert Stock Row in parallel.
  5. Ensure both low stock detectors are wired: Lookup Stock SheetDetect Low Stock ACheck Low Stock FlagDispatch Low Stock Email 2, and Lookup Stock Sheet MainDetect Low Stock BRoute Low Stock AlertDispatch Low Stock Email.
  6. Credential Required: Connect your Gmail credentials to Dispatch Low Stock Email and Dispatch Low Stock Email 2.
Tip: If low stock alerts fire too often, adjust the Minimum Stock Level defaults in Add New Stock Item, Update Stock Sheet Main, and Supabase Stock Update (currently set to 50).

Step 7: Test and Activate Your Workflow

Run end-to-end tests for each webhook path and verify updates across Sheets, Supabase, and email notifications.

  1. Use the Execute Workflow button and send a sample payload to Raw Materials Webhook to confirm Compute Total Cost outputs and records are appended/inserted.
  2. Send a test request to Issue Request Webhook and verify Email Approval Request sends an email with approval/reject links.
  3. Click an approval link to trigger Receive Approval Callback and confirm Update Issue Status Sheet, Update Issue Table, and stock updates execute correctly.
  4. Check that low stock emails send when Is Low is true in both alert paths.
  5. Once validated, switch the workflow to Active for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Sheets credentials can expire or lack the right spreadsheet permissions. If things break, check the n8n Credentials page and the sheet sharing settings first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Gmail approvals can fail if the approver is signed into a different Google account than the one expected, or if the Gmail scope is too limited. Reconnect the Gmail credential and send a test approval email before going live.

Frequently Asked Questions

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

About an hour if your Sheets, Supabase, and Gmail credentials are ready.

Do I need coding skills to automate inventory approvals?

No. You will mostly connect accounts and map form fields to the right columns.

Is n8n free to use for this inventory approvals 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 Supabase and Gmail usage (usually minimal for small teams).

Where can I host n8n to run this 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 inventory approvals workflow for different low-stock rules?

Yes, and it’s one of the best tweaks to make. You can change the minimum stock threshold inside the low-stock detection logic (the Detect Low Stock code nodes and the If routing that triggers Gmail). Common customizations include different thresholds per product, separate alerts for “reorder now” vs. “watch,” and sending alerts to a shared inbox instead of one person.

Why is my Google Sheets connection failing in this workflow?

Usually it’s permissions or an expired OAuth connection. Reconnect the Google Sheets credential in n8n, then confirm the spreadsheet is shared with the same Google account used by the credential. Also double-check the Sheet ID and tab names because a renamed tab will break lookups. If it fails only under load, you may be hitting Google API limits, so slow down batches or reduce parallel runs.

How many requests can this inventory approvals automation handle?

If you self-host, there’s no execution cap (it mostly depends on your server and Google API limits).

Is this inventory approvals automation better than using Zapier or Make?

Often, yes, because approvals, branching, and “write to two systems then reconcile” logic gets expensive and awkward in simpler tools. n8n handles multi-branch flows (like approved vs. rejected) cleanly, and the webhook-to-webhook approval callback pattern is a natural fit. You also get the option to self-host, which matters once you’re processing lots of requests. Zapier or Make can still be fine for a lightweight version, but you’ll likely end up compromising on the audit trail or paying more as volume grows. Talk to an automation expert if you want a quick recommendation based on your volumes.

Once receipts, issues, approvals, and alerts run through one system, inventory stops being a weekly guessing game. Set it up, trust the numbers, and get back to work that actually moves the business.

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