

How to Forward Meeting Emails from Gmail to Slack with Zapier
Automatically detects meeting-related emails in Gmail and posts the subject, sender, and body to the appropriate Slack channel so your team sees external commitments in real time.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Teams where one person manages external meeting coordination and others need visibility into commitments without being CC'd on every email thread.
Not ideal for
Teams with more than 50 meeting-related emails per day — at that volume, polling delays and task costs make Make or n8n a better fit.
Sync type
real-timeUse case type
notificationReal-World Example
A 12-person consulting firm has one operations manager who receives all client meeting confirmations and follow-up summaries. Before this Zap, project leads had to ask the ops manager for updates or dig through a shared inbox. Now, every email tagged 'Meeting Notes' or 'Client Confirm' in Gmail posts to #client-meetings in Slack within 5 minutes — including sender, subject, and the first 500 characters of the body.
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 | ||
| Date | ||
| Formatter Output (Truncated Body) | ||
2 optional fields▸ show
| Message ID | |
| Label Names |
Step-by-Step Setup
Gmail > Settings > Labels > Create New Label
Create a Gmail label for meeting emails
Before building the Zap, set up a Gmail label you'll use as the trigger filter. Open Gmail, click the gear icon, go to 'See all settings', then the 'Labels' tab. Scroll down and click 'Create new label'. Name it something like 'Meeting Follow-up'. This label is what Zapier will watch — without it, Zapier has no reliable way to filter only meeting-related emails.
- 1Open Gmail and click the gear icon in the top right
- 2Click 'See all settings'
- 3Click the 'Labels' tab
- 4Scroll to the bottom and click 'Create new label'
- 5Type 'Meeting Follow-up' and click 'Create'
Zapier Dashboard > Create Zap > Trigger > Gmail > New Labeled Email
Start a new Zap and connect Gmail
Go to zapier.com and click the orange 'Create Zap' button in the top left. In the trigger search box, type 'Gmail' and select it. Zapier will ask you to choose a trigger event — select 'New Labeled Email'. This fires every time an email gets the label you just created. Click 'Continue' to move to the account connection step.
- 1Go to zapier.com and click 'Create Zap'
- 2Type 'Gmail' in the trigger search box and select it
- 3Under 'Event', choose 'New Labeled Email'
- 4Click 'Continue'
Zapier > Gmail Trigger > Sign in to Gmail > Google OAuth
Connect and authorize your Gmail account
Click 'Sign in to Gmail'. A Google OAuth popup will appear. Select the Google account that receives the meeting emails and click 'Allow'. Zapier needs read access to your Gmail inbox to detect new labeled emails. After granting access, you'll return to the Zap builder and see your email address listed under the Gmail trigger.
- 1Click 'Sign in to Gmail'
- 2Select the correct Google account in the OAuth popup
- 3Click 'Allow' to grant Zapier read access
- 4Click 'Continue' back in the Zap builder
Zapier > Gmail Trigger > Configure > Label/Mailbox dropdown
Select the Meeting Follow-up label
In the trigger configuration panel, find the 'Label/Mailbox' dropdown. Click it and you'll see a list of all Gmail labels on your connected account. Select 'Meeting Follow-up' — the label you created in Step 1. This tells Zapier to only poll for emails carrying that specific label. Click 'Continue' when done.
- 1Click the 'Label/Mailbox' dropdown in the trigger configuration panel
- 2Scroll to find 'Meeting Follow-up' or type it in the search box
- 3Select 'Meeting Follow-up'
- 4Click 'Continue'
Zapier > Gmail Trigger > Test Trigger
Test the Gmail trigger with a real email
Click 'Test trigger'. Zapier will pull the three most recent emails with the 'Meeting Follow-up' label. You need at least one email with that label in Gmail for this to work — if you have none, go to Gmail, find a meeting-related email, and manually apply the label, then come back and test again. Look at the sample data Zapier returns: you should see fields like Subject, From Name, From Email, Body Plain, and Date.
- 1Click 'Test trigger'
- 2If no results appear, go to Gmail, apply the 'Meeting Follow-up' label to one email, and return
- 3Click 'Test trigger' again
- 4Review the returned fields — confirm Subject, From, and Body Plain are present
- 5Click 'Continue with selected record'
Zapier > + Add Step > Formatter by Zapier > Text > Truncate
Add a Formatter step to truncate the email body
Click the '+' button below the Gmail trigger to add a new step. Search for 'Formatter by Zapier' and select it. Under 'Event', choose 'Text'. Under 'Transform', choose 'Truncate'. This step cuts the email body to a readable length before it hits Slack. Paste the 'Body Plain' field from the Gmail trigger into the 'Input' field, and set 'Max Length' to 500.
- 1Click the '+' button below the Gmail trigger card
- 2Search 'Formatter by Zapier' and select it
- 3Under 'Event', select 'Text'
- 4Under 'Transform', select 'Truncate'
- 5In 'Input', map the Gmail 'Body Plain' field
- 6Set 'Max Length' to 500 and click 'Continue'
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Zapier > + Add Step > Slack > Send Channel Message > Sign in to Slack
Add Slack as the action app
Click '+' below the Formatter step to add the Slack action. Search for 'Slack' and select it. Under 'Event', choose 'Send Channel Message'. Click 'Continue' and then 'Sign in to Slack'. An OAuth window will open asking you to authorize Zapier for your Slack workspace. Select the correct workspace and click 'Allow'.
- 1Click '+' below the Formatter step
- 2Search 'Slack' and select it
- 3Under 'Event', choose 'Send Channel Message'
- 4Click 'Continue', then 'Sign in to Slack'
- 5Select your workspace in the OAuth window and click 'Allow'
Zapier > Slack Action > Configure > Channel + Message Text
Configure the Slack message content
In the Slack action configuration, set the 'Channel' dropdown to the target channel (e.g. #team-meetings or #external-commitments). For 'Message Text', build a structured message using the Gmail fields. Use this format: '*New Meeting Email* :calendar:\n*From:* [From Name] <[From Email]>\n*Subject:* [Subject]\n*Received:* [Date]\n\n[Truncated Body from Formatter]'. Map each bracket item to the corresponding Zapier field from the Gmail trigger or Formatter output.
- 1Click the 'Channel' dropdown and select your target Slack channel
- 2Click into the 'Message Text' field
- 3Type '*New Meeting Email* :calendar:' then press Enter
- 4Add '*From:* ' then map 'From Name' and 'From Email' from the Gmail trigger
- 5Add '*Subject:* ' then map 'Subject' from Gmail
- 6Add a blank line then map the 'Output' field from the Formatter step
- 7Click 'Continue'
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}Zapier > Slack Action > Test Action
Test the Slack action
Click 'Test action'. Zapier will post a real message to the Slack channel you selected using the sample Gmail data from Step 5. Go to Slack immediately and look for the test message in the channel. Confirm the formatting looks correct — bold labels, readable body, no garbled characters. If the message looks wrong, go back and edit the Message Text field.
- 1Click 'Test action'
- 2Open Slack and navigate to the target channel
- 3Find the test message posted by Zapier
- 4Confirm sender, subject, and body all appear correctly
- 5Return to Zapier and click 'Continue' if the message looks correct
Zapier > Zap Title > Publish Zap
Name and publish the Zap
Click 'Publish Zap' in the top right. Before confirming, give the Zap a descriptive name — click the title at the top and type something like 'Gmail Meeting Emails → #team-meetings Slack'. This matters when you have multiple Zaps and need to find and edit this one later. Once published, Zapier will poll your Gmail account every 1-15 minutes depending on your plan tier.
- 1Click the default Zap title at the top of the builder
- 2Type a descriptive name like 'Gmail Meeting Emails → #team-meetings Slack'
- 3Click 'Publish Zap' in the top right corner
- 4Confirm the publication in the dialog that appears
This Code by Zapier step replaces the Formatter truncate step and adds smarter parsing: it extracts action items (lines starting with numbers or dashes), detects a meeting date if one appears in the body, and returns a clean structured summary. Paste this into a 'Code by Zapier' step (JavaScript) placed between the Gmail trigger and the Slack action. Map inputData.body to the Gmail 'Body Plain' field and inputData.subject to the Gmail 'Subject' field.
JavaScript — Code Stepconst body = inputData.body || '';▸ Show code
const body = inputData.body || ''; const subject = inputData.subject || '(No Subject)'; const fromName = inputData.fromName || '';
... expand to see full code
const body = inputData.body || '';
const subject = inputData.subject || '(No Subject)';
const fromName = inputData.fromName || '';
const fromEmail = inputData.fromEmail || '';
// Extract lines that look like action items (numbered or bulleted)
const lines = body.split('\n').map(l => l.trim()).filter(Boolean);
const actionItems = lines.filter(line =>
/^(\d+[.)\s]|-|•|\*)/.test(line)
);
// Try to detect a meeting date in the body
const datePattern = /(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]* \d{1,2}(,? \d{4})?( at \d{1,2}(:\d{2})? ?(am|pm|ET|PT|CT|MT|UTC)?)?/gi;
const detectedDates = body.match(datePattern) || [];
// Truncate full body to 400 chars
const truncatedBody = body.length > 400
? body.substring(0, 400) + '...'
: body;
// Build structured Slack message
let message = `*New Meeting Email* :calendar:\n`;
message += `*From:* ${fromName} <${fromEmail}>\n`;
message += `*Subject:* ${subject}\n`;
if (detectedDates.length > 0) {
message += `*Meeting Date Detected:* ${detectedDates[0]}\n`;
}
message += `\n${truncatedBody}`;
if (actionItems.length > 0) {
message += `\n\n*Action Items Found:*\n` + actionItems.slice(0, 5).join('\n');
}
return { slackMessage: message, actionItemCount: actionItems.length, detectedDate: detectedDates[0] || 'None' };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 team is non-technical and needs to get this running in under 30 minutes without touching code. The Gmail 'New Labeled Email' trigger is genuinely well-implemented here — the label-based filter is reliable, the field mapping is clean, and the Formatter truncate step is a 2-minute addition that prevents Slack message blowouts. If your team is forwarding more than 30-40 meeting emails per day and you need conditional routing to 4+ Slack channels, switch to Make — its router module handles branching better than Zapier's Paths at a lower price per operation.
Each Zap run uses 2 tasks: one for the Gmail trigger poll and one for the Slack action. At 20 meeting emails per month, that's 40 tasks — well within Zapier's free tier (100 tasks/month). At 200 emails/month, you're at 400 tasks and need the Starter plan at $19.99/month. Make's free tier handles 1,000 operations/month, so the same 200-email workflow costs $0 on Make versus $19.99 on Zapier. The Formatter step adds a third task per run, so factor that in: 200 emails × 3 tasks = 600 tasks/month on Zapier.
Make's Gmail module has a built-in 'Watch Emails' trigger with a text filter built directly into the trigger config — no separate Filter step needed. That saves one task per run and reduces clutter. n8n handles this with a Gmail trigger node and a Function node for body parsing, but it requires self-hosting or n8n Cloud ($20/month) and about 20 minutes of setup time versus Zapier's 8 minutes. Power Automate has a strong Gmail connector but its Slack connector is weaker — the 'Post message' action lacks the formatting flexibility Zapier's Slack action provides. Pipedream gives you full code control and fires on webhooks instead of polling, meaning your Slack message appears in under 10 seconds versus Zapier's 2-15 minute window. Zapier is still the right call if your team will need to edit, pause, or hand off this workflow to a non-developer — the visual builder is genuinely faster to debug than any code-based alternative.
Three things you'll hit after going live. First, Gmail OAuth tokens expire roughly every 6 months or immediately after a password change. Zapier doesn't alert you loudly — you'll notice when a teammate says 'the Slack posts stopped'. Check Connected Accounts monthly. Second, email threads with long reply chains will stuff the Body Plain field with 3,000+ characters of 'On Sep 5, Sarah wrote...' history. The truncate step helps, but consider using the Code by Zapier step above to strip quoted reply text before truncating. Third, if multiple people on your team have access to the Gmail account and apply the label manually, you'll get duplicate Slack posts on the same email. Zapier deduplicates by Message ID, but only within a single poll cycle — if two people label the same email 20 minutes apart, it can fire twice. Use a shared inbox rather than personal accounts to avoid this.
Ideas for what to build next
- →Route to different channels by sender or keyword — Add a Filter or Paths step in Zapier to send client meeting emails to #client-meetings and internal ones to #internal-sync based on the sender domain or subject keywords. This requires Zapier's Paths feature, available on the Professional plan ($49/month).
- →Create a Slack thread with a reply prompt — After the initial Slack message posts, add a second Slack action to post a reply in the thread asking the team to acknowledge or assign the action items. This keeps follow-up discussions tied to the original notification instead of cluttering the channel.
- →Log meeting emails to a Google Sheet for tracking — Add a Google Sheets action after the Slack step to append a row with sender, subject, date, and action item count to a running meeting log. After 30 days, you'll have a complete record of external commitments your team can reference in retrospectives.
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