ChatGPTSalesFinding leadsAI score · PendingAI-assisted edit · no obvious prompt-injection riskn8n.io

Auto-Monitor Client Meeting Health with n8n: Fireflies + GPT-4o-mini + Google Sheets + Slack

Input: Fireflies meeting recordings → Process: extract sentiment scores and analyze churn risk with GPT-4o-mini → Output: Google Sheets log + Slack urgent alerts

ExperiencedStepsWorkflowPrompt
Who
Account managers, customer success teams, agency leads
You get
Automatically scan last week's client meetings every Monday, flag negative sentiment and high churn-risk meetings with instant alerts
You need
n8n · fireflies · openai · google-sheets · slack

Constraints

Prerequisites: n8n instance (self-hosted or cloud), Fireflies.ai API key, OpenAI API key, Google Sheets OAuth2, Slack OAuth2. Create a Google Sheet tab named 'Client Sentiment Log' with 15 column headers. Estimated setup time 15–20 minutes. Source does not provide runtime cost estimates.

What they did

Author isawow published an official n8n template that automatically pulls the last 7 days of Fireflies transcripts every Monday, extracts built-in NLP sentiment scores, sends each transcript to GPT-4o-mini for contextual analysis (explaining sentiment, scoring churn risk, extracting a key quote, and recommending action), logs every meeting to Google Sheets, and sends urgent Slack alerts for negative or high-risk meetings.

How it went

The author reports the template delivers fully automated weekly cadence, dual-layer sentiment analysis, automatic client name extraction, emoji-coded visualization, alert-only-when-needed behavior, and clean empty-week exit. These are author-reported outcomes (author_report); this site has not independently tested them.

Worth knowing

Alert threshold can be adjusted in node 12 (currently fires on Negative and Mostly Negative). Date window can be changed from 7 to 14 days in node 2. Author suggests extensions: weekly digest to #client-health, keyword filtering for client-only meetings, or Gmail follow-up for Critical risk. Known limitations: Fireflies API access may be plan-restricted; Google Sheet tab name and headers must match exactly; Slack channel names need the # prefix; AI output that violates the 4-field schema is blocked by the Parser node.

n8n workflow template

Structure checked · Not run-tested

Use “Import from File” in n8n, or copy the JSON and paste it into the editor. Connect your own accounts, then try test data. The template is inactive by default.

Setup and test checklist

Credentials to connect

  • After import, connect your own credentials on auth-required nodes; author secrets are not included.

Configuration to replace

  • Source template is n8n public workflow #15070 (~22 nodes). Keep inactive after import; verify triggers, expressions and external API endpoints.
  • Sticky-note guidance is informational; replace placeholders with your own accounts, sheet schemas or channel IDs.

Test input and expected output

  • Manually run the main path once in a test workspace and confirm credentialed nodes authenticate without errors.
  • Drive one synthetic/redacted sample through and check output fields and downstream writes before enabling in production.

Template changes

  • Author credential bindings, webhookId and execution data are removed; the workflow is inactive. Nodes, connections and original prompts are preserved. Not run-tested in n8n.
  • No business-logic edits; verify keys, quotas and privacy compliance before use.

Template retrieved: 2026-10-24

Steps

  1. Import workflow and configure scheduled trigger

    In n8n, open Workflows → Import from JSON, paste the workflow.json, and click Import. The workflow runs automatically every Monday at 9AM (cron: 0 9 * * 1). To test immediately, click node '1. Schedule — Every Monday 9AM' and use the manual Execute option.

  2. Fill credentials and constants in the Config node

    Open node '2. Set — Config Values' and replace placeholders: YOUR_FIREFLIES_API_KEY, YOUR_GOOGLE_SHEET_ID (string between /d/ and /edit in the Sheet URL), sheetName (default 'Client Sentiment Log', must match exactly), slackChannel (e.g., #client-health), slackAlertChannel (e.g., #urgent-alerts), companyName (used in the AI prompt). weekStart and weekEnd auto-calculate from current date.

  3. Fetch last 50 transcripts from Fireflies

    Node '3. HTTP — Fetch Last 50 Transcripts' sends a POST request to the Fireflies GraphQL API to retrieve the 50 most recent transcripts with title, date, duration, participants, and transcript URL. Header must include Authorization: Bearer {{ $json.firefliesApiKey }}.

  4. Filter to past 7 days and split into individual items

    Node '4. Code — Filter Last 7 Days' filters the 50 transcripts to the past 7 days and outputs one item per transcript for loop processing. If no meetings fall in the window, returns hasTranscripts: false with a message.

  5. Check for meetings and handle empty weeks cleanly

    Node '5. IF — Meetings Found?' checks hasTranscripts. If true, each meeting proceeds to full analysis. If false, routes to '6. Set — No Meetings This Week' which outputs 'No meetings found this week. Nothing to analyze.' and ends cleanly without errors.

  6. Fetch full transcript and sentiment data per meeting

    Node '7. HTTP — Fetch Full Transcript' calls the Fireflies API per meeting to retrieve complete transcript details: sentences with speaker labels, summary, keywords, action items, and built-in NLP sentiment analytics (positive_pct, neutral_pct, negative_pct).

  7. Extract sentiment scores, compute composite, and identify client name

    Node '8. Code — Extract Sentiment Data' assembles sentences into readable text capped at 4,000 characters; computes a 0–100 composite score from Fireflies percentages and assigns a label (Positive/Mostly Positive/Neutral/Mostly Negative/Negative); extracts client name from meeting title via regex patterns like 'Call with [Name]' or 'Client | [Name]'; also extracts overview, keywords, and action items for the AI step.

  8. Run GPT-4o-mini sentiment analysis and churn risk scoring

    Node '9. AI Agent — Sentiment Analysis' sends full meeting context to GPT-4o-mini (temperature 0.3, maxTokens 500). Output is enforced by '11. Parser — Structured Analysis Output' into a 4-field JSON: gptAnalysis (2–3 sentences explaining sentiment), churnRisk (Low/Medium/High/Critical), recommendedAction (one concrete action within 48 hours), keyQuote (most important sentence capturing client mood).

    Execution prompt · Source text。Node 9. AI Agent — Sentiment Analysis text field

    =You are a client relationship analyst at {{ $json.companyName }}.
    
    Analyze this client meeting and provide intelligence about client health and relationship status.
    
    MEETING DETAILS:
    Client: {{ $json.clientName }}
    Meeting Title: {{ $json.transcriptTitle }}
    Date: {{ $json.meetingDate }}
    Duration: {{ $json.durationMin }} minutes
    Participants: {{ $json.participants }}
    
    FIREFLIES SENTIMENT SCORES:
    Positive: {{ $json.positivePct }}%
    Neutral: {{ $json.neutralPct }}%
    Negative: {{ $json.negativePct }}%
    Overall Label: {{ $json.sentimentLabel }}
    
    MEETING OVERVIEW:
    {{ $json.overview }}
    
    KEYWORDS: {{ $json.keywords }}
    
    ACTION ITEMS: {{ $json.actionItems }}
    
    TRANSCRIPT EXCERPT:
    {{ $json.transcriptExcerpt }}
    
    Return ONLY a valid JSON object with exactly these 4 fields. No extra text. No markdown. No backticks.
    
    gptAnalysis — 2 to 3 plain text sentences explaining WHY this meeting had this sentiment. What specifically was discussed that was positive, neutral, or negative? Reference actual content from the transcript. Under 80 words.
    
    churnRisk — One of exactly these values: Low OR Medium OR High OR Critical
    Low = client is happy, engaged, expanding
    Medium = some concerns raised but relationship is stable
    High = clear frustration, unresolved issues, or signs of disengagement
    Critical = client threatened to leave, expressed serious anger, or is clearly about to churn
    
    recommendedAction — One specific action the account manager should take within 48 hours. Be concrete. Start with a verb. Under 20 words. Plain text only.
    
    keyQuote — The single most important sentence from this meeting — positive or negative — that best captures the client mood. Under 25 words. Plain text. If no clear quote found write: No standout quote identified.
  9. Combine results and flag urgent alerts

    Node '12. Code — Combine Analysis Results' merges AI output with meeting metadata, adds sentiment label emojis (🟢/🟡/⚪/🟠/🔴) and churn risk emojis (✅/⚠️/🚨/🆘). Sets needsAlert: true if sentiment is Negative or Mostly Negative, or churn risk is High or Critical.

  10. Log each meeting to Google Sheets

    Node '13. Google Sheets — Log Client Sentiment' appends one row per meeting to the 'Client Sentiment Log' tab with 15 columns: Week, Meeting Date, Meeting Title, Client Name, Duration, Participants, Sentiment Score, Sentiment Label, Positive %, Negative %, GPT Analysis, Churn Risk, Recommended Action, Fireflies URL, Logged At. The Sheet and headers must be created beforehand with exact names.

  11. Route and send Slack urgent alerts

    Node '14. IF — Needs Urgent Alert?' reads the needsAlert flag. If true, routes to '15. Slack — Send Urgent Alert' to post a formatted message to #urgent-alerts including client name, meeting title, date, duration, sentiment with emoji, churn risk, GPT analysis summary, key quote in italics, recommended action, and Fireflies link. If false, routes to '16. Set — No Alert Needed' and ends silently.

    Execution prompt · Source text。Node 15. Slack — Send Urgent Alert text field

    =*CLIENT HEALTH ALERT* {{ $json.riskEmoji }}
    
    *Client:* {{ $json.clientName }}
    *Meeting:* {{ $json.meetingTitle }}
    *Date:* {{ $json.meetingDate }} | *Duration:* {{ $json.durationMin }} min
    
    *Sentiment:* {{ $json.sentimentEmoji }} {{ $json.sentimentLabel }} (Positive: {{ $json.positivePct }}% | Negative: {{ $json.negativePct }}%)
    *Churn Risk:* {{ $json.riskEmoji }} {{ $json.churnRisk }}
    
    *What Happened:*
    {{ $json.gptAnalysis }}
    
    *Key Quote:*
    _{{ $json.keyQuote }}_
    
    *Recommended Action:*
    {{ $json.recommendedAction }}
    
    _Fireflies: {{ $json.transcriptUrl }}_
  12. Activate workflow and verify execution

    Toggle the workflow to Active for automatic weekly runs. After initial setup, manually Execute the Schedule node once to verify the full pipeline: Fireflies data fetch, AI analysis, Sheets write, and Slack alert delivery. If alerts are missing, check the needsAlert flag execution log, Slack OAuth2 authorization status, and whether the bot was invited to the channel (/invite @n8n).

Prompt you can copy

Setup guidance · Editorial suggestion。Hand to setup assistant; confirm inputs and permissions first

This block is the prompt. Ads are never placed here.

You are an n8n workflow setup assistant. The user wants to replicate the 'Fireflies + GPT-4o-mini Client Meeting Health Monitor' template. Assist in this order: 1) Confirm the user has an n8n instance, Fireflies API key, OpenAI API key, Google Sheets OAuth2, and Slack OAuth2; 2) Guide them to import workflow.json; 3) Verify all 6 placeholders in Config Values are replaced; 4) Remind them to create the Google Sheet tab and 15 column headers; 5) Explain how to manually trigger a test run and inspect execution logs. Do not enter real credentials for the user.

Before setup, confirm you have valid credentials for Fireflies.ai, OpenAI, Google, and Slack, and have created the Google Sheet.

Source

Monitor client meeting health with Fireflies, GPT-4o-mini, Google Sheets and Slack alerts · isawow · n8n.io · 2026-04-15

Comments & feedback

Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.

Loading…

    Related