Connect your Fireflies account once and activate the workflow — every Monday at 9AM it runs automatically without any input from you. It pulls all sales call transcripts from the past 7 days, analyzes each one with GPT-4o-mini, and extracts six intelligence fields: pricing mentions, objections, buying signals, competitor mentions, a key takeaway, and a recommended next action. Every call is logged as one row in Google Sheets and a full weekly digest is posted to your Slack channel. Built for sales managers and revenue teams who want structured call intelligence delivered without manual review.
Estimated Setup Time: 15–20 minutes
Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import
Get your Fireflies API key — Log in to fireflies.ai → go to Settings → Integrations → copy your API key
Fill in Config Values — Open node 2. Set — Config Values → replace all placeholders:
| Field | What to enter |
|---|---|
YOUR_FIREFLIES_API_KEY |
Your Fireflies API key from step 2 |
YOUR_GOOGLE_SHEET_ID |
The ID from your Google Sheet URL (the string between /d/ and /edit) |
Sales Call Analysis |
Leave as-is, or change to match your sheet tab name exactly |
#sales-team |
Your Slack channel name including the # |
YOUR COMPANY NAME |
Your company name (used in the AI prompt and Slack report) |
salesKeywords |
Comma-separated keywords to identify sales calls (default: sales,client,demo,proposal,pricing,onboarding,deal,contract) |
Connect OpenAI — Open node 10. OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection
Create your Google Sheet — Open Google Sheets → create a new sheet → add a tab named exactly Sales Call Analysis → add these 13 column headers in row 1: Call Date, Meeting Title, Duration (min), Participants, Overall Sentiment, Pricing Mentions, Objections, Buying Signals, Competitor Mentions, Key Takeaway, Recommended Action, Transcript URL, Logged At
Connect Google Sheets — Open node 13. Google Sheets — Log Call Analysis → click the credential dropdown → add Google Sheets OAuth2 → sign in with your Google account → authorize access
Connect Slack — Open node 15. Slack — Send Weekly Report → click the credential dropdown → connect your Slack workspace via OAuth2 → invite the n8n bot to your sales channel in Slack (/invite @n8n)
Activate the workflow — Toggle the workflow to Active — it will run automatically every Monday at 9AM
⚠️ Test before Monday — To test immediately without waiting for Monday, open node 1. Schedule — Every Monday 9AM, click "Execute step", then run the full workflow manually from there.
Step 1 — Schedule: Every Monday 9AM
This step fires the workflow automatically every Monday morning at 9AM. No manual trigger is needed. Once the workflow is active, this runs on its own every week.
Step 2 — Set: Config Values
Your Fireflies API key, Google Sheet ID, sheet tab name, Slack channel, company name, sales keywords, and the 7-day date window are all stored here. The week start and end dates are calculated automatically based on today's date so you never need to update them manually.
Step 3 — HTTP: Fetch Recent Transcripts
A request is sent to the Fireflies API using your API key. It retrieves the 50 most recent transcripts from your account, including each call's ID, title, date, duration, and participants. This is a lightweight fetch — full transcript content comes later.
Step 4 — Code: Filter Last 7 Days
The 50 transcripts are filtered down to only those recorded in the past 7 days. Each transcript that passes the filter becomes its own separate item so the next steps process each call individually. If no transcripts exist at all, a fallback result is passed forward.
Step 5 — IF: Any Transcripts Found?
This is the gate check. If transcripts were found (YES path), each one moves forward to full analysis. If no transcripts were found this week (NO path), the workflow routes to 6. Set — No Calls This Week and stops cleanly — no errors, no empty reports.
Step 6 — Set: No Calls This Week
This step handles the empty-week case. It sets a simple message confirming no calls were recorded and the workflow ends here for that run.
Step 7 — HTTP: Fetch Full Transcript
For each call that passed the filter, a second Fireflies API request is made to retrieve the complete transcript details: all sentences with speaker labels, AI-detected pricing sentences, questions, tasks, keyword summary, overview, and sentiment percentages.
Step 8 — Code: Extract Transcript Data
The full transcript is processed here. Sentences are assembled into readable text (limited to 4,000 characters for GPT efficiency). Fireflies AI-flagged pricing sentences and question sentences are extracted separately. Sentiment percentages are converted into a single label: Positive, Mostly Positive, Mixed, or Negative. All data is packaged cleanly for the AI step.
Step 9 — AI Agent: Analyze Sales Call
GPT-4o-mini receives the call details, sentiment data, Fireflies-detected pricing sentences, keywords, overview, and the transcript excerpt. It returns exactly six fields: pricing mentions, objections, buying signals, competitor mentions, a key takeaway under 25 words, and a recommended action for the sales rep to take within 48 hours.
Step 10 — OpenAI: GPT-4o-mini Model
This is the language model powering the analysis step. It runs at temperature 0.3 for consistent, factual extraction and is capped at 800 tokens per call to keep costs predictable across the full week's batch.
Step 11 — Parser: Structured Call Analysis
This step enforces the exact six-field schema GPT-4o-mini must return. It validates that all required fields are present and correctly typed before the results move forward, preventing malformed output from reaching your sheet.
Step 12 — Code: Combine Analysis Results
The AI output is merged with the original transcript metadata (date, title, duration, participants, sentiment, transcript URL). A log timestamp is also added. This creates the complete data row that goes to both Google Sheets and the Slack aggregation step.
Step 13 — Google Sheets: Log Call Analysis
One row is appended to your Sales Call Analysis tab for every call analyzed. All 13 columns are populated: date, title, duration, participants, sentiment, pricing, objections, buying signals, competitors, key takeaway, recommended action, transcript URL, and logged-at timestamp.
Step 14 — Code: Build Weekly Slack Summary
All analyzed calls are aggregated into a single weekly digest. The code counts total calls, positive calls, calls with objections, calls with buying signals, and compiles unique competitor mentions. The top 3 objections and top 3 buying signals are pulled from across all calls. A call-by-call overview line is added for every transcript.
Step 15 — Slack: Send Weekly Report
The complete weekly digest is posted to your Slack channel. The message includes the week date range, summary totals, top objections, top buying signals, competitor mentions, and a one-line overview of every call. A footer confirms the full analysis is logged in Google Sheets.
✅ Fully automated weekly cadence — Runs every Monday at 9AM with zero manual input after setup
✅ Per-call AI intelligence — Each call gets its own six-field analysis, not a rolled-up average
✅ Fireflies AI signals as input — Pricing sentences and questions detected by Fireflies are fed directly into GPT for more accurate extraction
✅ Structured output enforced — A schema parser validates every AI response before it reaches your sheet — no broken rows
✅ Sentiment scoring per call — Each call is rated Positive, Mostly Positive, Mixed, or Negative based on Fireflies sentiment percentages
✅ Competitor tracking built in — Competitor mentions are collected across all calls and deduplicated into one list in the Slack report
✅ 48-hour action item per call — Every call ends with one concrete action the sales rep should take — not a vague suggestion
✅ Clean empty-week handling — No transcripts this week means a clean stop, not an error or blank Slack message
Change the schedule day or time — In node 1. Schedule — Every Monday 9AM, edit the cron expression 0 9 * * 1 to run on a different day or time. For example, 0 8 * * 5 runs every Friday at 8AM for an end-of-week review instead.
Increase the transcript fetch limit — In node 3. HTTP — Fetch Recent Transcripts, change limit: 50 in the GraphQL query body to 100 if your team records more than 50 calls per week to ensure no calls are missed.
Expand the date window beyond 7 days — In node 2. Set — Config Values, change {days: 7} in both the weekStart and sevenDaysAgoMs fields to {days: 14} for a bi-weekly analysis window.
Add a Slack alert for high-objection calls — After node 12. Code — Combine Analysis Results, add an IF check: if the objections field does not contain "No objections", post an immediate Slack alert to a #deal-risk channel so the sales manager can follow up same day.
Add a Gmail summary to the sales manager — After node 15. Slack — Send Weekly Report, add a Gmail node to also email the full weekly digest to your sales manager's inbox as a backup record outside of Slack.
Filter to specific call types using keywords — In node 2. Set — Config Values, edit the salesKeywords field to narrow analysis to specific call types — for example, change to demo,discovery,closing to analyze only those pipeline stages.
Fireflies returning no transcripts or an auth error:
YOUR_FIREFLIES_API_KEY in node 2. Set — Config Values is replaced with your actual key — not the placeholder textWorkflow not triggering on Monday:
0 9 * * 1 — any edit to this field can break the scheduleGoogle Sheets not logging rows:
YOUR_GOOGLE_SHEET_ID in node 2. Set — Config Values matches the ID in your sheet URL exactlysheetName in Config ValuesAI returning incomplete or missing fields:
Slack report not arriving:
# prefix and matches your actual Slack channel name exactly/invite @n8n in your Slack channel to ensure the bot has posting permissionNeed help setting this up or want a custom version built for your team or agency?
📧 Email: [email protected]
🌐 Website: https://isawow.com/