Files
twenty/packages/twenty-apps/fireflies
2025-11-04 15:07:30 +01:00
..

Fireflies

Automatically captures meeting notes with AI-generated summaries and insights from Fireflies.ai into your Twenty CRM.

Integration Overview

Fireflies webhook → Fireflies API → Twenty CRM with summary-focused insights

  • Summary-first approach - Prioritizes action items, keywords, and sentiment over raw transcripts
  • HMAC signature verification - Secure webhook authentication
  • Two-phase architecture - Webhook notification → API data fetch → CRM record creation
  • Contact identification - Matches participants to existing contacts or creates new ones
  • One-on-one meetings (2 people) → Individual notes linked to each contact
  • Multi-party meetings (3+ people) → Meeting records with all attendees
  • Business intelligence extraction - Action items, sentiment scores, topics, meeting types
  • Smart retry logic - Handles async summary generation with exponential backoff
  • Links transcripts and recordings - Easy access to full Fireflies content
  • Duplicate prevention - Checks for existing meetings by title

API Access by Subscription Plan

Fireflies API access varies significantly by subscription tier:

Feature Free Pro Business Enterprise
API Rate Limit 50 requests/day 50 requests/day 60 requests/minute 60 requests/minute
Storage 800 mins/seat 8,000 mins/seat Unlimited Unlimited
AI Summaries Limited (20 credits) Unlimited Unlimited Unlimited
Video Upload 100MB max 1.5GB max 1.5GB max 1.5GB max
Advanced Features Basic transcription AI apps, analytics Team analytics, CI Full API, SSO, compliance

Key Design Pattern: Subscription-based API access uses tiered rate limiting rather than feature gating. Lower tiers get severely restricted throughput (50/day vs 60/minute = 1,700x difference), making production integrations effectively require Business+ plans.

Pro Plan Limitation: Despite "unlimited" AI summaries, the 50 requests/day limit severely constrains production usage for meeting-heavy organizations.

What Gets Captured

Summary & Insights

  • Action Items - Concrete next steps and commitments
  • Keywords - Key topics and themes discussed
  • Overview - Executive summary of the meeting
  • Topics Discussed - Main discussion points
  • Meeting Type - Context (sales call, standup, demo, etc.)

Analytics

  • Sentiment Analysis - Positive/negative/neutral percentages for deal health
  • Engagement Metrics - Participation levels (future)

Resources

  • Transcript Link - Quick access to full Fireflies transcript
  • Recording Link - Video/audio recording when available

Quick Start

Installation

# Step 1: Authenticate with Twenty
npx twenty-cli auth login

# Step 2: Sync the app to create Meeting object
npx twenty-cli app sync packages/twenty-apps/fireflies

# Step 3: Install dependencies
yarn install

# Step 4: Add custom fields
yarn setup:fields

(TODO: change when fields setup internal support)

Configuration

⚠️ Important: The integration uses conservative retry settings to respect Fireflies' 50 requests/day API limit with free/pro plans. You may increase for more reactivity with higher plans.

Required Environment Variables:

FIREFLIES_API_KEY=your_api_key          # From Fireflies settings
TWENTY_API_KEY=your_api_key             # From Twenty CRM settings
SERVER_URL=https://your-domain.twenty.com

Optional (Recommended):

FIREFLIES_WEBHOOK_SECRET=your_secret    # For webhook security

📖 For detailed configuration, troubleshooting, and rate limit management, see WEBHOOK_CONFIGURATION.md

What Gets Created

Basic Installation (Step 2)

The app sync command creates:

  • Meeting object with basic name field
  • Webhook endpoint at /s/webhook/fireflies

After Custom Fields Setup (Step 4)

The setup:fields script adds 13 custom fields to store rich Fireflies data:

Field Name Type Label Description
notes RICH_TEXT Meeting Notes AI-generated summary with overview, topics, action items, and insights
meetingDate DATE_TIME Meeting Date Date and time when the meeting occurred
duration NUMBER Duration (minutes) Meeting duration in minutes
meetingType TEXT Meeting Type Type of meeting (e.g., Sales Call, Sprint Planning, 1:1)
keywords TEXT Keywords Key topics and themes discussed (comma-separated)
sentimentScore NUMBER Sentiment Score Overall meeting sentiment (0-1 scale, 1 = most positive)
positivePercent NUMBER Positive % Percentage of positive sentiment in conversation
negativePercent NUMBER Negative % Percentage of negative sentiment in conversation
actionItemsCount NUMBER Action Items Number of action items identified
transcriptUrl LINKS Transcript URL Link to full transcript in Fireflies
recordingUrl LINKS Recording URL Link to video/audio recording in Fireflies
firefliesMeetingId TEXT Fireflies Meeting ID Unique identifier from Fireflies
organizerEmail TEXT Organizer Email Email address of the meeting organizer

