Connect Fireflies to this workflow once and every client meeting you record automatically generates a polished recap email sent directly to your client. The moment transcription finishes, the workflow detects the client's email from the participant list, uses GPT-4o-mini to write a warm 250-word professional recap with key points and action items, and sends it via Gmail with your address as the reply-to. Every sent email is also logged to Google Sheets for tracking. Built for account managers, consultants, and agency owners who want to follow up with clients professionally after every call — without spending 15 minutes writing the email themselves.
Estimated Setup Time: 15–20 minutes
Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import
Activate the workflow and copy the webhook URL — Toggle the workflow to Active → click on node 1. Webhook — Fireflies Transcript Done → copy the Production URL shown
Register the webhook in Fireflies — Log in to app.fireflies.ai → Settings → Developer Settings → Webhooks → paste the webhook URL → save
Get your Fireflies API key — In Fireflies, go to Settings → Integrations → Fireflies API → 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 4 |
YOUR FULL NAME |
Your name as it should appear in the email sign-off |
[email protected] |
Your email address (must match the Gmail account you connect in step 8) |
YOUR COMPANY NAME |
Your company name (used in the email sign-off and AI prompt) |
YOUR_GOOGLE_SHEET_ID |
The ID from your Google Sheet URL (the string between /d/ and /edit) |
[email protected] |
A fallback email used when no external participant is detected — set this to your most common client email or a test address |
yourcompany.com |
Your company's email domain (e.g. incrementors.com) — used to identify which participant is the client |
⚠️ Do NOT change the
meetingIdfield — it is extracted automatically from the Fireflies webhook.
Connect OpenAI — Open node 6. OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection
Create your Google Sheet tab — Open your Google Sheet → add a tab named exactly Recap Email Log → add these 7 column headers in row 1: Date, Meeting Title, Client Email, Email Subject, Status, Fireflies URL, Logged At
Connect Gmail — Open node 8. Gmail — Send Recap Email → click the credential dropdown → add Gmail OAuth2 → sign in with the Gmail account that matches senderEmail in your Config Values → authorize access
Connect Google Sheets — Open node 9. Google Sheets — Log Sent Recaps → click the credential dropdown → add Google Sheets OAuth2 → sign in with your Google account → authorize access
Activate the workflow — Confirm the workflow is Active — Fireflies will now fire it automatically after every recorded meeting
Step 1 — Webhook: Fireflies Transcript Done
This step listens for a signal from Fireflies. Every time a meeting finishes transcribing, Fireflies sends a request to this webhook URL containing the meeting ID. The workflow fires instantly — no manual trigger is ever needed.
Step 2 — Set: Config Values
Your Fireflies API key, sender name, sender email, company name, Google Sheet ID, sheet tab name, default client email, your company domain, and the meeting ID are all stored here. The meeting ID is extracted automatically from all possible Fireflies payload formats.
Step 3 — HTTP: Fetch Transcript
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, gist, overview, bullet points, keywords, and action items from the Fireflies summary. Only lightweight summary fields are fetched — no full sentence-by-sentence transcript.
Step 4 — Code: Extract Data and Detect Client Email
This step runs three detection strategies to find the client email. First, it scans the participant list for any email address whose domain does not match your company domain — that participant is the client. Second, if no external participant is found, it checks whether an email address is embedded directly in the meeting title. Third, if neither strategy works, it falls back to the defaultClientEmail from your config. Once the client email is identified, the first name is extracted from the email address (e.g. [email protected] becomes "John Smith") and used as the greeting name. All meeting metadata is also cleaned and formatted here.
Step 5 — AI Agent: Write Recap Email
GPT-4o-mini receives the meeting details, Fireflies summary, key points, action items, client name, and sender details. It writes a plain-text email following a fixed structure: a greeting using the client's name, a warm thank-you opener referencing the meeting topic, 3–4 bullet points summarizing key discussion points from the real meeting content, a next steps section listing action items, a warm closing sentence, and a sign-off with your name and company. The email contains no AI mentions, no Fireflies links, and no internal notes.
Step 6 — OpenAI: GPT-4o-mini Model
This is the language model powering the writing step. It runs at temperature 0.6 for a natural, warm writing style — not too creative and not too robotic — and is capped at 600 tokens to keep the email within the 250-word target.
Step 7 — Code: Prepare Email Fields
The AI-generated email body is read and validated — if it is under 50 characters, the step throws an error and stops rather than sending a broken email. The email subject line is assembled automatically as: Meeting Recap — [Meeting Title] — [Meeting Date]. All fields needed for both sending and logging are packaged into one clean output.
Step 8 — Gmail: Send Recap Email
The recap email is sent to the detected client email address. Your sender email is set as the reply-to address so any client reply comes directly back to your inbox. The email has no n8n attribution footer.
Step 9 — Google Sheets: Log Sent Recaps
At the same time as the email is sent, a new row is appended to your Recap Email Log tab with all 7 columns: meeting date, meeting title, client email, email subject, status (always "Sent"), the Fireflies transcript URL, and the logged-at timestamp. Both steps 8 and 9 run simultaneously — logging never delays sending.
✅ Three-strategy client email detection — Finds the right recipient from participant domain, meeting title, or fallback — no manual input needed per meeting
✅ No AI footprint in the email — The prompt explicitly forbids any mention of AI, automation, or Fireflies — the email reads as if you wrote it personally right after the call
✅ Reply-to set to your address — Client replies go directly to your inbox, not to an n8n webhook or unmonitored address
✅ Client name extracted automatically — The first name is parsed from the client's email address and used in the greeting without any manual entry
✅ Parallel sending and logging — Gmail sends and Google Sheets logs run at exactly the same time — the sheet is always current
✅ Error guard on AI output — If GPT fails to generate a proper email body, the workflow stops cleanly rather than sending a blank or broken message to a client
✅ Auto-generated subject line — The subject is assembled from the meeting title and date automatically — consistent format every time, no editing needed
✅ Lightweight Fireflies fetch — Only summary fields are pulled (no full transcript), keeping each API call fast and the response small
Add CC to your manager — In node 8. Gmail — Send Recap Email, add a cc field in the options and set it to your manager's email address so they are automatically copied on every client recap without you having to remember.
Change the email tone — In node 5. AI Agent — Write Recap Email, edit the prompt instruction from "warm professional" to "formal" or "casual" to match your relationship with different client types — you can also add client-specific instructions like "this client prefers very brief emails."
Send a Slack notification after every sent recap — After node 8. Gmail — Send Recap Email, add a Slack node that posts to a #client-updates channel with the client email, meeting title, and a note that the recap was sent — giving your team visibility without checking the sheet.
Add a 10-minute delay before sending — After node 7. Code — Prepare Email Fields, add a Wait step set to 10 minutes before the Gmail step — giving you a window to check the Google Sheet log and cancel if something looks wrong before the client receives it.
Use a different email for different client domains — In node 4. Code — Extract Data and Detect Client Email, add a lookup object that maps known client domains to specific sender names or email addresses — useful for agencies managing multiple branded accounts.
Workflow not triggering when a meeting ends:
Email sent to the wrong person or to the fallback address:
yourEmailDomain in node 2. Set — Config Values is your actual company domain (e.g. incrementors.com, not @incrementors.com) — the @ symbol must not be includeddefaultClientEmaildefaultClientEmail to a safe test address so the fallback does not send to a real clientGmail credential error or email not sending:
senderEmail in Config Values — mismatched accounts cause auth failuresOpenAI not generating the email body:
Google Sheets not logging rows:
YOUR_GOOGLE_SHEET_ID in node 2. Set — Config Values is the ID from the sheet URL, not the full URLsheetName in Config ValuesDate, Meeting Title, Client Email, Email Subject, Status, Fireflies URL, Logged AtNeed help setting this up or want a custom version built for your team or agency?
📧 Email: [email protected]
🌐 Website: https://www.incrementors.com/