Granola Migration Deep Dive
Overview
Comprehensive guide for migrating to Granola from competing meeting note tools. Covers source-specific export procedures, historical data preservation, parallel-run strategy, team transition, and cutover execution. Granola's key differentiator — no bot joins meetings — means the migration also changes the user experience fundamentally.
Prerequisites
- Access to source tool with export capability
- Granola workspace configured (see
granola-install-auth)
- Migration timeline agreed with stakeholders
- Budget approved for Granola licenses
Instructions
Step 1 — Assess Migration Scope
## Migration Assessment
Source tool: [Otter.ai / Fireflies / Fathom / tl;dv / Manual / Other]
Total meetings in source: [____]
Date range: [____] to [____]
Active users to migrate: [____]
Integrations to recreate: [Slack, Notion, CRM, etc.]
Historical data priority: [Archive all / Selective / Fresh start]
Target cutover date: [____]
Parallel run duration: [1 week / 2 weeks]
Step 2 — Source-Specific Export
From Otter.ai
- Export format: TXT, SRT (subtitles), PDF
- Bulk export: Otter Pro/Business: Settings > Export > Download All
- Limitations: Free plan only exports individual notes
- Key data: Transcripts with timestamps, speaker labels, action items
From Fireflies.ai
- Export format: TXT, JSON, PDF, SRT
- Bulk export: Admin > Data Management > Export
- Limitations: Custom fields may not export
- Key data: Transcripts, AI summaries, custom topics
From Fathom
- Export format: Markdown, CSV, video clips
- Bulk export: Settings > Data > Export All
- Limitations: Video clips don't transfer
- Key data: Meeting summaries, action items, highlights
From tl;dv
- Export format: TXT, video recordings
- Bulk export: Settings > Data Export
- Limitations: AI highlights may not transfer
- Key data: Transcripts, timestamps, meeting recordings
From Manual Notes (Google Docs, Notion, Confluence)
- Already in accessible format
- No export needed — archive in place
- Focus on establishing the Granola workflow going forward
Step 3 — Choose Migration Strategy
| Strategy |
When to Use |
Data Handling |
Effort |
| Fresh Start |
<100 historical meetings, or meetings have low reference value |
Archive source data externally, start fresh in Granola |
Low |
| Selective Migration |
100-1000 meetings, some have ongoing reference value |
Export key meetings (client calls, decisions, contracts) |
Medium |
| Full Archive |
Enterprise with compliance requirements, everything must be searchable |
Export all data, archive in Notion/Drive/cloud storage |
High |
Recommended for most teams: Fresh Start or Selective. Granola doesn't import historical data from other tools — there's no import feature. Historical data lives in your archive (Notion, Google Drive, local files).
Step 4 — Archive Historical Data
For important historical meetings, archive before cutting over:
#!/usr/bin/env python3
"""Organize exported meeting notes for archival."""
import os
from pathlib import Path
EXPORT_DIR = Path("~/Downloads/otter-export").expanduser() # Adjust for your source
ARCHIVE_DIR = Path("~/Documents/meeting-archive").expanduser()
# Create organized archive structure
categories = {
"client": ["client", "customer", "deal", "sales", "demo"],
"engineering": ["sprint", "standup", "architecture", "review", "retro"],
"product": ["product", "prd", "design", "feedback", "roadmap"],
"leadership": ["all-hands", "board", "strategy", "planning"],
"general": [], # catch-all
}
ARCHIVE_DIR.mkdir(parents=True, exist_ok=True)
for cat in categories:
(ARCHIVE_DIR / cat).mkdir(exist_ok=True)
for file in EXPORT_DIR.glob("*.txt"):
filename_lower = file.name.lower()
placed = False
for cat, keywords in categories.items():
if any(kw in filename_lower for kw in keywords):
dest = ARCHIVE_DIR / cat / file.name
file.rename(dest)
placed = True
break
if not placed:
(ARCHIVE_DIR / "general" / file.name).rename(file)
print(f"Archived to {ARCHIVE_DIR}")
Alternatively, upload the archive to Notion or Google Drive for team-wide searchability.
Step 5 — Parallel Run (2 Weeks)
Run both tools simultaneously to build confidence:
Week 1: Dual recording
- Keep source tool active (bot still joins or captures)
- Enable Granola on all meetings (system audio capture)
- Compare output quality daily:
| Metric |
Source Tool |
Granola |
Winner |
| Transcription accuracy |
___% |
___% |
|
| Action item detection |
___/total |
___/total |
|
| Summary quality |
___/5 |
___/5 |
|
| Processing time |
___ min |
___ min |
|
| User experience (no bot) |
N/A |
Yes |
Granola |
Week 2: Granola primary
- Keep source tool as backup only (disable auto-record if possible)
- All sharing and distribution via Granola integrations
- Team members report any quality issues
Step 6 — Cutover Execution
Cutover day checklist:
Subject: Meeting Notes Migration Complete — Granola is Now Primary
Team,
As of today, we've completed our migration to Granola for meeting notes.
What's changed:
- No more [Otter/Fireflies/etc.] bot joining meetings
- Granola captures audio directly from your device (no bot visible to participants)
- Notes are auto-enhanced with AI summaries and action items
What you need to do:
1. Ensure Granola is running on your device
2. Verify your calendar is connected (Settings > Calendar)
3. Check that microphone + Screen & System Audio permissions are granted
Historical notes: Archived at [Notion link / Drive folder]
Support: Post in #granola-support
Thank you for the smooth transition!
Step 7 — Post-Migration Optimization
After 1 week on Granola exclusively:
Key Differences from Bot-Based Tools
| Feature |
Bot-Based (Otter, Fireflies, tl;dv) |
Granola |
| Meeting join |
Bot joins as participant |
No bot — system audio capture |
| Participant awareness |
"Bot is recording" banner |
No banner (still announce recording for consent) |
| Platform support |
Platform-specific integrations |
Any platform (captures system audio) |
| Typed notes |
Separate app |
Built-in notepad merges with transcript |
| Enhancement |
Auto-generated |
User-controlled (click Enhance) |
| Templates |
Limited |
29 built-in + custom |
| Chat |
Limited or none |
Full Granola Chat with Recipes |
| Built-in CRM |
No |
People & Companies |
Output
- Source data exported and archived
- Parallel run completed with quality validation
- Team migrated and recording in Granola
- Source tool deactivated and subscription cancelled
- Historical data accessible in archive
Error Handling
| Error |
Cause |
Fix |
| Source export incomplete |
Free plan limits bulk export |
Upgrade source plan temporarily for export, then cancel |
| Team resistance to change |
Comfort with existing tool |
Share quality comparison data from parallel run |
| Missing historical context |
No import feature in Granola |
Point team to archived data (Notion/Drive) |
| Audio quality different than bot |
System audio vs. platform API |
Optimize audio setup (see granola-performance-tuning) |
| Low adoption post-migration |
Setup issues |
Run drop-in support sessions, share quick-start guide |
Examples
cohort=synthetic-meetings-01; baseline=420; migrated=420; consent=pass; destination=approved; retention=none; cutover=held; rollback=old-client-r8 documents a safe rehearsal.
Resources
Next Steps
After migration, explore granola-performance-tuning to optimize output quality.
1---2name: granola-migration-deep-dive3description: Migrate to Granola from Otter.ai, Fireflies, Fathom, tl;dv, or manual note-taking. Covers data export from source tools, parallel-run strategy, team transition, and historical data preservation. Trigger: "migrate to granola", "switch to granola", "granola from otter", "granola from fireflies", "replace meeting tool with granola".4license: MIT5---6# Granola Migration Deep Dive
7
8## Overview
9
10Comprehensive guide for migrating to Granola from competing meeting note tools. Covers source-specific export procedures, historical data preservation, parallel-run strategy, team transition, and cutover execution. Granola's key differentiator — no bot joins meetings — means the migration also changes the user experience fundamentally.
11
12## Prerequisites
13
14- Access to source tool with export capability
15- Granola workspace configured (see `granola-install-auth`)
16- Migration timeline agreed with stakeholders
17- Budget approved for Granola licenses
18
19## Instructions
20
21### Step 1 — Assess Migration Scope
22
23```markdown
24## Migration Assessment
25
26Source tool: [Otter.ai / Fireflies / Fathom / tl;dv / Manual / Other]
27Total meetings in source: [____]
28Date range: [____] to [____]
29Active users to migrate: [____]
30Integrations to recreate: [Slack, Notion, CRM, etc.]
31Historical data priority: [Archive all / Selective / Fresh start]
32Target cutover date: [____]
33Parallel run duration: [1 week / 2 weeks]
34```
35
36### Step 2 — Source-Specific Export
37
38#### From Otter.ai
39
40- **Export format:** TXT, SRT (subtitles), PDF
41- **Bulk export:** Otter Pro/Business: Settings > Export > Download All
42- **Limitations:** Free plan only exports individual notes
43- **Key data:** Transcripts with timestamps, speaker labels, action items
44
45#### From Fireflies.ai
46
47- **Export format:** TXT, JSON, PDF, SRT
48- **Bulk export:** Admin > Data Management > Export
49- **Limitations:** Custom fields may not export
50- **Key data:** Transcripts, AI summaries, custom topics
51
52#### From Fathom
53
54- **Export format:** Markdown, CSV, video clips
55- **Bulk export:** Settings > Data > Export All
56- **Limitations:** Video clips don't transfer
57- **Key data:** Meeting summaries, action items, highlights
58
59#### From tl;dv
60
61- **Export format:** TXT, video recordings
62- **Bulk export:** Settings > Data Export
63- **Limitations:** AI highlights may not transfer
64- **Key data:** Transcripts, timestamps, meeting recordings
65
66#### From Manual Notes (Google Docs, Notion, Confluence)
67
68- Already in accessible format
69- No export needed — archive in place
70- Focus on establishing the Granola workflow going forward
71
72### Step 3 — Choose Migration Strategy
73
74| Strategy | When to Use | Data Handling | Effort |
75|----------|------------|--------------|--------|
76| **Fresh Start** | <100 historical meetings, or meetings have low reference value | Archive source data externally, start fresh in Granola | Low |
77| **Selective Migration** | 100-1000 meetings, some have ongoing reference value | Export key meetings (client calls, decisions, contracts) | Medium |
78| **Full Archive** | Enterprise with compliance requirements, everything must be searchable | Export all data, archive in Notion/Drive/cloud storage | High |
79
80**Recommended for most teams:** Fresh Start or Selective. Granola doesn't import historical data from other tools — there's no import feature. Historical data lives in your archive (Notion, Google Drive, local files).
81
82### Step 4 — Archive Historical Data
83
84For important historical meetings, archive before cutting over:
85
86```python
87#!/usr/bin/env python3
88"""Organize exported meeting notes for archival."""
89import os
90from pathlib import Path
91
92EXPORT_DIR = Path("~/Downloads/otter-export").expanduser() # Adjust for your source
93ARCHIVE_DIR = Path("~/Documents/meeting-archive").expanduser()
94
95# Create organized archive structure
96categories = {
97 "client": ["client", "customer", "deal", "sales", "demo"],
98 "engineering": ["sprint", "standup", "architecture", "review", "retro"],
99 "product": ["product", "prd", "design", "feedback", "roadmap"],
100 "leadership": ["all-hands", "board", "strategy", "planning"],
101 "general": [], # catch-all
102}
103
104ARCHIVE_DIR.mkdir(parents=True, exist_ok=True)
105for cat in categories:
106 (ARCHIVE_DIR / cat).mkdir(exist_ok=True)
107
108for file in EXPORT_DIR.glob("*.txt"):
109 filename_lower = file.name.lower()
110 placed = False
111 for cat, keywords in categories.items():
112 if any(kw in filename_lower for kw in keywords):
113 dest = ARCHIVE_DIR / cat / file.name
114 file.rename(dest)
115 placed = True
116 break
117 if not placed:
118 (ARCHIVE_DIR / "general" / file.name).rename(file)
119
120print(f"Archived to {ARCHIVE_DIR}")
121```
122
123Alternatively, upload the archive to Notion or Google Drive for team-wide searchability.
124
125### Step 5 — Parallel Run (2 Weeks)
126
127Run both tools simultaneously to build confidence:
128
129**Week 1: Dual recording**
130
131- Keep source tool active (bot still joins or captures)
132- Enable Granola on all meetings (system audio capture)
133- Compare output quality daily:
134
135| Metric | Source Tool | Granola | Winner |
136|--------|-----------|---------|--------|
137| Transcription accuracy | ___% | ___% | |
138| Action item detection | ___/total | ___/total | |
139| Summary quality | ___/5 | ___/5 | |
140| Processing time | ___ min | ___ min | |
141| User experience (no bot) | N/A | Yes | Granola |
142
143**Week 2: Granola primary**
144
145- Keep source tool as backup only (disable auto-record if possible)
146- All sharing and distribution via Granola integrations
147- Team members report any quality issues
148
149### Step 6 — Cutover Execution
150
151**Cutover day checklist:**
152
153- [ ] Final export from source tool (last day of data)
154- [ ] Verify archive is complete and accessible
155- [ ] Disable source tool recording/bot
156- [ ] Remove source tool bot from calendar (if applicable)
157- [ ] Cancel source tool subscription (save on unused billing)
158- [ ] Announce to team via email/Slack:
159
160```markdown
161Subject: Meeting Notes Migration Complete — Granola is Now Primary
162
163Team,
164
165As of today, we've completed our migration to Granola for meeting notes.
166
167What's changed:
168- No more [Otter/Fireflies/etc.] bot joining meetings
169- Granola captures audio directly from your device (no bot visible to participants)
170- Notes are auto-enhanced with AI summaries and action items
171
172What you need to do:
1731. Ensure Granola is running on your device
1742. Verify your calendar is connected (Settings > Calendar)
1753. Check that microphone + Screen & System Audio permissions are granted
176
177Historical notes: Archived at [Notion link / Drive folder]
178Support: Post in #granola-support
179
180Thank you for the smooth transition!
181```
182
183- [ ] Monitor for 3 days:
184 - Capture rate (% of meetings recorded)
185 - Support ticket volume
186 - User feedback
187 - Integration sync health
188
189### Step 7 — Post-Migration Optimization
190
191After 1 week on Granola exclusively:
192
193- [ ] Configure templates for each meeting type (see `granola-core-workflow-a`)
194- [ ] Set up Zapier automation for recurring workflows
195- [ ] Create custom recipes for team-specific post-meeting tasks
196- [ ] Establish folder structure matching team workflow
197- [ ] Delete source tool accounts and data (if no longer needed)
198
199## Key Differences from Bot-Based Tools
200
201| Feature | Bot-Based (Otter, Fireflies, tl;dv) | Granola |
202|---------|--------------------------------------|---------|
203| Meeting join | Bot joins as participant | No bot — system audio capture |
204| Participant awareness | "Bot is recording" banner | No banner (still announce recording for consent) |
205| Platform support | Platform-specific integrations | Any platform (captures system audio) |
206| Typed notes | Separate app | Built-in notepad merges with transcript |
207| Enhancement | Auto-generated | User-controlled (click Enhance) |
208| Templates | Limited | 29 built-in + custom |
209| Chat | Limited or none | Full Granola Chat with Recipes |
210| Built-in CRM | No | People & Companies |
211
212## Output
213
214- Source data exported and archived
215- Parallel run completed with quality validation
216- Team migrated and recording in Granola
217- Source tool deactivated and subscription cancelled
218- Historical data accessible in archive
219
220## Error Handling
221
222| Error | Cause | Fix |
223|-------|-------|-----|
224| Source export incomplete | Free plan limits bulk export | Upgrade source plan temporarily for export, then cancel |
225| Team resistance to change | Comfort with existing tool | Share quality comparison data from parallel run |
226| Missing historical context | No import feature in Granola | Point team to archived data (Notion/Drive) |
227| Audio quality different than bot | System audio vs. platform API | Optimize audio setup (see `granola-performance-tuning`) |
228| Low adoption post-migration | Setup issues | Run drop-in support sessions, share quick-start guide |
229
230## Examples
231
232`cohort=synthetic-meetings-01; baseline=420; migrated=420; consent=pass; destination=approved; retention=none; cutover=held; rollback=old-client-r8` documents a safe rehearsal.
233
234## Resources
235
236- [Granola Setup Guide](https://docs.granola.ai/help-center/getting-started/setting-up-granola-for-the-first-time)
237- Granola vs Otter Comparison
238- [Granola Free Trial](https://www.granola.ai/blog/granola-free-trial-get-started)
239- [Granola for Sales Teams](https://www.granola.ai/blog/sales-ai-notetaker-integration-guide-salesforce-hubspot)
240
241## Next Steps
242
243After migration, explore `granola-performance-tuning` to optimize output quality.