# Granola Webhooks Events

> Handle Granola webhook events and build event-driven automations. Use when building custom integrations, processing meeting events, or creating real-time notification systems. Trigger with phrases like "granola webhooks", "granola events", "granola triggers", "granola real-time", "granola callbacks".

- Skill: `micsapp/granola-webhooks-events` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add micsapp/granola-webhooks-events`
- Raw SKILL.md: https://api.skillmd.com/api/skills/micsapp/granola-webhooks-events/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- License: MIT
- Author: micsapp (https://skillmd.com/u/micsapp)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/micsapp/granola-webhooks-events

---

# Granola Webhooks & Events

## Contents
- [Overview](#overview)
- [Prerequisites](#prerequisites)
- [Instructions](#instructions)
- [Output](#output)
- [Error Handling](#error-handling)
- [Examples](#examples)
- [Resources](#resources)

## Overview
Build event-driven automations using Granola's Zapier webhooks and event triggers for real-time meeting note processing.

## Prerequisites
- Granola Pro or Business plan
- Zapier account
- Webhook endpoint (or Zapier as processor)

## Available Events

| Event | Description | Key Data |
|-------|-------------|----------|
| New Note Created | Notes ready after meeting | Full note, attendees, actions |
| Note Updated | Notes manually edited | Changes diff |
| Note Shared | Notes shared with others | Share details |

## Instructions

### Step 1: Set Up Zapier Integration
Configure Granola trigger in Zapier. Select events to listen for. Get webhook URL for custom endpoints.

### Step 2: Build Event Handler
Create endpoint that receives events, validates them, and routes to appropriate processors (task creation, notifications, CRM updates).

### Step 3: Implement Event Filtering
Filter by meeting type (title keywords), content (has action items), and attendees (external vs internal).

### Step 4: Choose Processing Pattern
- **Immediate**: Process each event in real-time (~2 min latency)
- **Batch**: Queue events, process every 15 min (reduce noise)
- **Conditional**: Route based on attendee type, action count, duration

### Step 5: Add Retry Logic
Implement exponential backoff with 3 retries. Send failures to dead letter queue for manual review.

See [detailed implementation](${CLAUDE_SKILL_DIR}/references/implementation.md) for event payload schemas, Express.js/Python handlers, filtering patterns, and monitoring metrics.

## Output
- Webhook receiver processing events
- Event filtering reducing noise
- Retry logic handling transient failures
- Monitoring tracking event throughput

## Error Handling
| Error | Cause | Solution |
|-------|-------|----------|
| Missed events | Endpoint down | Use reliable hosting, add health monitoring |
| Duplicate processing | Retry delivery | Implement idempotency with event IDs |
| Slow processing | Synchronous handling | Use async queue (Bull/SQS) |
| Invalid payload | Schema changed | Validate payload before processing |

## Examples

### Quick Webhook Test
```bash
set -euo pipefail
curl -X POST https://hooks.zapier.com/hooks/catch/YOUR_HOOK_ID \
  -H "Content-Type: application/json" \
  -d '{"event_type":"note.created","data":{"meeting_title":"Test","action_items":[]}}'
```

## Resources
- [Zapier Webhooks](https://zapier.com/help/create/code-webhooks)
- [Webhook Best Practices](https://zapier.com/blog/webhook-best-practices)

## Next Steps
Proceed to `granola-performance-tuning` for optimization techniques.
