LOW / CODEBlueprints
operations

Multi-Step Approval Workflow

Route approval requests through a sequential chain of approvers via Slack, log decisions in Google Sheets, and send final confirmation emails.

Advanced~40 minn8nMake.com 228 downloads 826 views

Setup Instructions

1. Create a Google Sheet with columns: Request ID, Requester Email, Description, Approver 1, Approver 1 Status, Approver 2, Approver 2 Status, Final Status, Timestamp. 2. Create a new workflow with a Google Sheets trigger — set it to watch for new rows added to the sheet. 3. Add a Slack node — use the "Send Message" action with interactive buttons. Send a message to Approver 1 with the request details and "Approve" / "Reject" buttons. 4. Add a Slack Webhook trigger node to capture button click responses. Parse the callback payload to determine which button was clicked and by whom. 5. Add an IF/Router node — branch on the response. If approved, add a second Slack node to notify Approver 2 with the same button pattern. If rejected, route to a Gmail rejection notification. 6. Repeat the webhook and IF pattern for Approver 2. On final approval, add a Google Sheets node to update the row with "Approved" in the Final Status column. 7. Add a Gmail node at the end of the approval path — send a confirmation email to the original requester with all approver decisions and timestamps. 8. Test the full flow: add a row, click Approve in Slack for both approvers, and verify the sheet and email are updated correctly. Then test the rejection path.
Troubleshooting
**Slack buttons not responding:** Interactive messages require a Request URL configured in your Slack App settings under "Interactivity & Shortcuts." Ensure this URL points to your automation platform's webhook endpoint. **Wrong approver receives the message:** Double-check that the Approver columns in Google Sheets contain Slack user IDs or email addresses, not display names. Use Slack's "Lookup by Email" action if you only have email addresses. **Google Sheets update hits wrong row:** Always use the row number or a unique Request ID to target updates. Avoid relying on "last row" logic since concurrent requests can cause race conditions. **Timeout between approval steps:** Most automation platforms have a webhook timeout of 5-30 minutes. For longer approval windows, store the request state in Google Sheets and use a polling approach instead of holding the workflow open.

Need a custom version?

We can build a tailored automation workflow for your specific needs.

New blueprints weekly

Get notified when we publish new automation workflows.