# Internal approval workflow n8n template

> 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.

- Platform: n8n
- Download: https://www.lumeor.studio/templates/n8n/automate-internal-approvals.json
- Trigger: n8n form submission
- Credentials needed: Anthropic API, Slack, Gmail OAuth2, Google Sheets OAuth2
- Full guide: https://www.lumeor.studio/guides/automate-internal-approvals/
- Last updated: 2026-10-14

## 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](/guides/automate-internal-approvals/) for matrix design and security, or [talk to Lumeor](/start/) about Teams, Jotform or Airtable versions.

---

Source: https://www.lumeor.studio/templates/automate-internal-approvals/
Published by Lumeor Studio, Newtown, PA. hello@lumeor.studio. Get a written scope: https://www.lumeor.studio/start/
