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.