Automate User Research with n8n: Recruit, Schedule, and Synthesize Interviews
n8n user research automation handles participant recruitment, interview scheduling, transcription, and AI synthesis. Browse pre-built templates to ship faster.
User research breaks down at the logistics layer. Finding participants who match your target profile, getting them onto a calendar, tracking who confirmed and who no-showed, and then extracting something usable from six transcript files — that's a week of coordination for every four hours of actual learning. For teams doing research monthly, it's manageable. For teams doing it weekly, it compounds.
n8n user research automation handles the coordination end-to-end: scoring screener responses against your study criteria, booking sessions without email back-and-forth, capturing transcripts from your recording tool, and running an AI synthesis pass that surfaces themes before you've opened your notes app. The insights still require a human to make sense of them. The logistics don't.
No per-interview fees. No per-seat pricing on top of whatever you're already paying.
What You Can Automate in a Research Workflow
A full n8n user research automation setup handles the operational surface of a research program without requiring manual intervention:
- Screener responses pulled from Typeform or Google Forms and scored against your participant profile automatically
- Qualified candidates emailed a Calendly link; unqualified candidates sent a short decline message with status updated in the tracking sheet
- Calendly booking webhooks that write confirmed sessions back to your master sheet in real time
- Zoom meeting links created and injected into confirmation emails without anyone opening Zoom manually
- Post-interview webhook triggers from Fathom or Zoom that fire the transcription and synthesis workflow
- AI synthesis that extracts pain points, themes, and verbatim quotes from raw transcripts into structured Notion entries
- Weekly digest emails summarizing which themes appeared most across the last seven days of sessions
The n8n User Research Pipeline
Screener Form Submission (Webhook)
→ Code (score candidate against profile)
→ IF (qualified / not qualified)
Qualified → Gmail (invite + Calendly link)
→ Google Sheets (status = invited)
Not qualified → Gmail (decline message)
→ Google Sheets (status = declined)
Calendly invitee.created (Webhook)
→ Google Sheets (write booking + session_date)
→ HTTP Request (Zoom POST /meetings → join_url)
→ Gmail (confirmation with Zoom link)
Recording completion (Webhook)
→ HTTP Request (fetch transcript)
→ Code (normalize transcript text)
→ OpenAI (extract themes, pain points, verbatims)
→ Code (parse $json.output[0].content[0].text)
→ Notion (write structured research entry)
→ Google Sheets (status = analyzed)
Participant tracking stays in Sheets throughout. Synthesized research goes to Notion. Both systems stay current because the workflow writes to both at the right moment, not at the end of a manual review cycle.
Step-by-Step Breakdown
1. Recruit: Score Screener Responses Automatically
The entry point is a n8n-nodes-base.webhook node configured to receive your form tool's payload. Typeform, Tally, and Google Forms all support webhook submission. Each response arrives as a JSON object with form field keys.
A n8n-nodes-base.code v2 node reads each answer and runs a scoring function against your participant criteria: role, company size, product category, and usage frequency. The function returns a score field (0–100) and a qualified boolean.
Hard-coding participant criteria directly in the scoring function means reopening the workflow every time the study changes. Add a Google Sheets read node before the scoring step and pull the current study's criteria from a dedicated row. Two extra nodes, and you never touch the workflow when you switch to a different study next month.
An IF node branches on qualified === true. Qualified candidates hit the Gmail send with the Calendly scheduling link. Declined candidates get a short thank-you response. The tracking sheet gets updated in both branches. Simple.
2. Schedule: Handle Bookings Without Manual Intervention
Calendly's webhook sends an invitee.created payload to a second n8n-nodes-base.webhook node the moment a participant books. The payload includes the invitee's email, name, the scheduled time, and the event type.
A n8n-nodes-base.googleSheets node finds the participant's row by email address and updates status = booked along with session_date. Then a n8n-nodes-base.httpRequest v4.2 node calls POST https://api.zoom.us/v2/users/me/meetings with a JWT credential and returns a join_url. That URL goes into the confirmation email. No one opens Zoom manually.
Calendly signs webhook payloads with an HMAC-SHA256 signature in the Calendly-Webhook-Signature header. n8n's Webhook node doesn't verify this natively. Add a Code v2 node immediately after the trigger that computes the HMAC over the raw request body using your webhook signing key and compares it to the header value. Skip it and the workflow will process any POST to that URL — including test requests, replay attacks, and anything else that knows your endpoint address. The verification step is four lines of JavaScript and it's worth every one of them.
3. Capture: Fire the Synthesis Workflow After Recording
When the interview ends, the recording tool fires a completion webhook. Fathom, Zoom, and Loom all support this. The payload typically includes a recording ID, a transcript URL, or both.
A n8n-nodes-base.httpRequest v4.2 node fetches the full transcript from the tool's API. This is where a normalization step earns its place. Zoom returns a VTT file with speaker labels and timestamps embedded in the text. Fathom returns structured JSON with speaker turns. A n8n-nodes-base.code v2 node before the AI step strips speaker labels and timestamps to produce a clean transcript string. Without it, the model spends tokens on formatting artifacts instead of content.
4. Synthesize: Extract Themes with AI
The @n8n/n8n-nodes-langchain.openAi v2.1 node receives the normalized transcript and a structured prompt that requests: a one-paragraph summary, a list of pain points, a list of verbatim quotes with speaker context, and a relevance score for each of the study's research questions.
Output arrives at $json.output[0].content[0].text. Because the prompt asks for JSON output explicitly, a Code node runs JSON.parse() on the result. Sometimes the model wraps the JSON in markdown fences (```json prefix, closing ```). Usually. The Code node should strip those before parsing — a two-line regex catches it reliably. Don't assume clean output; handle both cases.
The parsed object writes to Notion via the Notion node, creating a new database entry with all fields mapped. The tracking sheet row gets marked status = analyzed.
One common mistake is asking the AI to produce a session summary AND cross-session themes in the same call. The model tries to generalize across a single transcript, which produces vague, hedged output. Keep the per-session prompt focused on extracting raw data: pain points, quotes, and relevance scores. Run the pattern-identification and cross-session synthesis in the weekly digest workflow, where the model sees all sessions at once. The per-session output gets sharper; the digest gets more accurate.
5. Distribute: Surface Patterns Across Sessions
A separate n8n-nodes-base.scheduleTrigger v1.2 workflow fires every Friday at 5 PM. It reads the last seven days of analyzed Notion entries, groups pain points by occurrence count, and passes the consolidated data to a second @n8n/n8n-nodes-langchain.openAi v2.1 call that generates a cross-session pattern summary.
A Gmail node sends that summary to the product and design team. The team sees what's trending in research before the weekly sync — without anyone manually reviewing Notion.
Implementation Patterns
Pattern 1: Lightweight Interview Ops for Startups
Skip the synthesis step entirely. The Screener → Qualify → Book → Confirm → Track loop alone saves several hours weekly for teams running four to eight interviews per session. Build the AI synthesis once volume justifies the setup time. The User Interview Recruiter template covers the full screening-to-booking pipeline: screener scoring, Calendly integration, Zoom link creation, and tracking sheet updates across about ten n8n nodes. It's the right starting point before adding synthesis.
Pattern 2: Full Research Pipeline with AI Synthesis
The complete pipeline from screener intake to Notion entry. The User Interview Research Automator template handles the synthesis layer, including the per-session extraction workflow and the Friday digest. It uses @n8n/n8n-nodes-langchain.openAi v2.1 with a structured output prompt, a Code node for transcript normalization, and a second Code node for JSON parsing and markdown-wrapper stripping. The Notion schema is included in the template's README with the exact property names the workflow expects.
Pattern 3: Continuous Research from the Product Database
For teams running ongoing research programs, a third entry point: a scheduled workflow that queries your product database weekly for users who've passed 30 days since onboarding and haven't been interviewed yet. It sends them a screener invite, adds them to the candidate queue, and deduplicates against anyone already in the pipeline. The User Interview Ops template covers this pattern — the participant pool query, screener trigger, and deduplication check are all included. It pairs with the Recruiter template to close the loop from discovery to confirmed booking.
n8n Nodes for User Research Automation
| Node | Purpose |
|---|---|
n8n-nodes-base.webhook | Receive screener submissions, Calendly bookings, recording completion events |
n8n-nodes-base.code v2 | Score screener responses, normalize transcripts, parse AI output, verify HMAC |
n8n-nodes-base.googleSheets | Track participants, statuses, session dates, and study metadata |
n8n-nodes-base.httpRequest v4.2 | Fetch transcripts; call Zoom API to create meeting links |
@n8n/n8n-nodes-langchain.openAi v2.1 | Extract themes and pain points per session; generate weekly cross-session digest |
n8n-nodes-base.gmail | Send screening invites, scheduling links, confirmations, and team digests |
n8n-nodes-base.notion | Write structured research entries and cross-session synthesis results |
n8n-nodes-base.scheduleTrigger v1.2 | Fire weekly digest; query product database for new candidate cohorts |
n8n-nodes-base.if | Branch on screener qualification; skip already-analyzed sessions |
Getting Started with n8n User Research Automation
An n8n instance (self-hosted or n8n Cloud), a Google Sheets credential, and a Calendly account with webhook support (Calendly Standard or above). Optionally: an OpenAI API key for synthesis, a Notion credential, and a Zoom API credential for meeting creation. The screening-to-booking flow runs in about eight nodes without any AI step. Adding synthesis brings the total to twelve or thirteen.
- Set up your tracking sheet. Columns:
email,name,screener_score,status,session_date,session_notes,analyzed. Status values:new,invited,declined,booked,no-show,complete,analyzed. - Configure the screener Webhook. Point your form tool to the n8n Webhook URL. For Typeform, use the "Webhook" integration in your form settings. For Tally, use the "Webhooks" section under Integrations.
- Write the scoring Code node. Define criteria as a JSON object at the top of the function. Return
score(0–100) andqualified(boolean). Pull the criteria from a Sheets row if you want to change them without editing the workflow. - Add the Calendly webhook. Create a second Webhook node in n8n. In Calendly's Integrations panel, add your Webhook URL as a subscriber for
invitee.createdandinvitee.canceledevents. Add the HMAC signature verification Code node immediately after. - Add the Zoom HTTP Request.
POSTtohttps://api.zoom.us/v2/users/me/meetingswith your Zoom Server-to-Server OAuth credential. Pulljoin_urlfrom the response and pass it to the Gmail confirmation node. - Add the recording completion Webhook. Point your transcription tool's post-interview event to a third n8n Webhook URL. Add the transcript normalization Code node before the AI step.
- Add the OpenAI synthesis node. Use
@n8n/n8n-nodes-langchain.openAiv2.1. Request JSON output explicitly in the prompt and list the exact field names you expect. Add a Code node after it that reads$json.output[0].content[0].text, strips markdown fences, and callsJSON.parse(). - Write to Notion. Map the parsed fields to your research database properties. Tag each entry with the study name, the participant's screener score, and the session date so you can filter by study later.
The User Interview: Recruit, Schedule & Transcribe template ships steps 2 through 6 pre-wired, including placeholder credentials and a sample scoring function that covers role and company-size criteria out of the box.
Get the User Interview Automation Templates →Here's the honest take on AI synthesis in research workflows: it doesn't replace analysis. It replaces the part where you copy-paste quotes from six transcript files into a single Notion page before you can even start seeing patterns. That's 30 to 45 minutes per research round returned to actual thinking. The model surfaces the themes. You decide which ones matter and what to do about them.
Skipping the synthesis step is fine at low volume — manual review of four transcripts is fast. But once you're running eight or more sessions per week, the normalization and AI extraction nodes pay for themselves in the first round they run. The setup is one afternoon; the payoff compounds across every study after that.
For teams collecting passive feedback alongside active interviews, the n8n customer feedback automation guide covers NPS workflows, review processing, and in-app feedback routing that feeds the same research database. For automating the candidate sourcing side more broadly, the n8n hiring automation guide covers sourcing, screening, and scheduling workflows that apply the same n8n patterns to recruiting job candidates.
Browse all research and feedback templates →Common questions
How do I automate user interview recruitment with n8n?
Can n8n transcribe and summarize user interviews automatically?
How does n8n connect with Calendly for interview scheduling?
Get the workflow templates this guide is built on
Import-ready n8n JSON, step-by-step setup, and tested end-to-end. One-time payment, own it forever.
Get 3 tested n8n templates, free
The full customer package for three real catalog templates — workflow JSON, step-by-step setup guide, credential checklist. Test-run on a live n8n instance like everything we sell. Plus new templates and automation guides in your inbox. No spam, unsubscribe anytime.
- 01Smart To-Do List ManagerPre-built n8n workflow template that automates productivity with OpenAI. Live in about 10 minutes.$14
- 02Email Follow-Up AutomatorPre-built n8n workflow template that automates crm with OpenAI. Live in about 15 minutes.$12
- 03Market Trend AnalyzerPre-built n8n workflow template that automates data processing with OpenAI. Live in about 10 minutes.$14
More automation guides

Automate Sales Outreach with n8n: Enrich, Sequence, and Follow Up at Scale
Sales outreach fails at scale in a predictable way: the first email goes out, a quarter of contacts don't respond, and the follow-up never happens because no one queued it. At 50 contacts that's a mil…

n8n Churn Prevention: Score At-Risk Subscribers Before They Cancel
Churn Announces Itself Before It Happens Most cancellation events look sudden from the Stripe dashboard. They aren't. The signals arrive two to four weeks earlier: logins drop from daily to twice a we…

n8n Telegram Automation: Alerts, Bots, and Notification Workflows
Telegram Gets Read. Email Doesn't. Most alert pipelines route to email. That's fine until the alert actually matters — a service down at 2 a.m., a high-value user hitting a plan ceiling, a negative re…