sales-fireflies
Fireflies.ai platform help — AI meeting note-taker with GraphQL API, webhooks (V1 + V2), AskFred AI, real-time events, and Fred bot that joins Zoom/Meet/Teams to transcribe. Use when Fireflies transcripts not syncing to CRM, webhooks not firing or signatures failing HMAC verification, hitting 50 req/day or 60 req/min rate limits on the GraphQL API, building a transcript pipeline from Fireflies to Snowflake/BigQuery/warehouse, migrating from Webhooks V1 to V2, the Fireflies bot not joining calls or users wanting to disable auto-join, deciding between Free, Pro ($10), Business ($19), or Enterprise ($39) tier, or wiring AskFred or Real-time API into an internal app. Do NOT use for comparing Fireflies vs Fathom/Avoma/Gong or selecting a note-taker (use /sales-note-taker) or reviewing a single sales call for coaching (use /sales-call-review).
NPX Install
npx skill4agent add sales-skills/sales sales-firefliesTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Fireflies.ai Platform Help
Step 1 — Gather context
references/learnings.md-
What's your goal?
- A) API integration (transcripts → CRM, warehouse, Slack, internal app)
- B) Webhook setup or signature verification (V1 or V2)
- C) Plan selection / pricing decision (Free, Pro, Business, Enterprise)
- D) Bot / auto-join behavior (Fred joining or missing meetings, auto-join toggles)
- E) AskFred AI, Real-time API, or MCP usage
- F) Troubleshooting a specific error (auth_failed, rate limit, missing webhook)
-
Who owns the meetings?
- A) Individual user (personal API key)
- B) Team-wide (Enterprise Super Admin required for team webhooks)
-
If API integration, destination?
- A) CRM (HubSpot, Salesforce) native sync
- B) Warehouse (Snowflake, BigQuery, Redshift)
- C) Slack / notifications
- D) Custom app or database
Step 2 — Route or answer directly
| Problem domain | Route to |
|---|---|
| Comparing Fireflies vs Fathom/Avoma/Gong/Otter, picking a note-taker | Run: |
| Reviewing a specific call for coaching or scoring | Run: |
| Building a coaching program from call data | Run: |
| General CRM integration patterns (iPaaS, Zapier, webhooks) across tools | Run: |
Step 3 — Fireflies platform reference
references/platform-guide.mdreferences/fireflies-api-reference.mdtranscripts(uploadAudiomeeting.summarizedStep 4 — Actionable guidance
- API design rule of thumb: GraphQL means you can request exactly the fields you need. Don't fetch +
transcript.sentences+audio_urlfor 100 meetings in one query — GraphQL complexity limits bite. Fetch metadata in one query, then fetch transcripts per-meeting in response to webhooks.summary - Webhook choice: For new integrations, use Webhooks V2 (+
meeting.transcribedevents, granular subscription). V1 still works but only fires one event and uses a different payload shape.meeting.summarized - Rate-limit sizing: Free/Pro = 50 req/day — barely enough for backfills. Business/Enterprise = 60 req/min — the only realistic tier for a production pipeline. Anything beyond that needs queue-and-retry.
- Team-wide webhooks require Enterprise + Super Admin role. Without those, each user must configure their own webhook — doesn't scale.
references/learnings.mdGotchas
- Webhooks fire only for meeting owners (). If a non-owner attendee recorded the meeting via Fred, no webhook fires for them. Team-wide webhooks exist but require Enterprise + Super Admin.
organizer_email - V1 and V2 webhooks coexist. Both use with
X-Hub-Signatureformat, but V1 has one event (sha256=<hex>) withTranscription completedpayload, while V2 supportsmeetingId/eventTypeandmeeting.transcribedwithmeeting.summarized. Don't mix consumers.meeting_id/event/timestamp - ≠
meeting.transcribed. Transcript is ready before the AI summary is. Subscribe to both if you need action items / notes — or accept a 1-3 minute delay and fetch summary by polling after transcript.meeting.summarized - Free and Pro tiers are capped at 50 API requests per day. A single backfill of 500 historical meetings will hit this hard. Upgrade to Business or Enterprise for a 60 req/min ceiling.
- Add to Live is 3 req per 20 min, Share Meeting is 10 req/hour (up to 50 emails per request) — these are separate from the standard GraphQL limits.
- Upload limits: 200MB audio for all tiers; 100MB video on Free, 1.5GB video on paid tiers.
- Bot auto-join complaints are common — granting calendar access makes Fred auto-join every scheduled call. Users frequently ask how to disable this; point them to the Fireflies dashboard's Auto-join settings (calendar-level and meeting-level).
- API key is user-scoped — it only accesses meetings that user recorded or that were shared to them. For a shared team pipeline, use Super Admin.
- 10-second webhook response SLA on V2. Non-2xx or a timeout marks delivery failed. Do not do heavy processing inside the webhook handler — enqueue and ack immediately.
Related skills
- — Note-taker selection + cross-vendor integration patterns (Fathom, Fireflies, Avoma, Gong, Otter, Fellow, Grain, Sembly, Read.ai)
/sales-note-taker - — Fathom platform help (REST API, Svix HMAC, OAuth, SDKs, MCP, pricing)
/sales-fathom - — Review a specific call for coaching
/sales-call-review - — Build coaching programs that consume call data
/sales-coaching - — General CRM/tool integration patterns (Zapier, webhooks, iPaaS)
/sales-integration - — Not sure which skill to use? The router matches any sales objective to the right skill. Install:
/sales-donpx skills add sales-skills/sales --skill sales-do
Examples
Example 1: Transcripts not arriving in Snowflake after webhook event
- Recognizes the classic "transcribed ≠ summarized" race — V1 webhook fires the moment ASR completes, often before AskFred summary is generated
- Recommends migrating to Webhooks V2 and subscribing to instead of (or in addition to)
meeting.summarized— then fetch transcript after summary eventmeeting.transcribed - Alternative: keep V1 and re-fetch from query 60-180s after the webhook, with exponential backoff
transcript(id: ...) - Notes that V2 also gives timing-safe signature comparison headers (on
sha256=<hex>) — points to the Node/Python examples inX-Hub-SignatureResult: Root-caused the empty-transcript race, with two concrete fixes.references/fireflies-api-reference.md
Example 2: Picking a tier for a 30-person sales team with warehouse pipeline
- Rules out Free ($0) and Pro ($10/seat) — both capped at 50 API requests per day, would break on day one of backfill
- Recommends Business ($19/seat) for the 60 req/min ceiling, unlimited storage, and video recording
- Flags that team-wide webhooks require Enterprise + Super Admin ($39/seat) — without it, each rep has to configure their own webhook
- Suggests Enterprise if compliance (HIPAA, custom retention) or SSO/SCIM matters, otherwise Business with a shared team API key from the super-admin
- Architecture sketch: Webhooks V2 → Cloud Run →
meeting.summarizedquery → raw JSON to GCS + normalized rows to BigQuery via scheduled load Result: Tier recommendation grounded in both pricing and the team-webhook gotcha.transcripts(id: ...)
Example 3: Fred bot joining meetings nobody invited him to
- Explains the behavior — granting calendar access causes Fred to auto-join every scheduled meeting by default
- Points to the Auto-join settings in the Fireflies dashboard: globally toggle off, or per-meeting toggle via calendar event title (,
#noff) or direct disable#onff - For Teams/Zoom admins wanting to block Fred at org level: remove calendar OAuth scope, block the Fred user in Teams admin center, or use SSO to deprovision
- Notes this is the #1 user complaint on G2/Reddit — not a bug, a default setting Result: Tactical fix plus org-level block path.
Troubleshooting
Webhook doesn't fire at all
organizer_emailContent-Type: application/json"auth_failed" or 401 on GraphQL calls
{"errors": [{"message": "auth_failed"}]}Authorization: Bearer your_api_keyBearerHitting 50 req/day on Free/Pro during a backfill
date_fromdate_totranscripts(...)