Skip to main content
Granola is an AI notepad for meetings: it transcribes your calls and turns your notes into AI-enhanced meeting notes. This connector reads your Granola workspace through the Granola API and brings every meeting note your API key can access (title, owner, calendar event, AI summary and your own notes), the full transcript of each meeting line by line, the attendees of each meeting, your folders and spaces and, on Enterprise plans, the workspace audit log.
The connector only reads data. It never creates, changes or deletes anything in Granola.

Configuring Granola as a Source

In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Granola option from the list of connectors. Click Next and you’ll be prompted to add your access.

1. Add account access

The connector signs in with a Granola API key. API keys are available on Granola Business and Enterprise plans. The key decides which notes the connector can read. There are two kinds of key:
  • Personal API key (any workspace member): when you create it, choose its access scopes. Personal notes gives access to the notes you own, notes shared directly with you and notes in private folders shared with you. Public notes gives access to the notes visible to everyone in the workspace, such as the notes in the Team space. Select both to read both.
  • Workspace API key (workspace admins only): belongs to the workspace instead of a person and never expires. It reads the public notes plus the notes of every space that has Allow Granola API access turned on.
To create a personal API key:
  1. Open the Granola desktop app.
  2. Go to Settings → Connectors → API keys and click Create new key.
  3. Choose the note access scopes the key should include and click Generate API Key.
  4. Copy the key (it starts with grn_).
To create a workspace API key, a workspace admin goes to Settings → Connectors → Workspace API keys and clicks Create new key. See Granola’s guide to API keys.
On Enterprise plans, a workspace admin chooses which access scopes members can use, in Settings → Workspace → General → API access for members. Admins can also turn off transcript access over the API: in that case, deselect the Note Transcripts stream, or the notes sync fails with a message asking to turn it back on.
The following configurations are available:
  • API Key: The Granola API key (personal or workspace).
  • Start Date (optional): On the first sync, only notes updated on or after this date are read (and audit events recorded after it). Leave it empty to read every note the key can access. Later syncs only read what changed since the previous one.
  • Audit API Key (optional, advanced): Only needed for the Audit Events stream, on Enterprise plans. A workspace admin creates it in Settings → Connectors → Audit API keys. An Audit API key only reads the audit log, so the API Key above is still needed for the other streams. If you don’t use the audit log, leave it empty and don’t select Audit Events.
  • Notes Time Budget (minutes) (advanced, default 180): The longest time an incremental sync spends reading notes. Each note needs its own requests and Granola allows 5 requests per second, so catching up after a long pause can take a while. When the budget is reached, the sync stops between two notes, keeps everything it read, and the next sync continues from there (oldest notes first). It never cuts the first sync or a full sync: those always read every note, so on large workspaces use the Start Date to keep the first sync short.
Once you’re done, click Next.

2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.
Tip: The stream can be found more easily by typing its name.
Select the streams and click Next.

3. Configure data streams

Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.
  • Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
  • Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
  • Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
  • Sync Type: you can choose between INCREMENTAL and FULL_TABLE.
    • Incremental: every time the extraction happens, we’ll get only the new data, which is good if, for example, you want to keep every record ever fetched.
    • Full table: every time the extraction happens, we’ll get the current state of the data, which is good if, for example, you don’t want to have deleted data in your catalog.
Once you are done configuring, click Next.

4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can define some additional settings:
  • Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
  • Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while. For Granola we recommend a weekly full sync of Notes, or monthly on large workspaces (see Data Quality Considerations).
Once you are ready, click Next to finalize the setup.

5. Check your new source

You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.
For you to be able to see it on your Catalog, you need at least one successful source run.

Streams and Fields

Available streams

The table below lists every stream, its slug (the exact identifier to pass when creating the source via API) and a short description.
Granola only shares notes that already have a generated AI summary and transcript: a meeting that is still being processed appears on a later sync. Nested information (the calendar event, attendees, photos, folder and space membership, audit details) comes as JSON text; the most useful parts are also separate columns.

