Slack + Google Sheets, never miss customer inquiries
Customer inquiries slip through cracks for boring reasons. An email lands in the wrong inbox, a web form notification gets buried, and suddenly you are apologizing for a “missed message” that should have been handled the same day.
Marketing managers feel it when leads go cold. Support leads feel it when “urgent” threads get lost in a shared mailbox. Business owners feel it in the form of refunds, churn, and awkward follow-ups. This Slack Sheets routing setup gives you one place to see every inquiry, plus a fast alert path when something needs attention.
This workflow pulls messages from email and web forms, routes them to the right Slack channel, logs everything in Google Sheets, and sends a Gmail receipt to the customer. You will see what it does, what you need, and how to adapt it to your team.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Slack + Google Sheets, never miss customer inquiries
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0@{ icon: "mdi:message-outline", form: "rounded", label: "Email Trigger", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook - Web Form"]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/html.dark.svg' width='40' height='40' /></div><br/>Extract Email Content"]
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Parse Email Data", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Parse Webhook Data", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge Inquiries"]
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route by Inquiry Type", pos: "b", h: 48 }
n7@{ icon: "mdi:database", form: "rounded", label: "Save to Google Sheets", pos: "b", h: 48 }
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Notify Urgent - Slack"]
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Notify General - Slack"]
n10@{ icon: "mdi:message-outline", form: "rounded", label: "Send Auto-Reply Email", pos: "b", h: 48 }
n0 --> n2
n5 --> n6
n5 --> n10
n3 --> n5
n4 --> n5
n1 --> n4
n2 --> n3
n6 --> n7
n6 --> n8
n6 --> n9
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n6 decision
class n7 database
class n1 api
classDef customIcon fill:none,stroke:none
class n1,n2,n5,n8,n9 customIcon
The Problem: Inquiries spread across channels
When customer messages come in from multiple places, your process usually becomes “check everything, constantly.” Email lives in an inbox. Web forms live in a different tool. Slack is where the team actually talks. So people forward screenshots, copy/paste the message into a channel, and then someone else retypes it into a spreadsheet later (maybe). It works right up until it doesn’t. One missed urgent subject line, one form submission without a notification, and you have a customer wondering if you even received their message.
The friction compounds. Not because any single step is hard, but because you do it dozens of times per week.
- It is easy to miss a message when email and web forms are checked by different people on different schedules.
- Manual handoffs create gaps, so “urgent” inquiries sometimes get treated like normal ones until it’s too late.
- Without a reliable log, you waste time reconstructing what happened when a customer asks for an update.
- Reply confirmations are inconsistent, which makes customers send follow-ups that add even more load.
The Solution: Route, log, and acknowledge every inquiry
This n8n workflow centralizes inquiries from two common sources: an IMAP inbox and a web form webhook endpoint. When an email arrives, the workflow extracts the readable message from HTML, then maps the details you actually care about (name, email, subject, message, timestamp, and source). When a web form submission comes in, it maps the same fields from JSON, so both channels end up in one clean, consistent format. From there, everything gets merged into a single stream, routed by inquiry type (urgent, billing, general), posted to the right Slack channel, and logged to a Google Sheet for tracking. Finally, it sends an automatic Gmail acknowledgment so the customer knows they were heard.
The workflow starts with either an incoming email or a web form submission. It normalizes the data, routes it based on the subject line or form type, and then pushes the same inquiry to Slack and Google Sheets. The customer also receives a simple receipt email, which cuts down on “did you get this?” follow-ups.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you receive 30 inquiries a week, split between email and a website form. Manually, it is common to spend about 5 minutes per message copying details into a sheet, posting to Slack, and sending a quick “received” reply, which is roughly 2.5 hours weekly. With this workflow, the “work” becomes opening Slack when the alert hits and replying when you are ready, while Sheets logging and the Gmail receipt happen automatically. You still answer customers, obviously. You just stop doing the same admin steps over and over.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for the central inquiry log
- Slack to notify the right channel instantly
- IMAP email account (use your mailbox provider settings page)
- Gmail account to send the acknowledgement receipts
Skill level: Beginner. You will connect accounts, paste a webhook into your form tool, and match a few field names.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
New inquiry arrives. The workflow triggers on two paths: an incoming email via IMAP, or a web form submission hitting your webhook URL.
The message gets cleaned and standardized. Emails are stripped down to readable text, then both email and form submissions are mapped into the same set of fields (name, email, subject, message, source, timestamp, and inquiry type).
Routing happens automatically. Based on the inquiry type (like “urgent,” “billing,” or “general”), n8n posts a Slack notification to the right channel and logs the inquiry into Google Sheets.
The customer gets a receipt. Gmail sends an acknowledgment email so the person knows their message made it through, even if your team replies later.
You can easily modify inquiryType rules to support more categories or different Slack channels based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Webhook Trigger
Set up the web form entry point so external submissions can enter the workflow.
- Add and open Web Form Hook.
- Set Path to
customer-inquiry. - Set HTTP Method to
POST. - Set Response Mode to
lastNode. - Copy the generated webhook URL to your form tool.
Step 2: Connect Email Intake and HTML Parsing
Bring in email-based inquiries and extract clean text from HTML email bodies.
- Add Inbound Email Listener and connect your IMAP inbox settings.
- Connect Inbound Email Listener to Extract Email Body.
- In Extract Email Body, set Operation to
extractHtmlContent. - Set Data Property Name to
{{ $json.html }}. - Under Extraction Values, set CSS Selector to
bodyand Key totext.
Step 3: Set Up Field Mapping for Email and Web Form Inputs
Normalize data from both sources into a single schema used throughout the workflow.
- In Map Email Fields, keep Include Other Fields enabled.
- Map customerName to
{{ $json.from.name }}and customerEmail to{{ $json.from.address }}. - Map subject to
{{ $json.subject }}and message to{{ $json.text }}. - Set source to
emailand receivedAt to{{ $json.date }}. - Set inquiryType to
{{ $json.subject.toLowerCase().includes('urgent') || $json.subject.toLowerCase().includes('緊急') ? 'urgent' : ($json.subject.toLowerCase().includes('billing') || $json.subject.toLowerCase().includes('請求') ? 'billing' : 'general') }}. - In Map Form Fields, keep Include Other Fields enabled.
- Map customerName to
{{ $json.body.name }}, customerEmail to{{ $json.body.email }}, and subject to{{ $json.body.subject }}. - Map message to
{{ $json.body.message }}, source towebform, and receivedAt to{{ $now }}. - Set inquiryType to
{{ $json.body.type || 'general' }}.
body (e.g., body.name, body.email) to match the expressions in Map Form Fields.Step 4: Combine and Route Requests
Merge the two input sources and route requests by inquiry type.
- Open Combine Requests and set Mode to
combine. - Set Combine By to
combineByPosition. - Connect Map Email Fields and Map Form Fields into Combine Requests (indices 0 and 1 respectively).
- Configure Route by Request Type with three outputs using Equals on
{{ $json.inquiryType }}:general,urgent, andbilling. - Note that Combine Requests outputs to both Route by Request Type and Send Acknowledgement in parallel.
Step 5: Configure Output and Notification Nodes
Log inquiries to Google Sheets, post Slack notifications, and send acknowledgements.
- In Log to Sheets, set Operation to
appendOrUpdate. - Set Document ID to
<__PLACEHOLDER_VALUE__Google Sheets Document ID__>and Sheet Name to<__PLACEHOLDER_VALUE__Sheet Name (e.g., Inquiries)__>. - Keep the auto-mapped columns for customerName, customerEmail, subject, message, source, receivedAt, and inquiryType.
- In Slack Urgent Alert, set Channel to
<__PLACEHOLDER_VALUE__Slack Channel ID for Urgent Alerts__>and keep the message template as configured. - In Slack General Notice, set Channel to
<__PLACEHOLDER_VALUE__Slack Channel ID for General Inquiries__>and keep the message template as configured. - In Send Acknowledgement, set Send To to
{{ $json.customerEmail }}and Subject toRe: {{ $json.subject }}. - Confirm the email Message body remains the provided Japanese acknowledgement text.
Step 6: Test and Activate Your Workflow
Validate each path to ensure inquiries are logged and notifications are sent as expected.
- Click Execute Workflow and submit a test web form to trigger Web Form Hook.
- Send a test email to the monitored inbox to trigger Inbound Email Listener.
- Confirm that Combine Requests sends data to Route by Request Type and Send Acknowledgement in parallel.
- Verify a new row appears in the Google Sheet via Log to Sheets.
- Confirm Slack messages arrive in the correct channels from Slack Urgent Alert or Slack General Notice.
- Check that Send Acknowledgement emails the sender with the correct subject and message.
- When satisfied, toggle the workflow to Active for production use.
Common Gotchas
- Slack credentials can expire or your app may not have permission to post in a private channel. If things break, check your Slack app permissions and the channel access first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Gmail can fail quietly if the “From” identity is not allowed or if you hit sending limits. Check the Gmail node execution output and confirm the sending account is authorized for that address.
Frequently Asked Questions
About 30 minutes if your inbox, Slack, and Sheet are ready.
No. You will connect accounts and map a few fields. The only “technical” piece is pasting the webhook URL into your form tool.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Gmail/IMAP provider limits (usually free) and any form tool costs you already pay.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and it is honestly the best place to personalize it. Update the routing rules in the “Route by Request Type” step and add a new Slack channel destination if needed. Common tweaks include adding “technical support,” splitting “billing” into its own channel, and changing how inquiryType is detected from the email subject line.
Usually it’s expired credentials or the Slack app doesn’t have permission to post in the channel you picked. Reconnect Slack in n8n, then confirm the channel is accessible (private channels often need an explicit invite). If it fails only during busy periods, you may also be hitting Slack rate limits, so spacing messages or batching can help.
On n8n Cloud, it depends on your plan’s monthly executions, but most small teams are fine well into the thousands of inquiries per month. If you self-host, there’s no execution limit from n8n, it mainly comes down to your server size and email provider limits. In practice, this workflow handles normal support volumes comfortably because each inquiry is a small payload and the steps are lightweight.
Sometimes, yes. If you need two triggers (IMAP plus webhook), more routing rules, and a clean “single stream” merge, n8n tends to stay simpler as the logic grows. It is also easier to self-host, which matters if you are processing a lot of inquiries and do not want per-task pricing. Zapier or Make can still be a great fit for a basic two-step handoff, especially if your team already uses them. Talk to an automation expert if you want a quick recommendation for your specific volume and tools.
You get a clean Slack signal, a dependable Google Sheets log, and customers who stop wondering if their message disappeared. Set it up once, then let the workflow do the clerical work.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.