New

Now in Claude, ChatGPT, Cursor & more with our MCP server

Back to docs
API Reference

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:

  1. 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.
  2. 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:

PropertyTypePurpose
Title (default)TitleInterview title or participant identifier
StudySelectWhich Koji study this came from
Completed atDateWhen the interview wrapped
Quality scoreNumberKoji's 1–5 quality rating
ThemesMulti-selectAuto-detected themes from Koji
SegmentSelectParticipant segment from your recruiting
SummaryTextAI-generated 2–3 sentence summary
Transcript URLURLDeep link back to the Koji interview
Participant IDTextFor deduplication
SentimentSelectOptional: 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:

  1. Open the study you want to sync from
  2. Go to Settings → Webhooks (or the Webhooks tab in the study editor)
  3. 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:

  1. Create a new Zap
  2. Choose Webhooks by ZapierCatch Hook as the trigger
  3. Copy the Catch Hook URL Zapier provides
  4. Paste it into the Koji webhook destination field, save, and click "Test webhook" in Koji
  5. 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_name or fallback to interview.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:

  1. Stand up a serverless endpoint (Vercel, Cloudflare Workers, AWS Lambda all work)
  2. Add Koji's webhook secret verification (HMAC) to confirm authentic payloads
  3. Receive the JSON, transform fields as needed
  4. 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

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.