Beginner~8 min setupCommunication & EmailVerified April 2026
Slack logo
Gmail logo

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-time

Use case type

notification

Real-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.

/mo
505005K50K

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.

Gmail account with permission to create labels and read emails in the inbox being monitored
Slack workspace admin or member permissions to authorize a third-party app (Zapier) and post to the target channel
A Gmail label created and ready to use as the trigger filter (e.g. 'Meeting Follow-up') before building the Zap
Zapier account — free tier works but limits polling to every 15 minutes; Starter plan ($19.99/month) reduces this to 2 minutes

Optional

Gmail filters configured to auto-apply the meeting label based on keywords like 'meeting notes', 'action items', or sender domains

Field Mapping

Map these fields between your apps.

FieldAPI 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

1

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.

  1. 1Open Gmail and click the gear icon in the top right
  2. 2Click 'See all settings'
  3. 3Click the 'Labels' tab
  4. 4Scroll to the bottom and click 'Create new label'
  5. 5Type 'Meeting Follow-up' and click 'Create'
What you should see: You should see 'Meeting Follow-up' appear in the Labels list on the left sidebar of Gmail.
Common mistake — If you plan to use Gmail filters to auto-apply this label, set those up now before connecting Zapier. Zapier only sees emails that already have the label applied when it polls — it won't catch emails labeled after the poll window.
2

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.

  1. 1Go to zapier.com and click 'Create Zap'
  2. 2Type 'Gmail' in the trigger search box and select it
  3. 3Under 'Event', choose 'New Labeled Email'
  4. 4Click 'Continue'
What you should see: You should see a Gmail trigger card with the event set to 'New Labeled Email' and a prompt to connect your Gmail account.
Common mistake — Do not use 'New Email' as the trigger — it fires on every single email and will flood your Slack channel. 'New Labeled Email' is the correct choice here.
3

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.

  1. 1Click 'Sign in to Gmail'
  2. 2Select the correct Google account in the OAuth popup
  3. 3Click 'Allow' to grant Zapier read access
  4. 4Click 'Continue' back in the Zap builder
What you should see: Your Gmail address should appear in the 'Account' dropdown with a green checkmark next to it.
Zapier settings
Connection
Choose a connection…Add
click Add
Slack
Log in to authorize
Authorize Zapier
popup window
Connected
green checkmark
4

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.

  1. 1Click the 'Label/Mailbox' dropdown in the trigger configuration panel
  2. 2Scroll to find 'Meeting Follow-up' or type it in the search box
  3. 3Select 'Meeting Follow-up'
  4. 4Click 'Continue'
What you should see: The Label/Mailbox field should display 'Meeting Follow-up' and you should see a 'Test trigger' button appear.
Common mistake — Zapier's label dropdown pulls from Gmail's label list at connection time. If you just created the label, it may not appear yet. Disconnect and reconnect the Gmail account in Zapier to refresh the label list.
5

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.

  1. 1Click 'Test trigger'
  2. 2If no results appear, go to Gmail, apply the 'Meeting Follow-up' label to one email, and return
  3. 3Click 'Test trigger' again
  4. 4Review the returned fields — confirm Subject, From, and Body Plain are present
  5. 5Click 'Continue with selected record'
What you should see: You should see a record with populated fields including Subject, From Name, From Email, Body Plain, and a timestamp. The body field will contain the raw email text.
Common mistake — The 'Body Plain' field strips HTML formatting but can include long email threads with reply history. In Step 8, you'll truncate this to avoid Slack message limits.
Zapier
▶ Turn on & test
executed
Slack
Gmail
Gmail
🔔 notification
received
6

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.

  1. 1Click the '+' button below the Gmail trigger card
  2. 2Search 'Formatter by Zapier' and select it
  3. 3Under 'Event', select 'Text'
  4. 4Under 'Transform', select 'Truncate'
  5. 5In 'Input', map the Gmail 'Body Plain' field
  6. 6Set 'Max Length' to 500 and click 'Continue'
What you should see: The Formatter step should show a truncated preview of the email body, cut to 500 characters with '...' appended if the original was longer.
Common mistake — If you skip this step and map the full Body Plain field directly to Slack, emails with long threads will hit Slack's 4,000-character message limit and get cut off mid-sentence with no warning in Zapier's logs.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
7

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'.

  1. 1Click '+' below the Formatter step
  2. 2Search 'Slack' and select it
  3. 3Under 'Event', choose 'Send Channel Message'
  4. 4Click 'Continue', then 'Sign in to Slack'
  5. 5Select your workspace in the OAuth window and click 'Allow'
What you should see: Your Slack workspace name should appear in the 'Account' dropdown with a green checkmark.
Common mistake — Zapier posts Slack messages as the Zapier app bot, not as you. The message will show 'Zapier' as the sender in Slack. If your team needs messages to appear from a specific person, you need a Slack bot token — which requires building a custom Slack app outside of Zapier.
8

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.

  1. 1Click the 'Channel' dropdown and select your target Slack channel
  2. 2Click into the 'Message Text' field
  3. 3Type '*New Meeting Email* :calendar:' then press Enter
  4. 4Add '*From:* ' then map 'From Name' and 'From Email' from the Gmail trigger
  5. 5Add '*Subject:* ' then map 'Subject' from Gmail
  6. 6Add a blank line then map the 'Output' field from the Formatter step
  7. 7Click 'Continue'
What you should see: The Message Text field should show a preview with real values substituted in — sender name, subject line, and a truncated body snippet.
Common mistake — Map fields using the variable picker — don't type field names manually. Hand-typed variable names often have invisible spacing errors that produce blank output.
Message template
📬 New entry: {{1.name}}
Email: {{1.email}}
Details: {{1.description}}
9

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.

  1. 1Click 'Test action'
  2. 2Open Slack and navigate to the target channel
  3. 3Find the test message posted by Zapier
  4. 4Confirm sender, subject, and body all appear correctly
  5. 5Return to Zapier and click 'Continue' if the message looks correct
What you should see: A Slack message should appear in the channel within 10 seconds. It should show the sender name, email address, subject, and a truncated email body — all clearly formatted.
Common mistake — The test uses sample data from the last labeled email you pulled in Step 5. This posts a real message to your real Slack channel. Give your team a heads-up before testing if the channel is active, or test in a private channel first.
10

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.

  1. 1Click the default Zap title at the top of the builder
  2. 2Type a descriptive name like 'Gmail Meeting Emails → #team-meetings Slack'
  3. 3Click 'Publish Zap' in the top right corner
  4. 4Confirm the publication in the dialog that appears
What you should see: The Zap status should show 'On' with a green toggle. You'll see the Zap listed in your Zapier dashboard with the name you gave it.
Common mistake — On Zapier's free plan, polling happens every 15 minutes. On Starter ($19.99/month), it's every 2 minutes. If near-instant delivery matters, upgrade before going live — your team will notice the 15-minute lag.

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

VerdictWhy Zapier for this workflow

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.

Cost

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.

Tradeoffs

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 keywordAdd 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 promptAfter 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 trackingAdd 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

Was this guide helpful?
Slack + Gmail overviewZapier profile →