Skip to main content

Handle support reply approvals with Slack, Gmail and Google Sheets

Workflow preview

Workflow preview
100%
Handle support reply approvals with Slack, Gmail and Google Sheets preview
Open on n8n.io

1. Workflow Overview

Quick Overview This workflow receives Slack interactive button clicks for support ticket approvals, looks up the matching ticket in Google Sheets, and then either replies to the customer via Gmail ...

Best for

  • Ticket Management automation workflows
  • advanced n8n builders looking for reusable templates

Tools used

n8n-nodes-base.code, n8n-nodes-base.switch, n8n-nodes-base.gmail, n8n-nodes-base.webhook, n8n-nodes-base.googlesheets, n8n-nodes-base.httprequest, n8n-nodes-base.set, n8n-nodes-base.stickynote

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by Pratistha Thapa.

Original n8n.io source

1.1 Workflow description

Title
Handle support reply approvals with Slack, Gmail and Google Sheets
Workflow name
Handle support reply approvals with Slack, Gmail and Google Sheets

Quick Overview

This workflow receives Slack interactive button clicks for support ticket approvals, looks up the matching ticket in Google Sheets, and then either replies to the customer via Gmail or records a Needs Edit/Rejected decision and updates the original Slack message.

How it works

  1. Receives a Slack interactivity POST request when a reviewer clicks an Approve, Needs Edit, or Reject button.
  2. Parses the Slack payload to extract the ticket_id, decision, reviewer details, and the Slack channel and message timestamp to update.
  3. Looks up the matching ticket row in Google Sheets using the ticket_id.
  4. Builds a shared context that combines the ticket data with reviewer metadata and chooses the reply text from final_reply or suggested_reply.
  5. If the decision is approve, replies to the customer email thread in Gmail using the stored Gmail message ID, marks the ticket as Sent in Google Sheets, and updates the original Slack message to show “Approved and sent”.
  6. If the decision is needs_edit, updates the ticket status to Needs Edit in Google Sheets and updates the original Slack message to indicate edits are required.
  7. If the decision is reject, updates the ticket status to Rejected in Google Sheets and updates the original Slack message to confirm rejection and that no email was sent.

Setup

  1. In your Slack app, enable Interactivity and set the Interactivity Request URL to this workflow’s production webhook URL for the configured path.
  2. Add a Google Sheets OAuth2 credential and set the Spreadsheet ID and Sheet tab for the ticket table, ensuring it contains columns like ticket_id, suggested_reply/final_reply, gmail_message_id, slack_channel, slack_message_ts, and status.
  3. Add a Gmail OAuth2 credential for the mailbox that should send replies, and ensure each ticket row stores the correct gmail_message_id for replying.
  4. Create an HTTP Header Auth credential for the Slack Web API (Bearer token) and verify it has permission to call chat.update in the target workspace.

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - Parse Slack Approval Action

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 2 - Route Approval Decision

Type / Role
n8n-nodes-base.switch - switch
Config choices
Version 3.4

Block 3 - Reply to a message

Type / Role
n8n-nodes-base.gmail - gmail
Config choices
Version 2.2

Block 4 - Slack Trigger

Type / Role
n8n-nodes-base.webhook - webhook
Config choices
Version 2.1

Block 5 - Update Sheet: Needs Edit

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 6 - Slack: Update Needs Edit Message

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.4

Block 7 - Update Sheet: Rejected

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 8 - Slack: Update Rejected Message

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.4

Block 9 - Lookup Tickets

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 10 - Prepare Ticket Decision Context

Type / Role
n8n-nodes-base.set - set
Config choices
Version 3.4

Block 11 - Slack: Update Approved

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.4

Block 12 - Update Sheet: Approved

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.7

Block 13 - Sticky Note

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 14 - Sticky Note1

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 15 - Sticky Note2

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 16 - Sticky Note3

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 17 - Sticky Note4

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 18 - Sticky Note5

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 19 - Sticky Note6

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 20 - Sticky Note7

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 21 - Sticky Note8

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 22 - Sticky Note9

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 23 - Sticky Note10

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 24 - Sticky Note11

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Showing the first 24 of 30 workflow blocks. Download the JSON for the full node graph.

3. Summary Table

Workflow Handle support reply approvals with Slack, Gmail and Google Sheets
Complexity advanced
Nodes 30
Categories Ticket Management
Author Pratistha Thapa
Published 10 Jun 2026

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/16255/16255.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does Handle support reply approvals with Slack, Gmail and Google Sheets do?

Quick Overview This workflow receives Slack interactive button clicks for support ticket approvals, looks up the matching ticket in Google Sheets, and then either replies to the customer via Gmail ...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your Ticket Management use case.