{"site":{"name":"Koji","description":"AI-native customer research platform that helps teams conduct, analyze, and synthesize customer interviews at scale.","url":"https://www.koji.so","contentTypes":["blog","documentation"],"lastUpdated":"2026-05-21T02:09:36.038Z"},"content":[{"type":"documentation","id":"d5732cbe-3dd7-42bf-a341-f4a8bbeedf7d","slug":"notion-research-integration","title":"Sync Koji Research Insights to Notion: Build a Self-Updating Research Repository","url":"https://www.koji.so/docs/notion-research-integration","summary":"Build a self-updating Notion research repository by connecting Koji to Notion via Zapier (or directly via Notion's API). Every completed AI interview auto-creates a Notion page with the full transcript, AI-generated summary, structured answers across all 6 Koji question types, quality score, detected themes, participant metadata, and a deep link back to the live interview. The guide covers the recommended database schema, the full Zapier setup, conditional routing by theme and quality score, deduplication patterns, and the direct-API alternative for teams that outgrow Zapier. This is the modern alternative to manual copy-pasting from transcript apps into Notion docs that go stale within a week.","content":"**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.\n\n## Why teams sync Koji to Notion\n\nNotion 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.\n\nA 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:\n\n- Full transcript with speaker labels\n- AI-generated summary and key takeaways\n- Structured answers from all 6 Koji question types (open_ended, scale, single_choice, multiple_choice, ranking, yes_no)\n- Quality score (1–5)\n- Detected themes\n- Participant metadata (recruitment source, segment, custom fields)\n- Direct link back to the live Koji interview\n\nTools 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.\n\n## The two integration paths\n\nThere are two production-ready ways to send Koji interviews to Notion:\n\n1. **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.\n2. **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.\n\nBoth 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.\n\nThis guide covers the Zapier path end-to-end. A short section at the end outlines the direct-API approach.\n\n## Prerequisites\n\nBefore you start:\n\n- A Koji study with at least one completed interview (for testing)\n- A Notion workspace where you have permission to create databases\n- A Zapier account (free tier works for low-volume; the Starter plan is needed for filters and multi-step Zaps)\n- About 15 minutes\n\n## Step 1: Design the Notion database\n\nOpen Notion and create a new database. Use these properties (column types) — they map cleanly to Koji's webhook payload:\n\n| Property | Type | Purpose |\n|---|---|---|\n| Title (default) | Title | Interview title or participant identifier |\n| Study | Select | Which Koji study this came from |\n| Completed at | Date | When the interview wrapped |\n| Quality score | Number | Koji's 1–5 quality rating |\n| Themes | Multi-select | Auto-detected themes from Koji |\n| Segment | Select | Participant segment from your recruiting |\n| Summary | Text | AI-generated 2–3 sentence summary |\n| Transcript URL | URL | Deep link back to the Koji interview |\n| Participant ID | Text | For deduplication |\n| Sentiment | Select | Optional: positive / neutral / negative |\n\nYou can add more properties later — Notion makes it easy. Start with these 10 and you'll cover 90% of use cases.\n\nOpen one of the existing entries (or create a placeholder) and add a few page sections inside the page body:\n\n- A **toggle** called \"Full transcript\" — Zapier will write the transcript content here\n- A **callout** called \"Structured answers\" — Zapier writes structured answer values here\n- A divider, then a Notion **embed** of the Koji interview URL so you can play voice clips directly inside Notion\n\nThis structure is what makes Notion useful as a research repository: skimmable metadata at the top, searchable detail below.\n\n## Step 2: Set up the Koji webhook\n\nIn Koji:\n\n1. Open the study you want to sync from\n2. Go to Settings → Webhooks (or the Webhooks tab in the study editor)\n3. Add a new webhook destination\n\nYou will paste the URL here in the next step, so leave this tab open.\n\n## Step 3: Create the Zap\n\nIn Zapier:\n\n1. Create a new Zap\n2. Choose **Webhooks by Zapier** → **Catch Hook** as the trigger\n3. Copy the Catch Hook URL Zapier provides\n4. Paste it into the Koji webhook destination field, save, and click \"Test webhook\" in Koji\n5. Back in Zapier, click \"Test trigger\" — you should see Koji's payload with study ID, interview ID, transcript, structured answers, and metadata fields\n\nThis 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.\n\n## Step 4: Map the fields to Notion\n\nAdd 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:\n\n- Title → `interview.participant_name` or fallback to `interview.id`\n- Study → `study.title`\n- Completed at → `interview.completed_at`\n- Quality score → `interview.quality_score`\n- Themes → `interview.themes` (comma-separated; Notion will split into multi-select tags)\n- Segment → `interview.metadata.segment` (or whatever custom field you use)\n- Summary → `interview.ai_summary`\n- Transcript URL → `interview.public_url`\n- Participant ID → `interview.participant_id`\n- Sentiment → `interview.sentiment` (Koji's sentiment field if you have it enabled)\n\nFor the page body, use Notion's \"Add to page\" content blocks:\n\n- Heading 2: \"Summary\"\n- Paragraph: `interview.ai_summary`\n- Heading 2: \"Full transcript\"\n- Toggle: containing `interview.transcript_text`\n- Heading 2: \"Structured answers\"\n- Bulleted list: one bullet per structured answer (you can use a Zapier \"Formatter → Utilities → Line items to text\" step to format them nicely)\n\nSave the action, run a real test, and confirm the page appears in your Notion database with all fields populated.\n\n## Step 5: Turn the Zap on and validate\n\nToggle the Zap to \"On.\" Go back to Koji and complete one real interview end-to-end. Within 60 seconds the Notion page should appear.\n\nQuality checks to run:\n\n- Does the quality score map to a number, not a string?\n- Are themes splitting into multiple Notion tags or arriving as one long string?\n- Is the transcript embedding correctly inside the toggle?\n- Does the public URL resolve when you click it?\n\nIf 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.\n\n## Patterns that make Koji + Notion really powerful\n\n### Conditional routing by theme\n\nAdd 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.\n\n### Conditional routing by quality score\n\nFilter 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.\n\n### Auto-tagging with the AI consultant\n\nAfter 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.\n\n### Slack-style notifications\n\nAdd 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.\n\n### Cross-study repository\n\nIf 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.\n\n## The direct-API approach (if you outgrow Zapier)\n\nIf you're sending more than 2,000 interviews/month or need transformations Zapier can't do cleanly, write a small webhook receiver:\n\n1. Stand up a serverless endpoint (Vercel, Cloudflare Workers, AWS Lambda all work)\n2. Add Koji's webhook secret verification (HMAC) to confirm authentic payloads\n3. Receive the JSON, transform fields as needed\n4. Call Notion's REST API (`POST /v1/pages`) with your structured page object\n\nThis 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.\n\n## Common pitfalls\n\n- **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.\n- **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.\n- **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.\n- **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.\n\n## Why this is the modern way\n\nStatic 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.\n\n## Related resources\n\n- [Connect Koji to Zapier](/docs/zapier-research-automation) — the full Zapier integration guide\n- [Sync Koji to HubSpot](/docs/hubspot-research-integration) — equivalent pattern for HubSpot\n- [Send Research Insights to Slack](/docs/slack-research-insights-integration) — real-time team notifications\n- [Send Koji Insights to Linear](/docs/linear-research-integration) — auto-file engineering tickets from interviews\n- [Koji Webhook Setup](/docs/webhook-setup) — the underlying webhook reference\n- [Koji Structured Questions Guide](/docs/structured-questions-guide) — the 6 question types Notion will receive\n- [Insight Repository Methodology](/docs/insight-repository-methodology) — how to structure a research repo for discoverability\n- [User Research API](/docs/user-research-api-guide) — direct API reference if you outgrow Zapier\n","category":"API Reference","lastModified":"2026-05-20T03:25:53.310615+00:00","metaTitle":"Sync Koji to Notion: Build a Self-Updating Research Repository","metaDescription":"Step-by-step guide to sync Koji AI interviews to Notion via Zapier or direct API. Every completed interview becomes a tagged Notion page with transcript, themes, structured answers, and AI summary.","keywords":["koji notion integration","notion research repository","sync interviews to notion","customer research notion","ai interview notion","notion zapier research","research repo automation","research operations notion"],"aiSummary":"Build a self-updating Notion research repository by connecting Koji to Notion via Zapier (or directly via Notion's API). Every completed AI interview auto-creates a Notion page with the full transcript, AI-generated summary, structured answers across all 6 Koji question types, quality score, detected themes, participant metadata, and a deep link back to the live interview. The guide covers the recommended database schema, the full Zapier setup, conditional routing by theme and quality score, deduplication patterns, and the direct-API alternative for teams that outgrow Zapier. This is the modern alternative to manual copy-pasting from transcript apps into Notion docs that go stale within a week.","aiPrerequisites":["A Koji study with at least one completed interview","A Notion workspace with database-creation permission","A Zapier account (Starter plan recommended for filters)","About 15 minutes"],"aiLearningOutcomes":["Design a Notion database schema that maps cleanly to Koji's webhook payload","Set up a Zapier Catch Hook to receive Koji interview completions","Map all relevant fields including themes, structured answers, and quality scores","Filter interviews by quality score or theme before they hit Notion","Avoid duplicate pages using participant ID lookups","Migrate from Zapier to direct Notion API when volume grows","Build conditional routing across multiple Notion databases"],"aiDifficulty":"intermediate","aiEstimatedTime":"12 min read"}],"pagination":{"total":1,"returned":1,"offset":0}}