Intermediate~15 min setupProductivity & CommunicationVerified April 2026
Google Calendar logo
Slack logo

How to Send Meeting Notes Reminders with Pipedream

Automatically DM meeting organizers in Slack 15 minutes after their Google Calendar meeting ends to remind them to share notes.

Steps and UI details are based on platform versions at time of writing β€” check each platform for the latest interface.

Best for

Teams that want instant webhook-based reminders with custom code logic for filtering meeting types

Not ideal for

Simple workflows where Zapier's delay action is sufficient and you don't need custom filtering

Sync type

real-time

Use case type

notification

Real-World Example

πŸ’‘

A 25-person product team uses this to DM meeting organizers in Slack after every standup, planning, or review meeting ends. Before automation, 40% of meetings had no follow-up notes shared. Now organizers get reminded within 15 minutes and note-sharing jumped to 85%.

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

Skip the setup

Import this workflow directly into Pipedream

Copy the pre-built Pipedream blueprint and paste it straight into Pipedream. All modules, filters, and field mappings are already configured β€” you just need to connect your accounts.

Before You Start

Make sure you have everything ready.

Google Workspace admin permissions to create calendar webhooks
Slack workspace admin access to install the Pipedream bot
Slack bot permissions to send direct messages to users
Meeting organizers must have matching email addresses in Google and Slack

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Meeting Title
Organizer Email
Meeting End Time
Meeting Status
Event Type
1 optional fieldβ–Έ show
Attendee Count

Step-by-Step Setup

1

Workflows > New Workflow

Create New Workflow

Go to pipedream.com and click Workflows in the left sidebar. Click the green 'New Workflow' button in the top right. You'll see a blank canvas with a trigger step placeholder.

  1. 1Click 'Workflows' in the left sidebar
  2. 2Click the green 'New Workflow' button
  3. 3Click the trigger step placeholder
βœ“ What you should see: You should see the trigger configuration panel open on the right side.
2

Trigger > Google Calendar > Event Updated

Configure Google Calendar Webhook

Select Google Calendar as your trigger app. Choose 'Event Updated' as the event type since meeting end times trigger this event. Connect your Google account when prompted and select which calendars to monitor.

  1. 1Search for 'Google Calendar' in the app list
  2. 2Select 'Event Updated' from the trigger options
  3. 3Click 'Connect Account' and authorize Google
  4. 4Select specific calendars or choose 'All calendars'
βœ“ What you should see: You should see 'Connected' next to your Google account and selected calendars listed.
⚠
Common mistake β€” Event Updated fires for any change to events, not just when they end, so you'll need filtering logic later.
3

Trigger > Test

Test Calendar Connection

Click 'Test' to pull in a recent calendar event. Pipedream will show you the actual data structure from your calendar. Look for fields like 'status', 'start.dateTime', 'end.dateTime', and 'organizer.email'.

  1. 1Click the blue 'Test' button
  2. 2Wait for Pipedream to fetch sample data
  3. 3Review the JSON structure in the output panel
  4. 4Note the organizer and timing fields
βœ“ What you should see: You should see sample calendar event data with nested objects for start/end times and organizer details.
⚠
Common mistake β€” If no events appear, create a test meeting and update it to generate the webhook trigger.
Pipedream
β–Ά Deploy & test
executed
βœ“
Google Calendar
βœ“
Slack
Slack
πŸ”” notification
received
4

Workflow > + > Code

Add Meeting End Filter

Click the plus icon below your trigger to add a code step. This will filter for meetings that just ended and aren't all-day events. You'll write Node.js code to compare the current time with the meeting end time.

  1. 1Click the + icon below the trigger step
  2. 2Select 'Code (Node.js)' from the options
  3. 3Name the step 'Filter Meeting End'
  4. 4Paste the filtering logic in the code editor
