Sync Koji Research Insights to Notion: Build a Self-Updating Research Repository
Connect Koji to Notion via Zapier (or webhook) so every completed AI interview becomes a fresh Notion page — with transcript, structured answers, themes, quality score, and AI summary attached. Build a research repository that updates itself.
TL;DR: Build a self-updating Notion research repository in about 15 minutes. Connect Koji to Notion through Zapier (or any webhook-aware automation), and every completed AI interview becomes a fresh Notion page — tagged by theme, segment, and quality score, with the verbatim transcript, structured answers, and AI-generated summary all embedded. This is the modern alternative to copy-pasting quotes from a transcript app into a Notion doc and watching the doc go stale within a week. With Koji, the repository updates itself the moment each interview wraps.
Why teams sync Koji to Notion
Notion is where most product teams already keep their research repository, PRDs, design specs, and team wikis. The problem has always been the same: research lives in one tool, the repository lives in Notion, and a human has to manually bridge the two. That manual step is where 80% of research repositories die — someone gets busy, the copy-paste backlog grows, and within a quarter the repo is out of sync with reality.
A Koji → Notion sync flips the model. Instead of "do an interview, then update the repo," the repo updates itself the moment Koji's AI finishes moderating, transcribing, and analyzing each interview. By the time a PM opens the Notion database the next morning, every new interview is already there with:
- Full transcript with speaker labels
- AI-generated summary and key takeaways
- Structured answers from all 6 Koji question types (open_ended, scale, single_choice, multiple_choice, ranking, yes_no)
- Quality score (1–5)
- Detected themes
- Participant metadata (recruitment source, segment, custom fields)
- Direct link back to the live Koji interview
Tools like Koji automate the heavy lifting so the Notion side just becomes a structured viewing surface — which is what most teams actually wanted Notion to be in the first place.
The two integration paths
There are two production-ready ways to send Koji interviews to Notion:
- Zapier (recommended for most teams) — point-and-click, 15 minutes to set up, no code, supports filtering and conditional routing. This is the path 90% of teams should take.
- Direct webhook + Notion API — write a small serverless function that receives Koji's webhook and calls Notion's REST API directly. More flexible, fully customizable schema, no third-party dependency, but requires a few hours of engineering.
Both paths use the same Koji webhook payload. If you start with Zapier and outgrow it, you can swap to a direct integration later without changing your Koji setup.
This guide covers the Zapier path end-to-end. A short section at the end outlines the direct-API approach.
Prerequisites
Before you start:
- A Koji study with at least one completed interview (for testing)
- A Notion workspace where you have permission to create databases
- A Zapier account (free tier works for low-volume; the Starter plan is needed for filters and multi-step Zaps)
- About 15 minutes
Step 1: Design the Notion database
Open Notion and create a new database. Use these properties (column types) — they map cleanly to Koji's webhook payload:
| Property | Type | Purpose |
|---|---|---|
| Title (default) | Title | Interview title or participant identifier |
| Study | Select | Which Koji study this came from |
| Completed at | Date | When the interview wrapped |
| Quality score | Number | Koji's 1–5 quality rating |
| Themes | Multi-select | Auto-detected themes from Koji |
| Segment | Select | Participant segment from your recruiting |
| Summary | Text | AI-generated 2–3 sentence summary |
| Transcript URL | URL | Deep link back to the Koji interview |
| Participant ID | Text | For deduplication |
| Sentiment | Select | Optional: positive / neutral / negative |
You can add more properties later — Notion makes it easy. Start with these 10 and you'll cover 90% of use cases.
Open one of the existing entries (or create a placeholder) and add a few page sections inside the page body:
- A toggle called "Full transcript" — Zapier will write the transcript content here
- A callout called "Structured answers" — Zapier writes structured answer values here
- A divider, then a Notion embed of the Koji interview URL so you can play voice clips directly inside Notion
This structure is what makes Notion useful as a research repository: skimmable metadata at the top, searchable detail below.
Step 2: Set up the Koji webhook
In Koji:
- Open the study you want to sync from
- Go to Settings → Webhooks (or the Webhooks tab in the study editor)
- Add a new webhook destination
You will paste the URL here in the next step, so leave this tab open.
Step 3: Create the Zap
In Zapier:
- Create a new Zap
- Choose Webhooks by Zapier → Catch Hook as the trigger
- Copy the Catch Hook URL Zapier provides
- Paste it into the Koji webhook destination field, save, and click "Test webhook" in Koji
- Back in Zapier, click "Test trigger" — you should see Koji's payload with study ID, interview ID, transcript, structured answers, and metadata fields
This handshake is the only fiddly part. Once Zapier has received one real payload, you can map any field in the payload to any property in Notion downstream.
Step 4: Map the fields to Notion
Add an action step to your Zap: Notion → Create Database Item. Connect your Notion account, choose the database you created in Step 1, then map fields:
- Title →
interview.participant_nameor fallback tointerview.id - Study →
study.title - Completed at →
interview.completed_at - Quality score →
interview.quality_score - Themes →
interview.themes(comma-separated; Notion will split into multi-select tags) - Segment →
interview.metadata.segment(or whatever custom field you use) - Summary →
interview.ai_summary - Transcript URL →
interview.public_url - Participant ID →
interview.participant_id - Sentiment →
interview.sentiment(Koji's sentiment field if you have it enabled)
For the page body, use Notion's "Add to page" content blocks:
- Heading 2: "Summary"
- Paragraph:
interview.ai_summary - Heading 2: "Full transcript"
- Toggle: containing
interview.transcript_text - Heading 2: "Structured answers"
- Bulleted list: one bullet per structured answer (you can use a Zapier "Formatter → Utilities → Line items to text" step to format them nicely)
Save the action, run a real test, and confirm the page appears in your Notion database with all fields populated.
Step 5: Turn the Zap on and validate
Toggle the Zap to "On." Go back to Koji and complete one real interview end-to-end. Within 60 seconds the Notion page should appear.
Quality checks to run:
- Does the quality score map to a number, not a string?
- Are themes splitting into multiple Notion tags or arriving as one long string?
- Is the transcript embedding correctly inside the toggle?
- Does the public URL resolve when you click it?
If anything is malformed, edit the Zap action and re-test. Zapier shows you exactly what was sent to Notion at each step, which makes debugging fast.
Patterns that make Koji + Notion really powerful
Conditional routing by theme
Add a Zapier Filter step before the Notion action. Route interviews tagged with theme pricing-pain to a "Pricing research" Notion database and everything else to a general repo. This keeps each repo focused and discoverable.
Conditional routing by quality score
Filter to interviews with quality score 4 or above for your "Insights" repo, and route everything below into a "Raw interviews" archive. Most teams find that 80% of the actionable evidence comes from 20% of the interviews — this filter lets you spend your stakeholder time on the high-signal ones.
Auto-tagging with the AI consultant
After Koji generates a report, add a second Zap that creates a Notion page in your "Reports" database. Map the report's headline, narrative, and recommendation sections to Notion blocks. Now both interviews and reports are searchable in the same workspace.
Slack-style notifications
Add a Zapier path that posts to Slack whenever a new high-quality interview lands in Notion. The Slack message links directly to the Notion page, so the team can read the new evidence in one click.
Cross-study repository
If you run multiple studies in Koji (which most growing teams do), use a single Notion database with the "Study" select property. Notion's filter views let you slice by study, by theme, by date — no extra setup needed.
The direct-API approach (if you outgrow Zapier)
If you're sending more than 2,000 interviews/month or need transformations Zapier can't do cleanly, write a small webhook receiver:
- Stand up a serverless endpoint (Vercel, Cloudflare Workers, AWS Lambda all work)
- Add Koji's webhook secret verification (HMAC) to confirm authentic payloads
- Receive the JSON, transform fields as needed
- Call Notion's REST API (
POST /v1/pages) with your structured page object
This typically takes a senior engineer 2–4 hours including testing. The advantage is full control over schema, formatting, and bulk operations. Most teams start with Zapier and only migrate when the workflow has stabilized.
Common pitfalls
- Notion API rate limits. Notion caps writes to about 3 requests per second per integration. At very high interview throughput you may need to batch or queue.
- Theme arrays. If themes arrive as a JSON array string (
"[\"pricing\", \"onboarding\"]"), add a Zapier Formatter step to convert before mapping to Notion's multi-select. - Duplicate pages. If a Zap re-runs (e.g. because of a Zapier error), you can end up with duplicate Notion pages. Use the participant ID as a unique key and add a Zapier "Find page in Notion" step before "Create" — only create if not found.
- Webhook timeouts. Notion API calls occasionally take 10+ seconds. Zapier has a generous timeout, but if you're writing your own integration make sure your receiver responds to Koji within 5 seconds, then handles the Notion write asynchronously.
Why this is the modern way
Static research repositories — the ones built by humans copy-pasting from Loom to Notion — were always going to lose to automated ones. Every interview that completes in Koji is already transcribed, scored, themed, and structured. Pushing that into Notion automatically means your repository is finally as up-to-date as the AI's output, not as up-to-date as the most overworked person on the team had time to manually update. Combine that with Notion's surface area for organization, sharing, and embedding, and you get a research operations setup that scales from 5 interviews a month to 5,000 without breaking.
Related resources
- Connect Koji to Zapier — the full Zapier integration guide
- Sync Koji to HubSpot — equivalent pattern for HubSpot
- Send Research Insights to Slack — real-time team notifications
- Send Koji Insights to Linear — auto-file engineering tickets from interviews
- Koji Webhook Setup — the underlying webhook reference
- Koji Structured Questions Guide — the 6 question types Notion will receive
- Insight Repository Methodology — how to structure a research repo for discoverability
- User Research API — direct API reference if you outgrow Zapier
Related Articles
Insight Repository Methodology: How to Build, Tag, and Activate a Research Insight Library (Beyond Just Storage)
The methodology layer most repository guides skip — taxonomy design, atomic insight structure, governance, freshness/decay rules, and the insight-to-action workflow that turns a static archive into a decision engine. Includes a 2-week setup plan and how AI auto-tagging from Koji eliminates the librarian bottleneck.
How to Build a UX Research Repository: The Complete Guide
A research repository transforms scattered insights into a searchable organizational asset. Learn how to build one that teams actually use.
Send Research Insights to Slack: Real-Time Customer Interview Notifications via Webhooks
Pipe customer interview insights from Koji into your Slack workspace in real time. Use Koji webhooks to notify a #research channel the moment an interview completes, post quote highlights to #product-feedback, or alert #cs-alerts when a churn signal is detected. Step-by-step setup with a working Slack incoming webhook recipe.
Send Koji Insights to Linear: Auto-File Engineering Tickets from Customer Interviews
Wire Koji to Linear so every customer interview that surfaces a real pain point auto-creates a tagged Linear issue — with verbatim quote, theme, study link, and quality score attached. Replace the Slack-thread-to-screenshot-to-ticket workflow with a webhook.
Connect Koji to Zapier: Automate Customer Research Workflows in Minutes
Route every completed AI customer interview from Koji into 6,000+ Zapier apps — including Notion, Linear, Salesforce, Airtable, and Gmail. A step-by-step integration guide.
User Research API: Embed AI Interviews into Any Product or Workflow
How to use Koji's User Research API to run AI-moderated interviews from your own backend. Covers REST endpoints, the embed widget, webhooks, authentication, rate limits, and headless interview patterns.
Sync Koji Customer Interviews to HubSpot: Live Insights on Every Contact
Push Koji interview transcripts, themes, and quality scores onto HubSpot contact and company records in real time using webhooks and the HubSpot API.
Webhook Setup
Receive real-time notifications when interviews complete and analysis finishes using webhooks.
How to Use Your CRM Data for Targeted AI Research: Import Participants and Personalize Every Interview
Your CRM already contains your best research sample. Learn how to export customer segments, import them into Koji, send personalized interview links, and get 3–5x higher response rates than generic research recruitment.
Structured Questions in AI Interviews
Mix quantitative data collection — scales, ratings, multiple choice, ranking — with AI-powered conversational follow-up in a single interview.