Then re-sync:

npx twenty-cli app sync

Note: Without custom fields, meetings will be created with just the title. The rich summary data will only be stored in Notes for 1-on-1 meetings.

Configuration

Required Environment Variables

Check .env.example

Summary Processing Strategies

Strategy Description Use Case
immediate_only Single fetch attempt, no retries Fast processing, accept missing summaries if not ready
immediate_with_retry Attempts immediate fetch, retries with backoff Recommended - Balances speed and reliability
delayed_polling Schedules background polling For heavily loaded systems
basic_only Creates records without waiting for summaries For basic transcript archival only

Webhook Setup

Step 1: Get Your Webhook URL

Your webhook endpoint will be:

https://your-twenty-instance.com/s/webhook/fireflies

Step 2: Configure Fireflies Webhook

  1. Log into Fireflies.ai
  2. https://app.fireflies.ai/settings#DeveloperSettings
  3. Enter your webhook URL
  4. Set Secret: Generate from there and set value of FIREFLIES_WEBHOOK_SECRET
  5. Save configuration

Step 3: Verify Webhook

The integration uses HMAC SHA-256 signature verification:

  • Fireflies sends x-hub-signature header
  • Twenty verifies signature using your webhook secret
  • Invalid signatures are rejected immediately

Development

# Run tests
npm test

# Run tests in watch mode
npm run test -- --watch

# Development mode with live sync
npx twenty-cli app dev

# Type checking
npx tsc --noEmit

Testing

The integration includes comprehensive test coverage:

# Run all tests
npm test

# Run specific test suite
npm test -- fireflies-webhook.spec.ts

# Run with coverage
npm test -- --coverage

Test Coverage

  • HMAC signature verification
  • Fireflies GraphQL API integration
  • Summary processing with retry logic
  • Summary-focused CRM record creation
  • One-on-one vs multi-party meeting detection
  • Contact matching and creation
  • Duplicate prevention
  • Error handling and resilience

CRM Record Structure

One-on-One Meeting Note Example

# Meeting: Product Demo with Client (Sales Call)

**Date:** Monday, November 2, 2024, 02:00 PM
**Duration:** 30 minutes
**Participants:** Sarah Sales, John Client

## Overview
Successful product demonstration with positive client feedback.
Client expressed strong interest in the enterprise plan.

## Key Topics
- product features
- pricing discussion
- integration capabilities
- support options

## Action Items
- Follow up with pricing proposal by Friday
- Schedule technical deep-dive next week
- Share case studies from similar clients

## Insights
**Keywords:** product demo, pricing, technical requirements, integration
**Sentiment:** 75% positive, 10% negative, 15% neutral
**Meeting Type:** Sales Call

## Resources
[View Full Transcript](https://app.fireflies.ai/transcript/xxx)
[Watch Recording](https://app.fireflies.ai/recording/xxx)

Multi-Party Meeting Record

  • Meeting object with title, date, and all attendees
  • Summary stored as meeting notes (structure same as above)
  • Action items potentially converted to separate tasks (future)
  • Keywords as tags/categories (future)

Future Implementation Opportunities

Past Meetings Retrieval

  • New trigger to retrieve past meetings from a contact - Enable users to fetch historical meeting data from Fireflies for specific contacts, allowing retrospective capture and analysis of past interactions.

Next iteration would enhance the intelligence layer to:

AI-Powered Insights

  • Extract pain points, objections & buying signals automatically from transcripts
  • Calculate deal health scores based on conversation sentiment trends
  • Auto-create contextualized tasks with AI-suggested next steps and priorities
  • Proactively flag at-risk deals when negative signals appear
  • Track conversation patterns that correlate with deal success

Enhanced Analytics

  • Action item completion tracking across deals
  • Sentiment trend analysis over time for account health
  • Speaking time analysis for meeting engagement insights
  • Topic clustering for product/feature interest patterns

Workflow Automation

  • Auto-assign follow-up tasks based on action items
  • Smart notifications for urgent follow-ups
  • Deal stage progression based on meeting outcomes
  • Competitive intelligence extraction from conversations

Integration: Fireflies webhook → AI processing layer → Enhanced Twenty records

This would require the current MVP to be stabilized and discussions about intelligence layer architecture and data privacy considerations.