βœ“ What you should see: You should see a code editor with the $ object available for accessing trigger data.
⚠
Common mistake β€” All-day events don't have specific end times, so exclude them or the filter will break.
Google Calendar
GO
trigger
filter
Condition
matches criteria?
yes β€” passes through
no β€” skipped
Slack
SL
notified
5

Workflow > + > Code

Add 15-Minute Delay

Add another code step to implement the 15-minute delay. Unlike other platforms, Pipedream handles delays with setTimeout or by scheduling a future execution. Calculate when to send the reminder based on the meeting end time.

  1. 1Click the + icon to add another step
  2. 2Select 'Code (Node.js)' again
  3. 3Name it 'Calculate Delay'
  4. 4Add logic to wait 15 minutes after meeting ends
βœ“ What you should see: The code step should calculate the exact timestamp for sending the reminder.
⚠
Common mistake β€” Pipedream has execution time limits, so for long delays consider using the Delay action instead.
6

Workflow > + > Slack > Send Direct Message

Connect Slack Account

Add a Slack step to send the direct message. Click the plus icon and search for Slack. Choose 'Send Direct Message' action. Connect your Slack workspace and configure the Connected Account permissions.

  1. 1Click + to add a new step
  2. 2Search for 'Slack' in the apps
  3. 3Select 'Send Direct Message'
  4. 4Click 'Connect Account' and authorize Slack
βœ“ What you should see: You should see your Slack workspace connected with a green checkmark.
⚠
Common mistake β€” The bot needs permission to send DMs to users, which requires specific OAuth scopes during connection.
Pipedream settings
Connection
Choose a connection…Add
click Add
Google Calendar
Log in to authorize
Authorize Pipedream
popup window
βœ“
Connected
green checkmark
7

Slack Step > User Field

Configure DM Recipient

Set the recipient to the meeting organizer's email from the Google Calendar event. Map the 'User' field to the organizer email from your trigger data. Slack will automatically find the user by email address.

  1. 1Click the 'User' dropdown field
  2. 2Select 'Custom expression'
  3. 3Enter the organizer email path from trigger
  4. 4Click outside to save the mapping
βœ“ What you should see: The User field should show the mapped organizer email in blue text.
⚠
Common mistake β€” If the organizer's email doesn't match their Slack email exactly, the DM will fail silently.
8

Slack Step > Message Field

Write Reminder Message

Compose the DM text in the Message field. Include the meeting title and a friendly reminder about sharing notes. Use the calendar event data to personalize the message with meeting details.

  1. 1Click in the Message text box
  2. 2Type your reminder template
  3. 3Insert meeting title from trigger data
  4. 4Add meeting time and participant count if needed
βœ“ What you should see: The message should show dynamic fields in blue and static text in black.
⚠
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.
9

Workflow Header > Test

Test Complete Workflow

Click 'Test' on the workflow header to run the entire sequence. Pipedream will execute each step and show you the results. Check that the filter logic works and the Slack message sends correctly.

  1. 1Click the 'Test' button at the top
  2. 2Watch each step execute in sequence
  3. 3Check for any red error indicators
  4. 4Verify the DM arrived in Slack
βœ“ What you should see: All steps should show green checkmarks and you should receive the test DM in Slack.
⚠
Common mistake β€” Testing sends real messages, so use a test meeting or warn the organizer first.
10

Workflow Header > Deploy

Deploy Workflow

Click 'Deploy' to activate the webhook listener. Pipedream will generate a unique webhook URL and register it with Google Calendar. Your workflow will now run automatically when meetings end.

  1. 1Click the blue 'Deploy' button
  2. 2Wait for deployment to complete
  3. 3Verify the webhook status shows 'Active'
  4. 4Note the webhook URL in the trigger settings
βœ“ What you should see: You should see 'Deployed' status and an active webhook URL in the trigger configuration.
⚠
Common mistake β€” Redeploying generates a new webhook URL, so avoid unnecessary redeployments in production.

