Skip to content
Skip to main content

Add a scheduling page with automatic notetaking

Every scheduled meeting needs notes, but nobody wants to take them. Combine Scheduler with Notetaker and the recording happens by itself: a guest books a slot on your scheduling page, the event is created with a conferencing link, Notetaker joins on time, and a webhook delivers the transcript, summary, and action items after the call ends. No per-meeting setup. No forgotten recordings.

This is the building-block recipe for the interview scheduling pipeline and any other one-on-one meeting flow where you want recordings without thinking about them.

guest visits scheduling page ─▶ books a slot
Scheduler creates calendar event with conferencing link + Notetaker settings
Notetaker joins the meeting at start time
meeting happens, bot records
notetaker.media webhook ─▶ download recording, transcript, summary, action items

By the end you’ll have a Scheduler Configuration with Notetaker enabled, a scheduling page (hosted or embedded), and webhook handlers that deliver the media artifacts after each call.

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)

You also need the following for this tutorial:

  • A connected grant with calendar access for the provider you want to schedule with
  • A conferencing provider set up on the grant (Google Meet, Microsoft Teams, or Zoom). Notetaker needs a meeting link to join, so conferencing is required. See Adding conferencing to bookings for setup details.
  • Notetaker enabled on your Nylas plan

Create a Scheduler Configuration with Notetaker

Section titled “Create a Scheduler Configuration with Notetaker”

Start by creating a Configuration that defines your scheduling page, conferencing provider, and Notetaker settings. This single API request sets up the entire pipeline.

A few things to note about this request:

  • conferencing.provider determines which video platform Notetaker joins. Set this to "Google Meet", "Microsoft Teams", or "Zoom Meeting" depending on your grant’s provider. The autocreate object tells Scheduler to generate a meeting link automatically for each booking.
  • scheduler.notetaker_settings.enabled turns on the Notetaker integration. Without this, bookings are created normally but no recording bot joins.
  • notetaker_name is the display name guests see when the bot joins the call. Keep it short and descriptive so attendees know what it is.
  • meeting_settings controls what Notetaker produces. You can disable video_recording if you only need audio, or turn off summary and action_items if you just want the raw transcript.

If you want more control over the AI-generated content, pass custom instructions:

Custom instructions are limited to 1,500 characters each. Be specific about what you want: the more precise the instructions, the more useful the output.

Once your Configuration exists, you need to give guests a way to book meetings. Nylas supports two approaches.

The simplest option. Add a slug to your Configuration, and Nylas hosts the scheduling page for you at book.nylas.com/<SLUG>.

After this request succeeds, your scheduling page is live at https://book.nylas.com/meet-with-your-team. Share that URL with guests, embed it in emails, or link to it from your website. No frontend code required.

If you want the scheduling UI inside your own application, use the <nylas-scheduling> web component. This gives you full control over the surrounding page layout, styling, and user experience.

The component handles date selection, time slot display, the booking form, and confirmation. All the Notetaker settings you configured on the backend apply automatically. Guests see a consent message if you set show_ui_consent_message to true.

For more customization options, see Using the Scheduling component and Customize Scheduler.

You need webhooks to know when bookings happen and when recordings are ready. Subscribe to the booking.created and notetaker.media triggers.

  • booking.created fires when a guest completes a booking. Use this to update your internal records, send custom notifications, or trigger other workflows.
  • notetaker.media fires when Notetaker finishes processing media after a meeting ends. The payload includes download URLs for the recording, transcript, summary, and action items.

When a guest books a meeting, Nylas sends a notification like this:

Notice the location field contains the conferencing link. That is the same link Notetaker uses to join the meeting.

After the meeting ends, Notetaker processes the recording. This typically takes a few minutes. When processing completes, Nylas sends a notetaker.media webhook with the state set to available and URLs for each media file.

Each URL in the media object points to a downloadable file. Download them directly from your webhook handler.

The URLs in the webhook payload are valid for 60 minutes. Download the files immediately when you receive the webhook. If the URLs expire, you can retrieve fresh ones using the Notetaker API:

FileFormatContents
RecordingMP4 (video) or MP3 (audio-only)Full meeting recording at 1280x720 resolution, 12 FPS
ThumbnailPNGA screenshot captured from roughly halfway through the meeting
TranscriptJSONSpeaker-labelled transcript with timestamps for each segment
SummaryJSONAI-generated meeting summary based on the transcript
Action itemsJSONAI-extracted list of action items from the conversation

The transcript includes speaker names and timing data, so you can build features like searchable meeting archives or highlight key moments.

  • Conferencing is required. Notetaker connects through a video link. Without one, it has nothing to join. Your Configuration must include event_booking.conferencing with Google Meet, Microsoft Teams, or Zoom. Skip conferencing and Notetaker settings are silently ignored.
  • Processing takes a few minutes. After the meeting ends and the bot disconnects, Nylas processes the recording, runs transcription, and generates the summary + action items. Expect a few minutes of delay before notetaker.media fires. Longer meetings take longer to process.
  • Notetaker times out at the lobby. The bot joins as a non-signed-in participant. If the meeting is restricted and nobody admits it within 10 minutes, you get failed_entry and no recording. For Teams, configure the meeting to allow anonymous users; for Google Meet, set “Anyone with the link can join”; for Zoom, disable the waiting room.
  • Don’t ship without an automated media download. Nylas deletes media files after 14 days. Build a download pipeline that runs on notetaker.media and stores files in your own infrastructure. If you need 30+ day retention, this isn’t optional.
  • Each booking creates a separate Notetaker instance. Bots are not pooled or deduplicated. Two back-to-back bookings at 2:00 PM and 2:30 PM create two independent bots.
  • Recording consent is your problem. The show_ui_consent_message flag and the in-meeting chat message are informational, not legal consent mechanisms. Recording laws vary by jurisdiction — some require explicit opt-in. Get this reviewed before production.