Archive every Granola meeting in SharePoint

Save the summary and full transcript of every new Granola meeting as a markdown file in SharePoint, and log it in a searchable meetings list.

Deterministic Code
GranolaMicrosoft SharePointOperationsProductMeeting WorkflowsData SyncDocument Processing

Build a code workflow that archives every new Granola meeting note into our SharePoint records library and logs it in a meetings list.

Trigger: poll Granola for the new note event. Each time a new Granola note is detected, run the workflow with that note id.

Step 1. Call Granola Get Note for that note id with the transcript included. Pull the title, attendees, calendar event details (link, start time, end time), summary in markdown, and full transcript.

Step 2. Build a markdown document with a YAML front-matter block containing the meeting date, title, attendees, calendar event link, and Granola note id, followed by an H1 with the title, a Summary section with the markdown summary, and a Transcript section with the full transcript.

Step 3. Call SharePoint Upload New File by Path against a configured site and document library, at a deterministic path like /Meetings/YYYY/MM/<date>-<slugified-title>.md. Use the meeting start date for YYYY, MM, and the date prefix. Lowercase the slug and strip special characters. Set the conflict behavior to replace so re-runs are idempotent. Capture the returned file web URL.

Step 4. Call SharePoint Create List Item against a configured Meetings list on the same site with these columns: Date (the meeting start date), Title (the meeting title), Attendees (attendee names or emails joined with semicolons), CalendarEventLink (the original calendar event url), GranolaNoteId (the Granola note id, for de-duping later), and FileUrl (the SharePoint file web URL returned in step 3).

Make the site address, document library, root folder path, and list name configurable inputs rather than hardcoded. The path template, list columns, and field mapping are fully deterministic so no agent reasoning is needed at runtime.

Additional information

What does this prompt do?
  • Watches Granola for new meeting notes and grabs each one as soon as it is finalized.
  • Pulls the title, attendees, calendar event, AI summary, and full transcript for every meeting.
  • Files a clean markdown copy in your SharePoint document library, organized into year and month folders.
  • Adds a row to a SharePoint meetings list with the date, title, attendees, calendar link, and a link straight to the saved file.
  • Turns SharePoint into the system of record for meetings, so anyone in the org can search past conversations without a Granola seat.
What do I need to use this?
  • A Granola account on the Business or Enterprise plan with a personal API key from the desktop app.
  • A Microsoft 365 login with permission to upload files and create list items in the SharePoint site you want to archive into.
  • The SharePoint site address, the document library to file notes in, and the meetings list you want rows added to.
How can I customize it?
  • Change the folder structure to fit how your team browses records, for example by client name, deal, or business unit instead of year and month.
  • Add or rename the list columns to match what your team already tracks, like meeting type, account owner, or recording link.
  • Filter which meetings get archived by keyword, attendee domain, or calendar so internal standups stay out of the records library.

Frequently asked questions

Do my colleagues need Granola accounts to read the archived notes?
No. The whole point is that the markdown file and list row live in SharePoint, so anyone with access to the site can search and read past meetings without paying for a Granola seat.
Will it pick up meetings recorded before I turn this on?
By default it only archives notes created after the workflow starts running. If you want history backfilled, run a one-time pass that lists older notes and feeds them through the same archive step.
Where in SharePoint do the files end up?
In the document library you pick, organized into year and month folders so a year of meetings stays tidy. You can swap the folder pattern for anything that fits how your team browses records.
Can I send only certain meetings to the records library?
Yes. Add a filter on attendee email domain, meeting title keywords, or the calendar the event came from so internal one-on-ones and standups never reach the archive.
What happens if a meeting is updated after it is archived?
You can choose whether updates overwrite the existing file and refresh the list row, or whether each version is filed as a new entry so the history stays intact.

Make SharePoint the home of every meeting your team has.

Connect Granola and SharePoint once, and every new meeting note lands in your records library, searchable by anyone in the org.