Add this code to the Filter Meeting End step to handle different meeting types and avoid spamming organizers with reminders for brief or informal meetings. Paste this in the Node.js code editor.

JavaScript β€” Code Stepexport default defineComponent({
β–Έ Show code
export default defineComponent({
  async run({ steps, $ }) {
    const event = steps.trigger.event;

... expand to see full code

export default defineComponent({
  async run({ steps, $ }) {
    const event = steps.trigger.event;
    const now = new Date();
    const endTime = new Date(event.end.dateTime);
    const duration = (endTime - new Date(event.start.dateTime)) / (1000 * 60); // minutes
    
    // Skip all-day events or short meetings under 15 minutes
    if (!event.end.dateTime || duration < 15) {
      $.end('Meeting too short or all-day event');
    }
    
    // Skip if meeting hasn't ended yet (buffer for timezone issues)
    if (now < endTime) {
      $.end('Meeting has not ended yet');
    }
    
    // Skip cancelled or tentative meetings
    if (event.status !== 'confirmed') {
      $.end('Meeting cancelled or tentative');
    }
    
    // Skip if no external attendees (solo calendar blocks)
    const attendeeCount = event.attendees ? event.attendees.length : 0;
    if (attendeeCount < 2) {
      $.end('Solo meeting, no notes needed');
    }
    
    // Calculate reminder time (15 minutes after meeting end)
    const reminderTime = new Date(endTime.getTime() + 15 * 60 * 1000);
    const delayMs = reminderTime - now;
    
    return {
      shouldSendReminder: true,
      meetingTitle: event.summary,
      organizerEmail: event.organizer.email,
      delayUntilReminder: Math.max(delayMs, 0),
      attendeeCount: attendeeCount
    };
  }
});

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 n8n for this workflow

Use Pipedream for this if you need instant webhook processing and custom filtering logic that goes beyond basic calendar triggers. The platform excels at handling Google Calendar's complex webhook payloads and gives you full Node.js control over meeting type filtering, timezone handling, and delay calculations. You can easily exclude all-day events, short meetings, or cancelled sessions with custom code. For simple reminder workflows without complex logic, Zapier's built-in delay action might be easier to configure.

Cost

This workflow costs about 1 credit per meeting reminder on Pipedream's free tier (20,000 credits/month). At 50 meetings per week, you're looking at 200 credits monthly β€” well within free limits. That's significantly cheaper than Zapier's $19.99/month starter plan once you exceed 100 reminders. Make charges $9/month for 1,000 operations but their calendar triggers are less reliable than webhooks.

Tradeoffs

Make's Google Calendar integration requires polling every 15 minutes instead of instant webhooks, so reminders could be delayed by up to 30 minutes total. Zapier handles calendar webhooks well but their code steps are limited compared to full Node.js access. n8n gives you similar webhook speed and coding flexibility but requires self-hosting for reliable uptime. Power Automate's calendar connector works great for Office 365 but struggles with complex Google Calendar webhook parsing. Pipedream wins here because Google Calendar webhooks fire instantly and you get full programming control over the filtering logic.

You'll hit webhook delivery issues where Google Calendar stops sending events after API quota limits or connection timeouts. The Event Updated webhook fires for any calendar change, not just meeting ends, so expect to filter out 70% of incoming events. Slack's user lookup by email fails silently if addresses don't match exactly between Google and Slack profiles β€” build a fallback lookup table using display names or employee IDs.

Ideas for what to build next

  • β†’
    Add Snooze Functionality β€” Let organizers reply with 'snooze' to get reminded again in 30 minutes if they're not ready to share notes yet.
  • β†’
    Create Meeting Notes Template β€” Send a pre-formatted notes template in the DM with agenda items pulled from the calendar event description.
  • β†’
    Track Completion Rates β€” Monitor which organizers consistently share notes and send weekly reports to team leads about meeting follow-up rates.

Related guides

Was this guide helpful?
← Google Calendar + Slack overviewPipedream profile β†’