Free n8n template

Internal approval workflow n8n template

What it does

An importable n8n workflow where staff submit requests through an n8n form, code checks the fields and picks the approval chain from your rules (manager always, finance above a threshold, no self-approval), and Claude writes a three-line summary and flags missing information. Approvers decide from a Slack DM, every decision is logged to Google Sheets, and the requester gets an email.

What this workflow does

  1. Approval request form (n8n Form Trigger) collects requester email, request type, vendor or customer, amount, cost center, justification and an optional quote link.
  2. Validate and route (Code) checks required fields, looks up the cost center’s manager, adds finance above FINANCE_THRESHOLD, and blocks self-approval by sending the requester’s own request to finance instead.
  3. Summarize with Claude (HTTP Request) returns strict JSON: a summary of at most three lines, a completeness flag and a list of missing information.
  4. Parse summary (Code) handles refusals and API errors and decides whether the request is ready, needs information or is an exception.
  5. Route request (Switch) sends ready requests to approval, incomplete ones back to the requester, and failures to Slack.
  6. Manager approval (Slack, send and wait) DMs the manager with Approve and Reject buttons and waits up to 48 hours.
  7. Manager approved? and Needs finance? (If) decide whether Finance approval runs as a second step.
  8. Record decision (Code) works out the final status (approved, rejected, expired or needs info) from whichever steps ran.
  9. Notify requester (Gmail) and Audit log (Google Sheets) send the outcome and write one row per request.
  10. Post approval exception (Slack) catches anything the workflow could not process.

Before you import

  • A current n8n version with a public URL so the form and Slack buttons can reach it.
  • A Slack app with a bot token that can send direct messages, an Anthropic API key, Gmail for notifications and a Google Sheet for the log.

Setup

  1. Import the JSON and connect the Anthropic, Slack, Gmail and Google Sheets credentials.
  2. In Validate and route, fill COST_CENTERS with each manager’s email and Slack member ID, set FINANCE and FINANCE_THRESHOLD.
  3. Make the Cost center dropdown in the form match the COST_CENTERS keys exactly.
  4. Replace REPLACE_WITH_SHEET_ID and REPLACE_WITH_SLACK_EXCEPTIONS_CHANNEL_ID.
  5. Add an Approvals log tab with headers: request_id, submitted_at, requester_email, request_type, vendor, amount, cost_center, summary, approver_role, manager_decision, finance_decision, status, decided_at.
  6. Activate the workflow and share the form’s production URL.

Test it

Submit four requests: a small purchase, one above the finance threshold, one with a one-word justification, and one where the requester is a manager. Approve, reject and ignore the Slack messages in turn (shorten the wait time while testing). Check the emails and the log rows.

Make it production-ready

  • Get the approval matrix signed off by finance before go-live, and move it to a sheet or table that finance can edit.
  • Switch the Slack response type to a custom form if rejections must include a reason.
  • Add reminders and delegates before the 48-hour expiry, using a business-hours calendar.
  • Map Slack users to an employee directory synced from your HR system so org changes do not break routing.
  • Make the audit log append-only and add an n8n error workflow.

Read the full guide on automating internal approvals for matrix design and security, or talk to Lumeor about Teams, Jotform or Airtable versions.

Next steps