Skip to content
Back to skills

Fathom Webhooks Events

ASecurity

'Configure Fathom webhooks for real-time meeting notifications.

  • 2,719 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 21, 2026
ai-agentspythonbashflasktestingapiperformance

Works with

  • claude code
  • terminal
  • api

Security analysis

A100/100

Scanned September 21, 2026

npx -y skills add jeremylongshore/claude-code-plugins-plus --skill fathom-webhooks-events --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Fathom Webhooks Events?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Fathom Webhooks Events
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jeremylongshore-fathom-webhooks-events-04f194df/badge)](https://www.skillsdirectory.com/skills/jeremylongshore-fathom-webhooks-events-04f194df)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: fathom-webhooks-events
description: 'Configure Fathom webhooks for real-time meeting notifications.

  Use when setting up automated meeting processing, receiving real-time

  transcripts, or triggering workflows when meetings complete.

  Trigger with phrases like "fathom webhook", "fathom notifications",

  "fathom real-time", "fathom event handler".

  '
allowed-tools: Read, Write, Edit, Bash(curl:*)
version: 1.6.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
tags:
- saas
- meeting-intelligence
- ai-notes
- fathom
compatibility: Designed for Claude Code
---
# Fathom Webhooks & Events

## Prerequisites

- A verified callback endpoint, signature/authentication rule, idempotency store, redaction policy, and event owner.

## Instructions

1. Validate signatures before parsing payloads and acknowledge within the documented timeout.
2. Deduplicate events using stable opaque IDs and record only necessary redacted metadata.
3. Apply bounded retry/backoff for transient errors and quarantine malformed terminal failures.

## Output

- A signed, idempotent webhook/event flow with redacted observability, recovery ownership, and a safe replay decision path.

## Error Handling

| Condition | Safe response |
|---|---|
| Signature fails | Reject the event and investigate configuration without logging secrets/payload content. |
| Duplicate event arrives | Return idempotent success and avoid duplicate CRM/follow-up actions. |
| Processing fails permanently | Quarantine it with redacted metadata and fix the contract before replay. |

## Examples

Test a development callback using a synthetic event, verify signature, deduplication, and a bounded failure path, then record only event ID/state/result. Do not persist transcript text, meeting content, contacts, or webhook secrets in the diagnostics.

## Overview

Fathom webhooks send meeting data to your URL when recordings are ready. Webhooks can include summary, transcript, and action items. Configure in Settings or via API.

## Webhook Setup

### Via API

```bash
curl -X POST -H "X-Api-Key: ${FATHOM_API_KEY}" \
  -H "Content-Type: application/json" \
  https://api.fathom.ai/external/v1/webhooks \
  -d '{
    "url": "https://your-app.com/webhooks/fathom",
    "include_summary": true,
    "include_transcript": true,
    "include_action_items": true,
    "fire_on_own_meetings": true,
    "fire_on_shared_meetings": false
  }'
```

### Via Settings

Navigate to Settings > Integrations > Webhooks > Create Webhook.

## Webhook Payload

```json
{
  "type": "meeting_content_ready",
  "recording_id": "rec-abc123",
  "url": "https://fathom.video/call/abc123",
  "share_url": "https://fathom.video/share/abc123",
  "title": "Product Review Q1",
  "summary": "Discussed roadmap priorities...",
  "transcript": [...],
  "action_items": [...]
}
```

## Webhook Handler

```python
from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route("/webhooks/fathom", methods=["POST"])
def fathom_webhook():
    event = request.json
    if event.get("type") == "meeting_content_ready":
        recording_id = event["recording_id"]
        summary = event.get("summary", "")
        actions = event.get("action_items", [])
        # Process meeting data
        print(f"Meeting ready: {event.get('title')} ({len(actions)} action items)")
    return jsonify({"received": True}), 200
```

## Testing Webhooks

```bash
# Test with webhook.site
curl -X POST https://webhook.site/your-uuid \
  -H "Content-Type: application/json" \
  -d '{"type": "meeting_content_ready", "recording_id": "test"}'

# Or use ngrok for local testing
ngrok http 5000
```

## Resources

- [Fathom Webhooks](https://developers.fathom.ai/webhooks)
- [Webhook Troubleshooting](https://help.fathom.video/en/articles/10625473)

## Next Steps

For performance optimization, see `fathom-performance-tuning`.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.