Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Deploy Granola native integrations — Slack, Notion, HubSpot, Attio, Affinity, and Zapier. Step-by-step setup for each platform with configuration, testing, and automation chains. Trigger: "granola slack", "granola notion", "granola hubspot", "granola attio", "connect granola", "granola integration".
.claude/skills/jeremylongshore-granola-deploy-integration/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -17% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 54% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 46% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 67% | 0% |
Granola offers native integrations with Slack, Notion, HubSpot, Attio, and Affinity plus Zapier for 8,000+ additional apps. This skill covers setup, configuration, and testing for each platform. Business plan ($14/user/mo) required for all integrations.
Setup:
| Granola Folder | Slack Channel | Auto-Post | |---------------|--------------|-----------| | Sales Calls | #sales-notes | On | | Engineering | #eng-meetings | On | | All Hands | #general | On | | 1-on-1s | (none) | Off |
How it works:
Slack Huddles support: Granola captures Slack Huddle audio the same way as Zoom/Meet — via system audio. Just ensure Granola is running and the huddle is on a synced calendar (or manually start recording).
Setup:
How it works:
Auto-sync workaround (via Zapier):
yamlTrigger: Granola — Note Added to Folder ("All Meetings") Action: Notion — Create Database Item Database: Your Custom Database Title: "{{title}}" Date: "{{calendar_event_datetime}}" Content: "{{note_content}}"
This bypasses the one-at-a-time limitation and lets you target any Notion database.
Setup:
How it works:
Limitations:
Zapier auto-sync workaround:
yamlTrigger: Granola — Note Added to Folder ("Sales Calls") Action: HubSpot — Find Contact (by attendee email) Action: HubSpot — Create Contact (if not found) Action: HubSpot — Create Engagement Note on Contact Body: "{{note_content}}"
Setup:
Attio integration works similarly to HubSpot — manual sync per note, auto-matching by attendee email.
Setup:
Setup:
Available triggers:
| Trigger | Description | |---------|-------------| | Note Added to Granola Folder | Auto-fires when any note is added to a specific folder | | Note Shared to Zapier | Fires when you manually share a note to Zapier |
Popular Zapier recipes:
| Recipe | Trigger → Action | |--------|-----------------| | Notes to Google Drive | Note Added → Google Drive: Upload File | | Action items to Asana | Note Shared → Asana: Create Task | | Summary to email | Note Added → Gmail: Send Email | | Notes to Salesforce | Note Shared → Salesforce: Create Note | | Digest to Teams | Note Added → Microsoft Teams: Post Message |
Deploy a complete meeting follow-up chain:
Meeting ends → Granola enhances notes
→ Note added to "Client Meetings" folder
├→ Slack: Post summary to #client-updates
├→ Notion: Archive full notes in Client Database
├→ HubSpot: Log note on matched Deal/Contact
├→ Linear: Create tasks from action items
└→ Gmail: Draft follow-up email to external attendeesConfigure each step as a separate Zapier action in a single multi-step Zap, or use Zapier Paths for conditional routing (internal vs. external meetings).
| Integration | Error | Fix | |-------------|-------|-----| | Slack | "Channel not found" | Channel may be renamed; verify name and invite Granola bot | | Notion | "Cannot share" | Reconnect Notion; Granola's database may have been deleted | | HubSpot | "No matching contact" | Create the contact in HubSpot first, then re-share | | Attio | "Record not found" | Verify attendee email matches an Attio Person record | | Zapier | "Trigger not firing" | Reconnect Granola in Zapier; check folder name matches exactly | | All | "Authorization expired" | Disconnect and reconnect the integration in Settings |
Proceed to granola-webhooks-events for event-driven automation patterns.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 23,979 | 16,336 | -32% | 1 | 1 | 0% | 3,684 | 4,134 | +12% | 0 | 0 | — |
case-02 | fail→pass | 24,501 | 17,648 | -28% | 1 | 1 | 0% | 3,808 | 4,430 | +16% | 0 | 0 | — |
case-03 | fail→pass | 39,132 | 18,686 | -52% | 1 | 1 | 0% | 5,481 | 4,523 | -17% | 0 | 0 | — |
case-04 | fail→fail | 15,260 | 13,663 | -10% | 1 | 1 | 0% | 2,781 | 4,192 | +51% | 0 | 0 | — |
case-05 | fail→fail | 13,697 | 14,437 | +5% | 1 | 1 | 0% | 2,090 | 3,264 | +56% | 0 | 0 | — |
case-06 | fail→fail | 20,118 | 17,656 | -12% | 1 | 1 | 0% | 2,528 | 4,031 | +59% | 0 | 0 | — |
case-07 | fail→pass | 14,757 | 5,565 | -62% | 1 | 1 | 0% | 1,683 | 2,586 | +54% | 0 | 0 | — |
case-08 | fail→pass | 12,659 | 2,168 | -83% | 1 | 1 | 0% | 1,406 | 2,051 | +46% | 0 | 0 | — |
case-09 | pass→pass | 13,616 | 8,523 | -37% | 1 | 1 | 0% | 1,346 | 2,225 | +65% | 0 | 0 | — |
case-10 | fail→pass | 14,727 | 10,401 | -29% | 1 | 1 | 0% | 1,606 | 2,689 | +67% | 0 | 0 | — |
case-11 | fail→pass | 17,601 | 8,912 | -49% | 1 | 1 | 0% | 2,083 | 2,357 | +13% | 0 | 0 | — |
case-12 | fail→pass | 14,202 | 4,472 | -69% | 1 | 1 | 0% | 1,497 | 2,519 | +68% | 0 | 0 | — |
case-13 | fail→pass | 19,744 | 9,862 | -50% | 1 | 1 | 0% | 2,605 | 3,419 | +31% | 0 | 0 | — |
case-14 | pass→pass | 10,305 | 7,418 | -28% | 1 | 1 | 0% | 1,743 | 2,886 | +66% | 0 | 0 | — |
case-15 | pass→pass | 14,431 | 5,438 | -62% | 1 | 1 | 0% | 1,561 | 2,533 | +62% | 0 | 0 | — |
case-16 | fail→pass | 6,741 | 7,783 | +15% | 1 | 1 | 0% | 988 | 2,132 | +116% | 0 | 0 | — |
case-17 | fail→pass | 17,602 | 9,381 | -47% | 1 | 1 | 0% | 2,252 | 2,435 | +8% | 0 | 0 | — |
case-18 | fail→pass | 9,621 | 9,593 | -0% | 1 | 1 | 0% | 1,680 | 2,441 | +45% | 0 | 0 | — |
case-19 | pass→pass | 15,575 | 14,879 | -4% | 1 | 1 | 0% | 2,875 | 4,584 | +59% | 0 | 0 | — |
case-20 | pass→pass | 8,481 | 3,635 | -57% | 1 | 1 | 0% | 1,534 | 2,252 | +47% | 0 | 0 | — |
case-21 | pass→pass | 14,397 | 8,403 | -42% | 1 | 1 | 0% | 1,624 | 2,240 | +38% | 0 | 0 | — |
case-22 | fail→pass | 12,252 | 8,093 | -34% | 1 | 1 | 0% | 1,198 | 2,118 | +77% | 0 | 0 | — |
case-23 | pass→pass | 10,885 | 5,639 | -48% | 1 | 1 | 0% | 1,850 | 2,583 | +40% | 0 | 0 | — |
case-24 | pass→pass | 10,880 | 7,636 | -30% | 1 | 1 | 0% | 976 | 1,990 | +104% | 0 | 0 | — |
case-25 | fail→pass | 11,400 | 1,798 | -84% | 1 | 1 | 0% | 1,062 | 1,924 | +81% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted. The headline lift of +52 percentage points is the difference between those two pass rates over the 25 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.