Skip to content

How to automate meeting follow-up emails

After every meeting, someone has to write up what happened, pull out the action items, and email them to the rest of the team. It takes ten minutes on a good day and rarely happens at all on a busy one. The information ends up scattered across personal notes, or worse, lost entirely.

This tutorial builds a system that handles all of it automatically. Nylas Notetaker joins your meetings, records and transcribes them, and generates a summary with action items. When the recording is ready, your webhook handler picks it up, composes a follow-up email, and sends it to every attendee using the Nylas Email API. No manual note-taking, no forgotten follow-ups.

The complete pipeline is webhook-driven and works like this:

  1. Notetaker joins a meeting and records the conversation with transcription, summary, and action item generation enabled.
  2. Nylas processes the recording after the meeting ends, generating a transcript, summary, and list of action items.
  3. Nylas fires a notetaker.media webhook when the processed files are available.
  4. Your webhook handler receives the notification, downloads the summary and action items, and fetches the meeting’s attendee list from the calendar event.
  5. Your handler composes and sends a follow-up email to all attendees with the summary and action items using the Nylas Email API.

The result: every meeting your Notetaker attends automatically produces a follow-up email within minutes of the call ending.

Make sure you have the following before starting this tutorial:

  • A Nylas account with an active application
  • A valid API key from your Nylas Dashboard
  • At least one connected grant (an authenticated user account) for the provider you want to work with
  • Node.js 18+ or Python 3.8+ installed (depending on which code samples you follow)

New to Nylas? Start with the quickstart guide to set up your app and connect a test account before continuing here.

You also need:

  • A connected grant with calendar access so you can retrieve event attendees
  • Notetaker enabled on your Nylas plan (check your Nylas Dashboard to confirm)
  • A publicly accessible webhook endpoint that can receive POST requests from Nylas. During development, use VS Code port forwarding or Hookdeck to expose your local server.

Nylas blocks requests to ngrok URLs because of throughput limiting concerns. Use VS Code port forwarding or Hookdeck instead.

Your system needs to know when a recording is ready. Subscribe to the notetaker.media trigger so Nylas notifies your endpoint as soon as the transcript, summary, and action items are available. You should also subscribe to notetaker.meeting_state to track when Notetaker joins and leaves meetings.

Create the webhook subscription with a POST /v3/webhooks request:

Nylas sends a challenge request to your webhook URL during creation. Your endpoint must respond with the challenge query parameter value to verify ownership. See the webhooks documentation for details on handling the verification handshake.

Invite Notetaker to a meeting by making a POST /v3/grants/<NYLAS_GRANT_ID>/notetakers request. Enable summary and action_items so Nylas generates the content your follow-up email needs.

Notetaker supports Google Meet, Microsoft Teams, and Zoom. Pass any valid meeting link and Notetaker detects the provider automatically.

If you omit join_time, Notetaker attempts to join the meeting immediately. For scheduled meetings, include a Unix timestamp so Notetaker joins at the right time:

{
"join_time": 1732657774,
"meeting_link": "https://teams.microsoft.com/l/meetup-join/...",
"meeting_settings": {
"summary": true,
"action_items": true,
"transcription": true,
"audio_recording": true,
"video_recording": true
},
"name": "Meeting Notetaker"
}

You can also customize the AI output by passing instructions. For example, to get action items assigned to specific people:

{
"meeting_settings": {
"summary": true,
"action_items": true,
"action_items_settings": {
"custom_instructions": "Assign each action item to the person responsible and include a suggested deadline."
},
"summary_settings": {
"custom_instructions": "Focus on decisions made and open questions. Keep it under 200 words."
}
}
}

When Notetaker finishes processing the recording, Nylas sends a notetaker.media webhook with the state available and URLs for each media file. Here is what that payload looks like:

The media object contains URLs for the recording, transcript, summary, and action_items. Your handler needs to check that state is available, download the summary and action items, then look up the meeting attendees.

Here is a Node.js Express handler that does all of this:

Media URLs in notetaker.media webhooks expire after 60 minutes. Download the files as soon as you receive the notification. If you need to access them later, use the Download Notetaker Media endpoint to get fresh URLs.

With the summary, action items, and attendee list in hand, build the follow-up email and send it through the Nylas Email API.

Format the summary and action items into an HTML email body. Keep the formatting clean since attendees will read this on a variety of email clients.

Use the POST /v3/grants/<NYLAS_GRANT_ID>/messages/send endpoint to deliver the follow-up to all attendees.

Here is the curl version:

And the complete Node.js function that ties into the webhook handler from the previous section:

The grant you use to send the email must have email send permissions. The follow-up email is sent from the account associated with the grant, so make sure that grant belongs to the person (or service account) you want the email to come from.

Manually sending Notetaker to each meeting works, but the real value comes from full automation. Nylas supports calendar sync rules that automatically schedule a Notetaker for meetings that match your criteria.

For example, to have Notetaker auto-join all external meetings with three or more participants:

With calendar sync enabled, the entire pipeline runs hands-free. Notetaker joins qualifying meetings automatically, and your webhook handler sends the follow-up email when the recording is processed. No manual step required.

Calendar sync rules evaluate each event independently. If a recurring meeting matches your rules, Notetaker joins every occurrence. You can override individual occurrences by updating the event-level Notetaker settings. See the calendar sync documentation for the full set of rule options.

A few practical details to keep in mind when building this system:

  • Lobby and waiting rooms require manual admission. Notetaker is treated as a non-signed-in user by meeting platforms. If the meeting has a lobby or waiting room enabled, someone needs to admit the bot. If nobody admits it within 10 minutes, Notetaker times out and reports a failed_entry state. For fully automated workflows, configure your meeting provider to allow Notetaker to bypass the lobby.

  • Processing takes a few minutes. After Notetaker leaves a meeting, Nylas needs time to process the recording into a transcript, summary, and action items. Expect a delay of a few minutes between the meeting ending and the notetaker.media webhook arriving. Your follow-up emails will not be instant, but they will typically arrive well before anyone would have written them manually.

  • Silence detection ends recordings automatically. By default, Notetaker leaves a meeting after 5 minutes of continuous silence. This prevents the bot from lingering in dead calls. You can adjust this threshold with leave_after_silence_seconds (between 10 and 3600 seconds) in your meeting settings.

  • Skip cancelled and declined meetings. Before sending a follow-up, check that the calendar event was not cancelled. If you are using calendar sync, Nylas handles this for you by cancelling the Notetaker when an event is removed. If you are scheduling Notetaker manually, add a check in your webhook handler to verify the event status before sending.

  • Every POST creates a new Notetaker bot. Nylas does not de-duplicate requests. If your code retries a failed POST /v3/grants/<NYLAS_GRANT_ID>/notetakers request, you could end up with multiple bots in the same meeting. Use idempotency checks on your side to avoid duplicates.

  • Media URLs expire after 60 minutes. The URLs in the notetaker.media webhook payload are temporary. Download the summary and action items immediately when you receive the webhook. If you need to re-access files later, use the Download Notetaker Media endpoint.

  • Nylas stores media files for 14 days. After 14 days, recordings, transcripts, summaries, and action items are permanently deleted. If you need to retain them longer, download and store the files in your own infrastructure.