Tutorial5 min read

How to Automatically Save Meeting Transcripts to Notion

Use Gregnote webhooks and the Notion API to automatically create a page for every meeting with the full transcript, summary, and attendees.

Gregnote Team

14 July 2026

The setup

Every time a meeting ends, we'll create a Notion page with: - Meeting date and duration - List of attendees - AI-generated summary (3–5 bullets) - Full transcript in a toggle block

You need a Gregnote API key, a Notion integration token, and a Notion database ID.

Create the Notion integration

In Notion, create an internal integration (Settings → Integrations → Develop your own). Copy the secret token. Share your target database with the integration.

The webhook handler

app.post("/hooks/gregnote", express.raw({ type: "*/*" }), async (req, res) => {
  if (!verifySignature(req)) return res.sendStatus(401);

const { event, transcript } = JSON.parse(req.body.toString()); if (event !== "meeting.completed") return res.sendStatus(200);

const summary = await summarise(transcript.segments); const attendees = transcript.speakers .filter(s => !s.is_bot) .map(s => s.display_name) .join(", ");

await notion.pages.create({ parent: { database_id: process.env.NOTION_DB_ID }, properties: { Name: { title: [{ text: { content: Meeting — ${new Date().toLocaleDateString()} } }] }, Attendees: { rich_text: [{ text: { content: attendees } }] }, Duration: { number: Math.round(transcript.duration_seconds / 60) }, }, children: [ { object: "block", type: "callout", callout: { rich_text: summary.split("\n").map(line => ({ text: { content: line + "\n" } })), icon: { emoji: "📋" }, }, }, { object: "block", type: "toggle", toggle: { rich_text: [{ text: { content: "Full transcript" } }], children: transcript.segments.map(seg => ({ object: "block", type: "paragraph", paragraph: { rich_text: [ { text: { content: seg.speaker + ": ", annotations: { bold: true } } }, { text: { content: seg.text } }, ], }, })), }, }, ], });

res.sendStatus(200); }); ```

Result

After every meeting, a Notion page appears in your database with the summary at the top, a collapsible full transcript, the date, and the attendees. Searchable, shareable, and zero manual effort.

Try it yourself

API key in 30 seconds. Free credit on sign-up. No card required.