See llms.txt for all machine-readable content.

Back to Templates

Run procurement approvals with Google Sheets, Gmail, Google Docs, and Slack

Quick overview

Run purchase approvals with policy checks and multi-level routing. A form collects the request, vendor, budget and duplicate checks run, then L1 to L3 approvals by amount, with a purchase order and a full audit trail in Sheets.

How it works

  1. Receives a purchase request submission from an n8n Form and validates required fields, positive amounts, and an optional future “needed by” date.
  2. Reads vendor and budget data plus recent requests from Google Sheets to flag unpreferred/new vendors, over-budget requests, and possible duplicates from the last 30 days.
  3. Calculates the total amount and determines whether the request is auto-approved or routed through L1/L2/L3 approval levels based on amount thresholds and any policy flags.
  4. For routed requests, generates a request ID, appends a “submitted” entry to a Google Sheets audit log, and sends the first approval request by Gmail.
  5. Receives approver decisions through a webhook, rebuilds the request state from the Google Sheets audit log, and ignores duplicate/late decisions.
  6. If approved and more approval levels remain, sends the next approval request by Gmail; if rejected, emails the requester the rejection outcome.
  7. When final approval is reached (or the request is auto-approved), creates a purchase order in Google Docs, writes the PO text into the document, emails the requester the PO link, logs the approval event to Google Sheets, and posts an approval message to Slack.

Setup

  1. Connect credentials for Google Sheets, Google Docs, Gmail, and Slack in n8n.
  2. Create and populate the Google Sheets documents/tabs used for Vendors, Budgets, and AuditLog, then set the sheet IDs in the workflow configuration values.
  3. Update the approver email addresses (L1/L2/L3), approval thresholds, Slack channel ID, and the Google Drive folder ID where purchase orders should be created.
  4. Publish the purchase request form and copy the approval decision webhook URL (path: /purchase-decision) into whatever approval UI or email-link process you use to POST decisions.