

How to Route Gmail Support Emails to Slack with Zapier
When a new email arrives in a Gmail support inbox, Zapier parses the sender, subject, and body, then posts a formatted summary to a designated Slack channel so the team can coordinate a response.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Small support teams (2–15 people) who live in Slack and want email tickets visible without a dedicated helpdesk tool.
Not ideal for
Teams handling 200+ tickets/day — at that volume, a real helpdesk like Zendesk or Freshdesk with native Slack integration will cost less and track ticket state.
Sync type
real-timeUse case type
notificationReal-World Example
A 10-person SaaS company routes all email sent to [email protected] into a #support Slack channel. Before this Zap, agents checked Gmail on their own schedules and tickets sat unread for 45–90 minutes. After setup, every new email appears in Slack within 1–2 minutes with sender name, subject, and the first 300 characters of the body — the team replies in-thread before drafting the actual response in Gmail.
What Will This Cost?
Drag the slider to your expected monthly volume.
Each platform counts differently — Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.





Prices shown for annual billing. Based on published pricing as of April 2026.
Estimated ROI
1000
min saved/mo
$583
labor value/mo
Free
no platform cost
Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.
Implementation
Before You Start
Make sure you have everything ready.
Optional
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| From Name | ||
| From Email | ||
| Subject | ||
| Body Plain | ||
| Thread ID | ||
3 optional fields▸ show
| Date | |
| Labels | |
| Attachment Count |
Step-by-Step Setup
zapier.com > Dashboard > Create Zap > Trigger
Create a new Zap and connect Gmail
Log into zapier.com and click the orange 'Create Zap' button in the left sidebar. The Zap editor opens with a blank trigger slot. Click the trigger box and type 'Gmail' in the search field. Select 'Gmail' from the results — you'll see the Google logo and 'Gmail' label. You need to connect the specific Google account that owns your support inbox, not a personal account.
- 1Click 'Create Zap' in the left sidebar
- 2Click the empty trigger box labeled 'Trigger'
- 3Type 'Gmail' in the app search field
- 4Select 'Gmail' from the dropdown results
Zap Editor > Trigger > App & Event > Event dropdown
Select the 'New Email' trigger event
With Gmail selected as the trigger app, click the 'Event' dropdown below the app name. Scroll to find 'New Email' — this fires every time a new email arrives in a specified label or inbox. Do not choose 'New Email Matching Search' yet; select plain 'New Email' first to connect your account, then you'll add label filtering in the next step. Click 'Continue' after selecting the event.
- 1Click the 'Event' dropdown under the Gmail trigger block
- 2Scroll down and select 'New Email'
- 3Click 'Continue'
Zap Editor > Trigger > Gmail Account > Sign in to Gmail
Authenticate your Gmail support account
Click 'Sign in to Gmail'. A Google OAuth popup appears — sign in with the Google account tied to your support inbox. Google will ask you to grant Zapier permission to read and send email. You only need read access for this workflow, but Zapier requests both. After granting access, you'll return to the Zap editor and see your account email listed under the trigger. Click 'Continue'.
- 1Click 'Sign in to Gmail'
- 2Select the correct Google account in the OAuth popup
- 3Click 'Allow' on the permissions screen
- 4Confirm the account email shown in the editor matches your support inbox
- 5Click 'Continue'
Zap Editor > Trigger > Configure > Label/Mailbox
Configure the Gmail label filter
Zapier shows a 'Configure' screen with a 'Label/Mailbox' field. Click the dropdown and select the Gmail label you want to monitor — typically 'INBOX' for an unfiltered support inbox, or a custom label like 'Support' if you've set up Gmail filters that tag inbound support emails. If you use a dedicated support@ address in Google Workspace, selecting 'INBOX' will catch everything sent to that account. Click 'Continue' after selecting the label.
- 1Click the 'Label/Mailbox' dropdown
- 2Select 'INBOX' or your custom support label
- 3Leave all other fields blank
- 4Click 'Continue'
Zap Editor > Trigger > Test > Test trigger
Test the Gmail trigger
Click 'Test trigger' — Zapier fetches the 3 most recent emails from the selected label and shows them as sample records. Pick the sample that looks most like a real support email (a message from a customer, not an automated digest). You'll use the fields from this sample — From Name, From Email, Subject, Body Plain — in the Slack message later. Confirm the fields are populated correctly before moving on.
- 1Click 'Test trigger'
- 2Review the list of fetched email samples
- 3Click the sample that best represents a real support ticket
- 4Verify 'From Name', 'From Email', 'Subject', and 'Body Plain' fields contain real data
Zap Editor > + Add Action > Formatter by Zapier > Text > Truncate
Add a Formatter step to truncate the email body
Click the '+' button below the trigger to add an action step. Search for 'Formatter by Zapier' and select it. Choose 'Text' as the action event, then select 'Truncate' as the transform. In the 'Input' field, map the 'Body Plain' field from your Gmail trigger. Set 'Max Length' to 300 and 'Append Ellipsis' to Yes. This ensures your Slack message stays readable — a 10-paragraph support email pasted raw into Slack destroys channel readability.
- 1Click the '+' button below the Gmail trigger
- 2Search for and select 'Formatter by Zapier'
- 3Select 'Text' as the action event
- 4Select 'Truncate' as the transform type
- 5Map 'Body Plain' from the Gmail step into the 'Input' field
- 6Set 'Max Length' to 300 and enable 'Append Ellipsis'
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Zap Editor > + Add Action > Slack > Send Channel Message
Connect Slack as the action app
Click the '+' button below the Formatter step to add a second action. Search for 'Slack' and select it. Choose 'Send Channel Message' as the action event — this posts a message to a public or private channel your bot has access to. Click 'Continue', then authenticate with the Slack workspace where your #support channel lives. Zapier will ask you to authorize the Zapier Slack bot and select which workspace to connect.
- 1Click the '+' button below the Formatter step
- 2Search for and select 'Slack'
- 3Select 'Send Channel Message' as the action event
- 4Click 'Continue'
- 5Click 'Sign in to Slack' and authorize the Zapier bot in your workspace
Zap Editor > Slack Action > Configure > Channel + Message Text
Configure the Slack message fields
In the Slack action configuration, set 'Channel' to your support channel (e.g., #support or #tickets). In the 'Message Text' field, build your formatted summary by clicking into the field and inserting dynamic values from the Gmail trigger and Formatter step. A clear format: start with the sender and subject on line one, add the truncated body on line two, then add a direct link to the email thread using the Gmail 'Thread ID' field. Set 'Bot Name' to something like 'Support Bot' and choose an emoji icon like :mailbox:.
- 1Select your support channel from the 'Channel' dropdown
- 2Click into the 'Message Text' field
- 3Type '*New ticket from* ' then insert the 'From Name' field
- 4Add a newline, type '*Subject:* ' then insert the 'Subject' field
- 5Add another newline and insert the truncated output from the Formatter step
- 6Set 'Bot Name' to 'Support Bot' and choose a bot icon emoji
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Zap Editor > Slack Action > Configure > Message Text (continued)
Add a direct Gmail link to the Slack message
Scroll down in the Slack action configuration to find the 'Message Text' field where you're building the notification. Add a final line with the text 'Open in Gmail: ' followed by a constructed URL. The format is https://mail.google.com/mail/u/0/#inbox/ followed by the Gmail 'Thread ID' field mapped from the trigger. This gives agents a one-click path from Slack to the actual email thread in Gmail without hunting through their inbox.
- 1Position your cursor at the end of the Message Text field
- 2Add a new line and type 'Open in Gmail: https://mail.google.com/mail/u/0/#inbox/'
- 3Click the variable picker icon and insert the 'Thread ID' field from the Gmail trigger
- 4Click 'Continue'
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}channel: {{channel}}
ts: {{ts}}
Zap Editor > Slack Action > Test > Test action
Test the full Zap and verify the Slack message
Click 'Test action' in the Slack configuration step. Zapier sends a test message to your chosen channel using the sample Gmail data. Open Slack and navigate to the #support channel to verify the message posted correctly. Check that the sender name, subject, and truncated body all appear as expected, and click the Gmail link to confirm it opens the correct thread.
- 1Click 'Test action' in the Slack step
- 2Open Slack and navigate to your support channel
- 3Verify the test message shows sender, subject, and body preview
- 4Click the Gmail link in the message to confirm it opens the correct thread
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Zap Editor > Publish Zap > Name & Activate
Turn on the Zap
Click 'Publish Zap' in the top right of the editor. Zapier will prompt you to name the Zap — use something descriptive like 'Gmail Support → Slack #support'. The Zap turns on immediately and begins polling your Gmail inbox at your plan's polling interval. On a Starter plan this is every 15 minutes. On Professional it's every 2 minutes. Send a test email to your support address and wait for it to appear in Slack.
- 1Click 'Publish Zap' in the top right corner
- 2Enter a descriptive name for the Zap
- 3Click 'Publish' to confirm and activate
- 4Send a real test email to your support address
- 5Wait for the Slack notification to appear based on your plan's polling interval
Paste this into a 'Code by Zapier' step (Python mode) placed between the Formatter step and the Slack step. It classifies ticket urgency based on keywords in the subject and body, then prepends a colored emoji indicator to the Slack message — red circle for urgent, yellow for medium, green for low — so agents can triage without reading the full message.
JavaScript — Code Step# Code by Zapier — Python▸ Show code
# Code by Zapier — Python # Input variables (set these in the 'Input Data' section): # subject: mapped from Gmail 'Subject' field
... expand to see full code
# Code by Zapier — Python
# Input variables (set these in the 'Input Data' section):
# subject: mapped from Gmail 'Subject' field
# body: mapped from Formatter 'Output' field (truncated body)
# from_name: mapped from Gmail 'From Name' field
# from_email: mapped from Gmail 'From Email' field
# thread_id: mapped from Gmail 'Thread ID' field
subject = input_data.get('subject', '').lower()
body = input_data.get('body', '').lower()
from_name = input_data.get('from_name', 'Unknown Sender')
from_email = input_data.get('from_email', '')
thread_id = input_data.get('thread_id', '')
urgent_keywords = ['urgent', 'critical', 'down', 'broken', 'not working', 'blocking', '500 error', 'outage', 'asap', 'immediately']
medium_keywords = ['issue', 'problem', 'failing', 'error', 'wrong', 'incorrect', 'bug']
urgency_level = 'low'
for word in urgent_keywords:
if word in subject or word in body:
urgency_level = 'urgent'
break
if urgency_level == 'low':
for word in medium_keywords:
if word in subject or word in body:
urgency_level = 'medium'
break
urgency_emoji = {
'urgent': ':red_circle: *URGENT*',
'medium': ':yellow_circle: *MEDIUM*',
'low': ':green_circle: Low'
}
gmail_link = f'https://mail.google.com/mail/u/0/#inbox/{thread_id}'
formatted_message = (
f"{urgency_emoji[urgency_level]} | *New ticket from* {from_name} ({from_email})\n"
f"*Subject:* {input_data.get('subject', '')}\n"
f"\n{input_data.get('body', '')}\n"
f"\n<{gmail_link}|Open in Gmail>"
)
output = [
{
'urgency': urgency_level,
'formatted_message': formatted_message,
'gmail_link': gmail_link
}
]Going live
Production Checklist
Before you turn this on for real, confirm each item.
Troubleshooting
Common errors and how to fix them.
Frequently Asked Questions
Common questions about this workflow.
Analysis
Use Zapier for this if your support team is small (under 15 people), doesn't want to maintain code, and is okay with a 2–15 minute delay between an email arriving and the Slack notification appearing. The no-code setup takes about 25 minutes including testing. Zapier's Gmail and Slack integrations are mature — they've been stable for years and the trigger fields you need (From Name, Subject, Body Plain, Thread ID) are all available without any custom configuration. The one scenario where you'd skip Zapier entirely: if you're already paying for Zendesk, Freshdesk, or Help Scout, those tools have built-in Slack integrations that post tickets instantly via webhook and include ticket IDs, priority levels, and assignment links that Zapier can't match.
The cost math is straightforward. Each email that arrives triggers 3 Zapier tasks: the Gmail trigger, the Formatter truncation step, and the Slack send. At 200 support emails per month, that's 600 tasks. Zapier's free tier covers 100 tasks/month — you'll blow through that on day one of production use. The Starter plan at $19.99/month includes 750 tasks and 2-minute polling, which covers roughly 250 emails/month with this 3-task-per-email setup. At 500 emails/month (1,500 tasks), you'd need the Professional plan at $49/month. Make.com handles the same workflow for $9/month on its Core plan with 10,000 operations included — that's 3,333 emails/month at the same 3-operation cost. For teams under 200 emails/month, the Zapier price difference is negligible. For teams above 300 emails/month, Make saves $20–40/month and that adds up.
Make handles this workflow better in one specific way: its Gmail 'Watch Emails' module uses a true webhook-style connection that can detect emails faster than Zapier's polling, and Make's text parser module gives you regex-based extraction from the email body — useful if you want to pull out order numbers or account IDs embedded in ticket text. n8n, if you're self-hosting, costs nothing and lets you write JavaScript to classify ticket urgency, route to multiple Slack channels in one workflow, and log to a database simultaneously — but it requires someone who can maintain a Node.js server. Power Automate handles this identically to Zapier if your org is on Microsoft 365, but the Gmail connector in Power Automate has historically had reliability issues with label filtering. Pipedream gives you full Node.js control with near-instant Gmail webhook triggers via Gmail push notifications through Google Pub/Sub — the fastest possible trigger time of any platform listed here, under 10 seconds. Zapier is still the right call if your team has zero technical staff and needs a workflow that someone non-technical can modify or troubleshoot without documentation.
Three things you'll hit after going live. First: Zapier's Gmail trigger fetches up to 3 emails per poll cycle. If your support inbox gets a burst of 10 emails in 2 minutes (common Monday morning), Zapier will only process 3 in the first poll, then catch the rest in subsequent polls. You won't lose tickets — they'll all post to Slack eventually — but they'll arrive out of order and with delays up to 45 minutes on a 15-minute polling plan. Second: Gmail's OAuth token silently expires every 6 months or after any Google account security event. When this happens, the Zap fails with no visible alert unless you've turned on Zapier's email notifications. Set a recurring calendar reminder to check your connected apps every 60 days. Third: Slack's message length limit is 40,000 characters, which sounds like a lot until a customer forwards a long email thread with quoted replies — the full Body HTML field on a thread with 15 replies can exceed this. The Formatter truncation step at 300 characters prevents this, but if you ever bypass the Formatter step for any reason, you'll hit a Slack API message_too_long error that silently drops the notification.
Ideas for what to build next
- →Add ticket assignment with Slack reactions — Build a second Zap that watches for a specific emoji reaction (e.g., :white_check_mark:) on the support Slack message and uses that to mark the Gmail thread with a 'Claimed' label. This gives you lightweight ticket ownership without a helpdesk tool.
- →Route tickets to different channels by keyword — Add a Zapier Paths step (available on Professional plan) to split routing based on subject keywords — billing emails go to #billing-support, technical errors go to #eng-support, and everything else lands in #general-support.
- →Log every ticket to a Google Sheet for reporting — Add a third action step that appends each routed ticket to a Google Sheet row with sender, subject, timestamp, and urgency level. After 30 days you'll have real data on ticket volume, peak hours, and top senders to justify tooling decisions.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup