Skip to main content

Categorize meetings and log time with Fireflies, GPT-4o-mini, and Google Sheets

Workflow preview

Workflow preview
100%
Categorize meetings and log time with Fireflies, GPT-4o-mini, and Google Sheets preview
Open on n8n.io

1. Workflow Overview

Description Connect Fireflies to this workflow once and every meeting you record is automatically categorized and logged to Google Sheets the moment transcription finishes. GPT 4o mini reads the me...

Best for

  • Document Extraction automation workflows
  • AI Summarization automation workflows
  • intermediate n8n builders looking for reusable templates

Tools used

n8n-nodes-base.stickynote, n8n-nodes-base.webhook, n8n-nodes-base.set, n8n-nodes-base.httprequest, n8n-nodes-base.code, @n8n/n8n-nodes-langchain.agent, @n8n/n8n-nodes-langchain.lmchatopenai, @n8n/n8n-nodes-langchain.outputparserstructured

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by isaWOW.

Original n8n.io source

1.1 Workflow description

Title
Categorize meetings and log time with Fireflies, GPT-4o-mini, and Google Sheets
Workflow name
Categorize meetings and log time with Fireflies, GPT-4o-mini, and Google Sheets

Description

Connect Fireflies to this workflow once and every meeting you record is automatically categorized and logged to Google Sheets the moment transcription finishes. GPT-4o-mini reads the meeting title, keywords, overview, and action items, then assigns one of seven categories — Sales, Client, Internal, HR, Product, Finance, or Other — along with a confidence rating and a one-sentence reason. Each meeting becomes one clean row in your sheet with emoji labels for instant visual scanning. Built for founders, operations managers, and team leads who want a searchable, sortable record of how their time is actually being spent across meeting types.


What This Workflow Does

  • Triggers instantly when a meeting ends — Fireflies fires the workflow the moment transcription completes, so no manual step is ever needed
  • Fetches meeting details from Fireflies — Retrieves the title, date, duration, participants, keywords, overview, and action items for each meeting
  • Assigns one of seven categories — GPT-4o-mini classifies every meeting as Sales, Client, Internal, HR, Product, Finance, or Other based on actual meeting content
  • Scores confidence per classification — Returns High, Medium, or Low confidence so you know which categorizations to trust and which to review
  • Adds emoji labels for visual scanning — Category and confidence values are emoji-coded before logging so your sheet is readable at a glance without filtering
  • Logs one row per meeting to Google Sheets — Appends a 10-column record automatically including date, title, category, confidence, reason, duration, participants, keywords, and a direct Fireflies link

Setup Requirements

Tools Needed

  • n8n instance (self-hosted or cloud)
  • Fireflies.ai account with webhook access
  • OpenAI account with GPT-4o-mini API access
  • Google Sheets (one sheet with a tab named Meeting Categories)

Credentials Required

  • Fireflies API key (pasted into Set Config Values)
  • OpenAI API key
  • Google Sheets OAuth2

Estimated Setup Time: 10–15 minutes


Step-by-Step Setup

  1. Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import

  2. Activate the workflow and copy the webhook URL — Toggle the workflow to Active → click on node Fireflies Webhook → copy the Production URL shown

  3. Register the webhook in Fireflies — Log in to app.fireflies.ai → Settings → Developer Settings → Webhooks → paste the webhook URL → save

  4. Get your Fireflies API key — In Fireflies, go to Settings → Integrations → Fireflies API → copy your API key

  5. Get your Google Sheet ID — Open your Google Sheet in a browser → look at the URL → copy the string between /d/ and /edit (e.g. in docs.google.com/spreadsheets/d/1ABC123xyz/edit, the ID is 1ABC123xyz)

  6. Fill in Config Values — Open node Set Config Values → replace the two placeholders:

Field What to enter
YOUR_FIREFLIES_API_KEY Your Fireflies API key from step 4
YOUR_GOOGLE_SHEET_ID Your Google Sheet ID from step 5

> ⚠️ Do NOT change the meetingId field — it is extracted automatically from the Fireflies webhook and must remain as-is.

  1. Create your Google Sheet tab — Open your Google Sheet → add a tab named exactly Meeting Categories → add these 10 column headers in row 1: Date, Meeting Title, Category, Confidence, Reason, Duration (min), Participants, Keywords, Fireflies URL, Logged At

  2. Connect OpenAI — Open node OpenAI Chat Model → click the credential dropdown → add your OpenAI API key → test the connection

  3. Connect Google Sheets — Open node Log to Google Sheets → click the credential dropdown → add Google Sheets OAuth2 → sign in with your Google account → authorize access

  4. Activate the workflow — Confirm the workflow is Active — Fireflies will now fire it automatically after every recorded meeting


How It Works (Step by Step)

Step 1 — Webhook: Fireflies Webhook This step listens for a signal from Fireflies. Every time a meeting finishes transcribing, Fireflies sends a POST request to this webhook URL containing the meeting ID and event type. No manual trigger is needed — it fires automatically after every recorded call where you are the organizer.

Step 2 — Set: Config Values Your Fireflies API key, Google Sheet ID, sheet tab name, and the meeting ID from the webhook are stored here. The meeting ID is extracted automatically from all possible Fireflies payload formats — you never need to enter it manually.

Step 3 — HTTP: Fetch Transcript from Fireflies A request is sent to the Fireflies API using your API key and the meeting ID. It retrieves the meeting title, date, duration, participants, transcript URL, keywords, overview, and action items. Only lightweight summary fields are fetched — no full sentence-by-sentence transcript — keeping the response fast and small.

Step 4 — Code: Extract Meeting Data The Fireflies response is processed into clean, usable fields. Keywords are limited to the top 12, the overview is capped at 600 characters, and action items are limited to the top 5. The meeting date is formatted as a readable date string. If the transcript is not found or not yet ready, the step throws an error and the workflow stops cleanly without creating a blank row in your sheet.

Step 5 — AI Agent: Categorize Meeting GPT-4o-mini receives the meeting title, keywords, overview, action items, participants, and duration. It assigns exactly one category from the seven options and returns three structured fields: the category name, a confidence level (High, Medium, or Low), and a one-sentence plain-text reason for the choice. The model runs at temperature 0.1 for highly consistent, repeatable categorization.

Step 6 — OpenAI Chat Model This is the language model powering the categorization step. It uses GPT-4o-mini at temperature 0.1 and is capped at 150 tokens — only three short fields are needed per meeting, making this extremely cost-efficient at approximately $0.0002 per meeting.

Step 7 — Structured Output Parser This step enforces the exact three-field schema GPT-4o-mini must return. It validates that category, confidence, and reason are all present and correctly typed before the results move forward, preventing any malformed AI output from reaching your sheet.

Step 8 — Code: Prepare Sheet Row The AI output is read and emoji labels are added based on category and confidence. Category emojis: 💰 Sales, 🤝 Client, 🏢 Internal, 👥 HR, 🛠️ Product, 📊 Finance, 📋 Other. Confidence emojis: ✅ High, 🟡 Medium, ⚠️ Low. All meeting metadata from step 4 is combined with the AI output into one complete row ready for logging.

Step 9 — Google Sheets: Log to Google Sheets One row is appended to your Meeting Categories tab with all 10 columns populated: date, meeting title, category with emoji, confidence with emoji, reason, duration in minutes, participants, keywords, Fireflies transcript URL, and the logged-at timestamp.

The final result: every meeting ends with a new row in your Google Sheet — categorized, confidence-rated, and ready to filter or sort by meeting type.


Key Features

Fires automatically on every meeting — No manual input ever needed after the one-time webhook setup in Fireflies ✅ Seven category options cover all meeting types — Sales, Client, Internal, HR, Product, Finance, and Other handle virtually every business meeting scenario ✅ Confidence rating per classification — High, Medium, and Low ratings tell you exactly how certain the AI was so you can spot which rows to review manually ✅ Emoji-coded for instant visual scanning — Category and confidence columns use emojis so you can read your sheet at a glance without needing to filter ✅ Direct Fireflies link in every row — Each row includes a clickable link back to the full Fireflies transcript so you can open the original meeting in one click ✅ Ultra-low cost per meeting — GPT-4o-mini at temperature 0.1 with a 150-token cap costs approximately $0.0002 per meeting — a full year of daily meetings costs less than a dollar ✅ Structured output enforced — A schema parser validates all three AI fields before anything reaches your sheet — no broken or incomplete rows ✅ Lightweight API call — Only summary fields are fetched from Fireflies (not full sentences), keeping each API call fast and the response small


Customisation Options

Add your own custom categories — In node AI Agent — Categorize Meeting, edit the category list in the prompt to replace or add categories that match your business (e.g. replace "Finance" with "Investor" or add "Partnership" as an eighth option) — also update the schema in Structured Output Parser to match.

Add a Slack notification for Sales meetings — After node Log to Google Sheets, add an IF check that reads the category field — if it contains "Sales", post a Slack message to your #sales-team channel with the meeting title, participants, and Fireflies link for immediate team visibility.

Filter out internal meetings from the sheet — In node Prepare Sheet Row, add a condition: if the category is "Internal" and confidence is "High", set a skipLog flag to true — then add an IF check before Log to Google Sheets to bypass logging for confirmed internal meetings and keep your sheet focused on client-facing activity.

Add a weekly category summary email — Add a separate Schedule trigger that fires every Monday morning, reads the Meeting Categories sheet via a Google Sheets read step, counts rows by category from the past 7 days, and sends a summary email showing how many Sales, Client, and Internal meetings happened that week.

Use a different sheet per category — In node Prepare Sheet Row, add logic that maps each category to a different sheetName value — then Log to Google Sheets will route each meeting to its own dedicated tab (e.g. all Sales calls on a Sales tab, all Client calls on a Client tab).


Troubleshooting

Workflow not triggering when a meeting ends:

  • Confirm the workflow is Active — inactive workflows do not receive Fireflies webhooks
  • Log in to app.fireflies.ai → Settings → Developer Settings → Webhooks → confirm the URL is saved and matches the Production URL from node Fireflies Webhook exactly
  • Note that Fireflies only fires the webhook for meetings where you are the organizer — guest meetings will not trigger it

Fireflies API key error or transcript not found:

  • Confirm YOUR_FIREFLIES_API_KEY in node Set Config Values is replaced with your actual key — not the placeholder text
  • Get your key from fireflies.ai → Settings → Integrations → Fireflies API
  • If the transcript is not found, Fireflies may still be processing the meeting — this workflow stops cleanly with an error in this case; the meeting will not be logged until you rerun it manually or wait for the next webhook

OpenAI not categorizing correctly:

  • Confirm the API key is connected in node OpenAI Chat Model and your account has available credits
  • Check the execution log of node AI Agent — Categorize Meeting for the raw GPT response
  • If categories are inconsistent, confirm the prompt text in AI Agent — Categorize Meeting is intact and has not been accidentally edited

Google Sheets not logging rows:

  • Confirm the Google Sheets OAuth2 credential in node Log to Google Sheets is connected and not expired — re-authorize if needed
  • Check that YOUR_GOOGLE_SHEET_ID in node Set Config Values is the ID from the sheet URL, not the full URL
  • Confirm the tab is named Meeting Categories exactly — capitalization must match the sheetName value in Set Config Values
  • Verify all 10 column headers in row 1 match exactly: Date, Meeting Title, Category, Confidence, Reason, Duration (min), Participants, Keywords, Fireflies URL, Logged At

AI returning a category not in the list:

  • The Structured Output Parser enforces the schema — if an unexpected value appears, check the execution log of AI Agent — Categorize Meeting for the raw output
  • Confirm the seven category names in the prompt match exactly what the schema parser expects: Sales, Client, Internal, HR, Product, Finance, Other

Support

Need help setting this up or want a custom version built for your team or agency?

📧 Email: [email protected] 🌐 Website: https://isawow.com/

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - Overview

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 2 - Section — Webhook, Config, and Transcript Fetch

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 3 - Section — Meeting Data Extraction

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 4 - Section — AI Meeting Categorization

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 5 - Section — Row Assembly and Sheet Logging

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 6 - 1. Webhook — Fireflies Transcript Done

Type / Role
n8n-nodes-base.webhook - webhook
Config choices
Version 1.1

Block 7 - 2. Set — Config Values

Type / Role
n8n-nodes-base.set - set
Config choices
Version 3.4

Block 8 - 3. HTTP — Fetch Transcript

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 9 - 4. Code — Extract Meeting Data

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 10 - 5. AI Agent — Categorize Meeting

Type / Role
@n8n/n8n-nodes-langchain.agent - agent
Config choices
Version 1.7

Block 11 - 6. OpenAI — GPT-4o-mini Model

Type / Role
@n8n/n8n-nodes-langchain.lmChatOpenAi - lmChatOpenAi
Config choices
Version 1.2

Block 12 - 7. Parser — Structured Category Output

Type / Role
@n8n/n8n-nodes-langchain.outputParserStructured - outputParserStructured
Config choices
Version 1.3

Block 13 - 8. Code — Prepare Sheet Row

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 14 - 9. Google Sheets — Log Meeting Category

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.5

3. Summary Table

Workflow Categorize meetings and log time with Fireflies, GPT-4o-mini, and Google Sheets
Complexity intermediate
Nodes 14
Categories Document Extraction, AI Summarization
Author isaWOW
Published 16 Apr 2026

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/15094/15094.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does Categorize meetings and log time with Fireflies, GPT-4o-mini, and Google Sheets do?

Description Connect Fireflies to this workflow once and every meeting you record is automatically categorized and logged to Google Sheets the moment transcription finishes. GPT 4o mini reads the me...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your Document Extraction, AI Summarization use case.