Joining transcripts and attendees to notes

Note Transcripts and Note Attendees are updated together with their note. When a note changes and its new version has fewer transcript lines or fewer attendees, the rows it no longer has cannot be removed from your tables by an incremental sync: they stay, with the older note_updated_at. Every row of the current version has note_updated_at equal to the note’s updated_at, so always join on both columns to get exactly the current transcript and attendees:
The same applies to attendees: JOIN note_attendees AS a ON a.note_id = n.id AND a.note_updated_at = n.updated_at.

Fields by stream

Notes

Every note the API key can access that has a generated AI summary. Incremental by last update.Table: notes · Primary key: id · Sync: Incremental (updated_at)
The transcript of each note, one row per line. Read page by page with each note that changed.Table: note_transcripts · Primary key: note_id, item_index · Sync: Incremental (note_updated_at)
The attendees of each note, one row per attendee. Read together with the note, with no extra request.Table: note_attendees · Primary key: note_id, email · Sync: Incremental (note_updated_at)

Organisation

Every folder the API key can access. Read in full on every sync.Table: folders · Primary key: id · Sync: Full table
Every space the API key can access. Read in full on every sync.Table: spaces · Primary key: id · Sync: Full table

Audit log

The workspace audit log: who did what and when (sign-ins, note views, sharing changes, members joining or leaving, API and MCP use). Enterprise plans only, read with the Audit API Key. Granola keeps one year of events.Table: audit_events · Primary key: id · Sync: Incremental (collected_at)

Implementation Notes

Data Quality Considerations

  • What the key can see is what you get. Notes, folders and spaces depend on the key’s access scopes and on the spaces with Granola API access turned on. Private notes typed by the owner are only filled when the key belongs to the note’s owner.
  • Incremental syncs read the notes updated since the previous sync, with one extra day of overlap for notes edited offline. Notes already loaded and not changed since are not read again.
  • Notes shared late. A note shared with you long after its last edit (or a space whose Granola API access is turned on later) may keep its old update date and be missed by incremental syncs. Finding them on every sync would mean listing every note each time, so instead schedule an Additional Full Sync of Notes (weekly, or monthly on large workspaces) to pick them up.
  • Long catch-ups continue over several syncs. When an incremental sync reaches the Notes Time Budget, it stops between two notes, keeps what it read and tells you in the sync log; the next sync continues with the rest, oldest notes first. The first sync and full syncs are never cut: they read every note (or every note since the Start Date) in one go, and if one fails the next attempt starts over.
  • Transcripts and attendees are refreshed with their note. When a note changes, its transcript and attendees are read again. A line or attendee removed in Granola stays in your table with an older note_updated_at until a full sync: join on note_updated_at as shown in Joining transcripts and attendees to notes.
  • Transcripts can be deleted by Granola. If your workspace deletes transcripts automatically after a period, notes older than that period have no transcript; the sync log tells you how many notes came without one.
  • Deleted notes appear with deleted_at filled only for keys with access to all workspace notes. When Granola no longer shares the content of a deleted note, the row keeps its title, owner and dates and content_available is false.
  • Folders and Spaces are read completely before anything is loaded: a sync that fails halfway leaves the previous table in place. If one of them comes back completely empty after a sync that had records, that stream fails and its table is left as it was.

API Limits & Performance

  • Granola allows 5 requests per second per user or workspace (shared with your other Granola API integrations). The connector reads one request at a time below that limit and, when Granola asks it to slow down, waits as long as Granola says.
  • Each note needs one request for its details, plus one request per 100 transcript lines. As a reference, a first sync of 1,000 one-hour meetings takes roughly half an hour to an hour. Set a Start Date to shorten the first sync and full syncs; later syncs only read what changed.

Troubleshooting

Skills for agents

Download Granola skills file

Granola connector documentation as plain markdown, for use in AI agent contexts.