b578ea5951
# Fireflies Automatically (with cli util : webhook not working and no cron added) captures meeting notes with AI-generated summaries and insights from Fireflies.ai into your Twenty CRM. ## Current Status - Doesn't work with Fireflies webhook yet due to missing headers forwarding in twenty serverless func - Meeting ingestion utility script are available for individual meeting insertion and historical meetings with filters with yarn meeting:all - You have to push the secrets as application.config.ts values (despite env variables in .env in docker compose or container I couldn't push the secrets with the cli) ## Current Platform Limitation (Headers) - Twenty serverless route triggers currently do **not forward HTTP headers** to functions. Fireflies signatures sent in headers are stripped, so header-based verification does not work in production. - Workaround: the provided test script also includes the signature inside the payload; the handler falls back to that payload signature. Use this only for testing until header forwarding is supported. ## Utilities for meeting insertion (workarounds) - Ingest a specific Fireflies meeting into Twenty: `yarn meeting:ingest <meetingId>` or `MEETING_ID=... yarn meeting:ingest` - Fetch all/historical Fireflies meetings into Twenty: `yarn meeting:all [--from 2024-01-01] [--to 2024-02-01] [--organizer a@x.com] [--participant b@x.com] [--channel <channelId>] [--mine] [--dry-run]` - Filters (combine as needed): - `--from` / `--to`: ISO or date string range filter - `--organizer` / `--participant`: comma-separated emails - `--channel`: Fireflies channel id - `--mine`: only meetings for the current Fireflies user - Controls: - `--dry-run`: list and transform without writing to Twenty - `--page-size`: pagination size (default 50) - `--max-records`: stop after N transcripts (default 500) I am closing previous #16378 as this one includes it all
10 KiB
10 KiB
Changelog
[0.3.1] - 2025-12-08
Import all
Added
- Historical import CLI:
yarn meeting:allto fetch and insert historical Fireflies meetings with filters (date range, organizers, participants, channel, mine) and dry-run support. - Fireflies transcripts listing with pagination and date filtering to support bulk imports.
Changed
- Deduplication now checks
firefliesMeetingIdbefore creating meetings (webhook + bulk). - Shared historical importer pipeline reusing existing note/meeting formatting.
[0.3.0] - 2025-12-08
Subscription-based query / Full transcript and AI notes for Pro+ / More
Added
- Full transcript capture: Meeting object now stores the complete meeting transcript with speaker names and timestamps (
transcriptfield) - Rich AI meeting notes: Captures detailed AI-generated meeting notes from Fireflies (
notesfield with 7,000+ char summaries) - Expanded summary fields: Now fetches all available Fireflies summary data:
notes- Detailed AI-generated meeting notes with timestamps and section headersbullet_gist- Emoji-enhanced bullet point summariesoutline/shorthand_bullet- Timestamped meeting outlinegist- One-sentence meeting summaryshort_summary- Single paragraph summaryshort_overview- Brief overview
- New Meeting fields:
transcript- Full meeting transcript with speaker attributionnotes- AI-generated detailed notesaudioUrl- Link to audio recording (Pro+)videoUrl- Link to video recording (Business+)meetingLink- Original meeting linkneutralPercent- Neutral sentiment percentage
- Meeting delete utility: New
yarn meeting:delete <meetingId>script for cleanup and re-import - Debug meeting utility: New
scripts/debug-meeting.tsto inspect raw Fireflies API responses
Changed
- Plan-based GraphQL queries: Completely redesigned query system with three tiers:
- Free: Basic fields only (title, date, duration, participants, transcript_url, meeting_link)
- Pro: Adds full transcript (
sentences), summary fields, speakers, audio_url - Business+: Adds analytics, video_url, speaker stats, meeting metrics
- Action items parsing: Fixed parsing of
action_itemswhich Fireflies returns as newline-separated string, not array - Note body format: Enhanced with Meeting Notes, Outline, Key Points sections from rich Fireflies data
- Import status: Added
PARTIALstatus for imports missing summary/analytics data
Fixed
- Missing
notesandbullet_gistfields in data transform (were fetched but not passed through) - Proper fallback: Uses
shorthand_bulletwhenoutlineis empty (Fireflies stores outline content there) - Summary readiness detection now checks
notesfield in addition tooverviewandaction_items
Documentation
- Updated README with complete API access comparison table by subscription plan
- Documented all available Fireflies summary fields and their plan requirements
[0.2.3] - 2025-12-06
Added
- Meeting ingest utility: New
yarn meeting:ingest <meetingId>script to manually fetch and import specific Fireflies meetings into Twenty - Plan-based field selection: Added
FIREFLIES_PLANconfiguration to control which GraphQL fields are requested based on subscription level (free, pro, business, enterprise) - Main entry point: New
src/index.tscentralizing all exports for cleaner imports
Changed
- Auth configuration: Disabled authentication requirement for webhook route (
isAuthRequired: false) to support serverless deployments - Signature verification fallback: Webhook handler now supports signature in payload body as fallback when HTTP headers aren't forwarded to serverless functions (production doesn't work for Fireflies webhook)
- Improved type safety: Replaced
anytypes with proper TypeScript types throughout codebase
Enhanced
- Webhook debugging: Added detailed debug output including param keys, header info, and signature comparison details
- Test webhook script: Includes signature in both header and payload, with diagnostic output for header forwarding status
- Documentation: Added README sections on current twenty headers forward limitations and utility scripts
[0.2.2] - 2025-11-04
Added
- Enhanced logging system: Introduced configurable
AppLoggerclass with log level support (debug, info, warn, error, silent)- Environment-based log level configuration via
LOG_LEVELenvironment variable - Test environment detection to prevent log noise during testing
- Context-aware logging with proper prefixes for better debugging
- Environment-based log level configuration via
- Improved error handling: Enhanced webhook signature verification with detailed debug logging
- Better debugging capabilities: Added comprehensive logging throughout webhook processing pipeline
Enhanced
- Webhook signature verification: Improved signature validation with detailed logging for troubleshooting
- Error messages: More descriptive error logging for failed operations and security violations
- Development experience: Better debugging information for webhook processing and API interactions
[0.2.1] - 2025-11-03
Added
- Import status tracking: Added four new meeting fields to track import status and failure handling:
importStatus(SELECT) - Tracks SUCCESS, FAILED, PENDING, RETRYING statesimportError(TEXT) - Stores error messages when imports faillastImportAttempt(DATE_TIME) - Timestamp of the last import attemptimportAttempts(NUMBER) - Counter for number of import attempts
- Automatic failure tracking: Enhanced webhook handler to automatically create failed meeting records when processing fails
- Failed meeting formatter: Added
toFailedMeetingCreateInput()method to create standardized failed meeting records
Enhanced
- Meeting type definition: Extended
MeetingCreateInputtype with import tracking fields - Success status tracking: Successful meeting imports now automatically set
importStatus: 'SUCCESS'and track timestamps - Error handling: Webhook processing failures are now captured and stored as meeting records for visibility and potential retry
[0.2.0] - 2025-11-03
Changed
- Major refactoring: Split monolithic
receive-fireflies-notes.tsinto modular architecture:fireflies-api-client.ts- Fireflies GraphQL API integration with retry logictwenty-crm-service.ts- Twenty CRM operations (contacts, notes, meetings)formatters.ts- Meeting and note body formattingwebhook-handler.ts- Main webhook orchestrationwebhook-validator.ts- HMAC signature verificationutils.ts- Shared utility functionstypes.ts- Centralized type definitions
- Schema update: Changed Meeting
notesfield fromRICH_TEXTtoRELATIONtype linking to Note object - Enhanced participant extraction from multiple Fireflies API data sources (participants, meeting_attendees, speakers, meeting_attendance)
- Improved organizer email matching with name-based heuristics
- Updated note creation to use
bodyV2.markdownformat instead of legacybodyfield - Modernized Meeting object schema with proper link field types for transcriptUrl and recordingUrl
- Enhanced test suite with improved mocking for new modular structure
- Configuration optimization: Reduced default retry attempts from 30 to 5 with increased delay (120s) to better respect Fireflies API rate limits (50 requests/day for free/pro plans)
- Updated field setup script to support relation field creation with Note object
- Restructured exports: types now exported from
types.ts, runtime functions fromindex.ts - Updated import paths in action handlers to use centralized index exports
- Added TypeScript path mappings for
twenty-sdkin workspace configuration
Added
createNoteTargetmethod for linking notes to multiple participants- Support for extracting participants from extended Fireflies API response formats
- Better organizer identification logic matching email usernames to speaker names
axiosdependency for improved HTTP client capabilities- API subscription plan documentation highlighting rate limit differences (50/day vs 60/minute)
- Enhanced README with rate limiting guidance and configuration documentation
- Relation field creation support in field provisioning script
Fixed
- Note linking now properly associates a single note with multiple participants in 1:1 meetings
- Participant extraction handles missing email addresses gracefully
- Improved handling of various Fireflies participant data structures
- Test mocks updated to use string format for participants (
"Name <email>") matching Fireflies API response format - Test assertions updated to validate
bodyV2.markdowninstead of deprecatedbodyfield
[0.1.0] - 2025-11-02
Added
- HMAC SHA-256 signature verification for incoming Fireflies webhooks
- Fireflies GraphQL client with retry logic, timeout handling, and summary readiness detection
- Summary-focused meeting processing that extracts action items, sentiment, keywords, and transcript/recording links
- Scripted custom field provisioning via
yarn setup:fields - Local webhook testing workflow via
yarn test:webhook - Comprehensive Jest suite (15 tests) covering authentication, API integration, summary strategies, and error handling
Changed
- Replaced legacy JSON manifests with TypeScript configuration:
application.config.tsnow declares app metadata and configuration variablessrc/objects/meeting.tsdefines the Meeting object via@ObjectMetadatasrc/actions/receive-fireflies-notes.tsexports the Fireflies webhook action plus its runtime config
- Updated documentation (README, Deployment Guide, Testing) to reflect the new project layout and workflows
- Switched utility scripts to
tsxand aligned package management with the hello-world example
Fixed
- Resolved real-world Fireflies payload mismatch by adopting the minimal webhook schema
- Replaced body-based secrets with header-driven HMAC verification
- Ensured graceful degradation when summaries are pending or Fireflies is temporarily unavailable