Fireflies Observability
Overview
Monitor Fireflies.ai meeting transcription quality, bot join reliability, and transcript processing latency.
Prerequisites
-
Fireflies Business or Enterprise plan
-
API access via GraphQL endpoint
-
Calendar integration (Google Calendar or Outlook) connected
Instructions
Step 1: Monitor Bot Join Reliability
set -euo pipefail
Query recent meetings and check bot join status
curl -X POST https://api.fireflies.ai/graphql
-H "Authorization: Bearer $FIREFLIES_API_KEY"
-d '{"query": "{ transcripts(limit: 50) { id title date duration bot_joined processing_status speakers { name } } }"}' |
jq '.data.transcripts[] | {title, date, bot_joined, status: .processing_status, speakers: (.speakers | length)}'
Step 2: Track Transcript Processing Latency
// fireflies-metrics.ts
async function monitorProcessing() {
const res = await firefliesGQL({ transcripts(limit: 20) { id date duration processing_status processed_at } });
for (const t of res.data.transcripts) {
if (t.processing_status === 'completed' && t.processed_at) {
const meetingEnd = new Date(t.date).getTime() + t.duration * 60000; # 60000: 1 minute in ms
const processedAt = new Date(t.processed_at).getTime();
const processingMinutes = (processedAt - meetingEnd) / 60000; # 1 minute in ms
emitHistogram('fireflies_processing_time_min', processingMinutes);
}
emitCounter('fireflies_transcripts_total', 1, { status: t.processing_status });
}
}
Step 3: Measure Per-Seat Utilization
// Identify seats with low usage to optimize licensing costs
async function seatUtilization() {
const members = await firefliesGQL({ teamMembers { id email transcripts_count last_active } });
for (const m of members.data.teamMembers) {
emitGauge('fireflies_seat_usage', m.transcripts_count, { user: m.email });
if (m.transcripts_count < 5 && daysSince(m.last_active) > 30) {
console.warn(Low utilization seat: ${m.email} (${m.transcripts_count} transcripts, inactive ${daysSince(m.last_active)}d));
}
}
}
Step 4: Alert on Issues
groups:
- name: fireflies
rules:
- alert: FirefliesBotNotJoining expr: rate(fireflies_transcripts_total{status="bot_failed"}[6h]) > 2 annotations: { summary: "Fireflies bot failed to join 2+ meetings in 6 hours" }
- alert: FirefliesProcessingSlow expr: histogram_quantile(0.95, rate(fireflies_processing_time_min_bucket[6h])) > 30 annotations: { summary: "Fireflies transcript processing P95 exceeds 30 minutes" }
- alert: FirefliesLowSeatUtilization expr: count(fireflies_seat_usage < 2) > 5 annotations: { summary: "5+ Fireflies seats with <2 transcripts (review licensing)" }
Step 5: Dashboard Panels
Track: bot join success rate (pie chart), transcript processing latency distribution, meetings recorded per day, per-seat utilization (table), speaker count distribution, and average meeting duration. Use utilization data to right-size your Fireflies seat count.
Error Handling
Issue Cause Solution
Bot not joining Calendar permission revoked Re-authorize calendar integration
Transcript stuck processing Audio quality too poor Check meeting audio source, avoid Bluetooth
No speakers detected Single audio channel Enable speaker diarization in settings
High seat cost per transcript Too many inactive seats Remove members with <2 transcripts/month
Examples
Basic usage: Apply fireflies observability to a standard project setup with default configuration options.
Advanced scenario: Customize fireflies observability for production environments with multiple constraints and team-specific requirements.
Output
-
Configuration files or code changes applied to the project
-
Validation report confirming correct implementation
-
Summary of changes made and their rationale
Resources
-
Official monitoring documentation
-
Community best practices and patterns
-
Related skills in this plugin pack