Google Sheets to Gmail, polished event feedback recap
Your event feedback is sitting in a Google Sheet, and it’s messy. Dozens (or hundreds) of free-text answers, repeated themes, conflicting opinions, and no fast way to turn it into something you can actually act on.
This Sheets Gmail recap problem hits Marketing Managers right after a webinar or in-person event. Ops leads feel it too. And if you run an agency, you’ve probably had a client ask for “a quick summary” when you’re staring at 400 rows of comments.
This workflow pulls your Google Sheets responses, summarizes them with OpenAI, converts the report into clean HTML, and emails it through Gmail. You’ll see how it works, what you need, and what to watch out for.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Google Sheets to Gmail, polished event feedback recap
flowchart LR
subgraph sg0["Manual Execution Start Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Manual Execution Start", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Retrieve Sheet Entries", pos: "b", h: 48 }
n2@{ icon: "mdi:cog", form: "rounded", label: "Combine Feedback Arrays", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/openAi.dark.svg' width='40' height='40' /></div><br/>Generate GPT Summary"]
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/markdown.dark.svg' width='40' height='40' /></div><br/>Convert Markdown Output"]
n5@{ icon: "mdi:message-outline", form: "rounded", label: "Dispatch Email Report", pos: "b", h: 48 }
n3 --> n4
n1 --> n2
n4 --> n5
n0 --> n1
n2 --> n3
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n1 database
classDef customIcon fill:none,stroke:none
class n3,n4 customIcon
The Problem: Event feedback takes hours to summarize
Event surveys are great until it’s time to do something with them. The Google Form dumps everything into Sheets, and suddenly you’re reading one-line comments like “great speakers” next to paragraphs of very specific complaints. You start with good intentions, then you get interrupted, then you lose your place. Worse, you end up cherry-picking quotes because there isn’t time to properly scan the full dataset. Leaders want the “top 3 fixes” and the overall vibe, not a spreadsheet attachment.
It adds up fast. Here’s where it breaks down.
- Scanning 200+ rows of open-text answers can burn an entire morning, and the recap still feels subjective.
- People phrase the same issue ten different ways, so patterns get missed unless you painstakingly tag responses.
- Copying quotes into a doc invites errors, and the “final” report often lacks a clear sentiment read.
- By the time you send a summary, the team has already moved on, which means the feedback doesn’t actually change anything.
The Solution: Turn Sheets responses into an emailed executive recap
This n8n workflow turns raw event feedback into a readable recap you can forward immediately. You run it when you’re ready (it starts with a manual trigger), and it pulls the latest responses from your Google Sheet. Next, it aggregates answers by question, so OpenAI isn’t trying to interpret one row at a time. The AI then produces a structured summary in plain language, including the overall sentiment and constructive improvements people actually asked for. Finally, the workflow converts the Markdown report into HTML and sends it as a clean Gmail message, so it looks like a real internal update, not a pasted blob of text.
The workflow starts when you click “Test workflow” in n8n. From there, Google Sheets data is combined into per-question arrays, OpenAI generates the recap, Markdown is converted to HTML, and Gmail delivers the final report to your inbox (or a stakeholder list).
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say your event gets 150 survey submissions and 8 questions, with 3 open-text questions. Manually, you might spend about 45 seconds reading each open-text response, then another 30 minutes pulling themes and writing a recap, which is roughly 2 hours. With this workflow, you click run, n8n pulls the sheet, aggregates the answers, and OpenAI drafts the summary. Give it about 5 minutes end-to-end, then you have an HTML Gmail report ready to forward.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets to store Google Form responses
- Gmail to email the final HTML recap
- OpenAI API key (get it from your OpenAI dashboard)
Skill level: Beginner. You’ll connect accounts, select the right spreadsheet, and tweak the prompt if you want different report formatting.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
Manual run from n8n. You start the workflow when you’re ready to create the recap, which is handy if you only want to summarize once responses stop coming in.
Google Sheets pulls the latest responses. The workflow fetches the rows from your feedback spreadsheet so you’re not exporting CSVs or copy-pasting into docs.
Responses get combined by question. An aggregate step groups answers into arrays, which means the AI can summarize themes per question instead of bouncing between unrelated rows.
OpenAI generates the report, then Gmail sends it. The AI produces a Markdown recap with sentiment and improvements, it’s converted into HTML, and Gmail emails the polished version to whoever needs it.
You can easily modify the summary format to include “top quotes” or a priority list based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual Trigger
This workflow starts manually, allowing you to run the summary on demand.
- Add the Manual Execution Start node as the trigger.
- Keep default settings in Manual Execution Start since it needs no configuration.
- Optionally keep Flowpast Branding as a sticky note for documentation (no configuration required).
Step 2: Connect Google Sheets
Pull form responses from your spreadsheet and prepare them for aggregation.
- Add the Retrieve Sheet Entries node and connect it to Manual Execution Start.
- Set Document to
[YOUR_ID](the Event feedback form spreadsheet). - Set Sheet to
[YOUR_ID](the sheet name is “Form Responses 1”). - Credential Required: Connect your googleSheetsOAuth2Api credentials.
- Add the Combine Feedback Arrays node and connect it after Retrieve Sheet Entries.
- In Combine Feedback Arrays, set Fields to Aggregate to
['What went great?'],['How can we improve?'], and['What is the chance of recommending our event?'].
Step 3: Set Up AI Summarization
Use GPT to generate a summarized report from the aggregated feedback arrays.
- Add the Generate GPT Summary node and connect it after Combine Feedback Arrays.
- Set Resource to
chatand Chat Model togpt-4-turbo-preview. - In the user message content, use the expression:
=1. What went great: ```{{ $json['What went great?'].join(' | ') }}``` 2. How can we improve: ```{{ $json['How can we improve?'].join(' | ') }}``` 3. What is the chance of recommending our event: ```{{ $json['What is the chance of recommending our event?'].join(' | ') }}```. - Set Temperature to
0.3for more consistent summaries. - Credential Required: Connect your openAiApi credentials.
Step 4: Configure Email Output
Convert the AI response from Markdown to HTML and send it via email.
- Add the Convert Markdown Output node and connect it after Generate GPT Summary.
- Set Mode to
markdownToHtml. - Set Markdown to
={{ $json.message.content }}. - Add the Dispatch Email Report node and connect it after Convert Markdown Output.
- Set Send To to
[YOUR_EMAIL]. - Set Subject to
Feedback form response. - Set Message to
={{ $json.data }}to send the HTML output. - Credential Required: Connect your gmailOAuth2 credentials.
Step 5: Test and Activate Your Workflow
Validate each step end-to-end before turning it on for production use.
- Click Execute Workflow to run the Manual Execution Start trigger.
- Confirm that Retrieve Sheet Entries pulls rows from the sheet and Combine Feedback Arrays outputs three arrays.
- Check Generate GPT Summary for a Markdown response and Convert Markdown Output for HTML content.
- Verify the email from Dispatch Email Report arrives with the formatted summary.
- When satisfied, toggle the workflow to Active for ongoing use.
Common Gotchas
- Google Sheets credentials can expire or need specific permissions. If things break, check the Google connection inside n8n’s Credentials menu first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Frequently Asked Questions
About 30 minutes if your Google and OpenAI accounts are ready.
No. You’ll mostly be connecting accounts and selecting the right Google Sheet. The only “technical” part is tweaking the summary prompt, and that’s just text.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API costs, which are usually a few cents per summary for typical feedback sizes.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, but you’ll change the trigger and tighten the prompt. Replace the manual start with a schedule trigger, then adjust the Google Sheets query (or filtering) so it only pulls new rows from the last week. Common customizations include adding a “Top 5 themes” section, pulling a few representative quotes, and sending the email to a Google Group instead of one person.
Most of the time it’s an expired Google authorization or the wrong account selected in n8n. Reconnect Google Sheets credentials, then confirm the sheet ID and tab name still match what the node expects. Also check sharing permissions if the sheet lives in a shared drive or was created by a different user. If the workflow used to work and suddenly doesn’t, Google security updates are a common culprit, honestly.
Hundreds of responses per run is normal, but the real limit is your OpenAI token budget and n8n plan. On n8n Cloud you’re limited by monthly executions, while self-hosting has no execution cap (your server resources decide). If you’re summarizing thousands of long responses, you’ll want to chunk by question or summarize in batches before writing the final report.
Often, yes. This kind of workflow benefits from aggregation, formatting, and “do this, then that, only if…” logic, and n8n is simply more flexible for that without stacking paid steps. You also get the self-hosted option, which matters when you run a lot of internal automations. Zapier or Make can still be fine if you want a very simple two-step flow and don’t care about grouping responses by question. If you’re unsure, Talk to an automation expert and sanity-check the best approach for your volume and reporting needs.
Once this is in place, your feedback recap becomes a repeatable system, not a recurring scramble. Run it, forward it, and get back to improving the next event.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.