{"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-09T07:16:50.044Z"},"content":[{"type":"documentation","id":"ac1945fc-72a1-4fad-9a1f-8cb9ee4918e7","slug":"slack-research-insights-integration","title":"Send Research Insights to Slack: Real-Time Customer Interview Notifications via Webhooks","url":"https://www.koji.so/docs/slack-research-insights-integration","summary":"Connect Koji to Slack via webhooks to post real-time customer interview insights into channels. Setup is three steps: create a Slack incoming webhook URL, build a small forwarder (Zapier, serverless function, or your existing backend) that reformats Koji's JSON payload into Slack format, and register the endpoint in Koji's webhook settings. Koji emits events for interview.completed, interview.quality_passed, theme.detected, and report.generated. Available on every plan including Free. Webhook payloads include structured answers from all 6 question types and respect Anonymous Mode by stripping identifiers automatically.","content":"## The 60-second answer\n\nKoji can post live customer interview insights into any Slack channel in three steps: create a Slack incoming webhook, register that URL in Koji as a webhook endpoint subscribed to interview events, and choose which events trigger a Slack message. The first interview completion will land in your channel within seconds — full quote, theme, quality score, and a link to the transcript. No third-party Zapier middleman required, no daily delay.\n\nIf you have ever wished your team got pinged in Slack the moment a customer says \"I'd pay double for that feature\" — this is the workflow.\n\n## Why pipe research into Slack?\n\nResearch loses 80% of its impact when insights sit in a dashboard nobody opens. A 2024 Forrester study found that organizations with real-time research distribution channels were 3.5x more likely to act on customer feedback within a sprint, vs. teams reading quarterly reports.\n\nWith Koji webhooks → Slack you get:\n\n- **Real-time visibility** — every completed interview, every theme detected, posted instantly\n- **Cross-functional reach** — engineers, designers, support, and execs all see the same raw quote\n- **Faster product decisions** — a single quote in `#product-channel` can shortcut a 30-minute meeting\n- **Customer obsession at scale** — your CEO can lurk on `#voice-of-customer` and stay close to users without scheduling a single call\n\nKoji's webhooks fire on study events; Slack's incoming webhooks accept structured JSON; the two glue together with a 30-line forwarder or a no-code automation tool. We will show both.\n\n## Webhook events Koji can send\n\nKoji emits webhook events for the moments that matter:\n\n- `interview.started` — a participant began an interview\n- `interview.completed` — interview finished, transcript and structured answers are ready\n- `interview.quality_passed` — completion scored 3+ on Koji's quality gate\n- `theme.detected` — a new theme has emerged across multiple interviews\n- `report.generated` — a research report is ready to share\n\nFor most teams, the high-signal triggers are `interview.completed` and `theme.detected`. Set up a Slack channel for each.\n\n## Setup: Slack → Koji in 3 steps\n\n### Step 1 — Create the Slack incoming webhook\n\n1. In Slack, go to **Apps** → search for **Incoming Webhooks** → click **Add to Slack**.\n2. Pick the channel where research insights should post. We recommend `#voice-of-customer` for general research, `#cs-alerts` for churn signals, and `#product-feedback` for feature requests.\n3. Slack generates a unique URL like `https://hooks.slack.com/services/T0000/B0000/XXXXXXXX`. Copy it.\n\n### Step 2 — Decide on payload shape\n\nSlack's incoming webhooks accept either a plain `{\"text\": \"...\"}` payload or rich Block Kit JSON. Koji emits JSON like:\n\n```json\n{\n  \"event\": \"interview.completed\",\n  \"study_id\": \"abc123\",\n  \"study_name\": \"B2B onboarding research\",\n  \"respondent_id\": \"anon_xyz\",\n  \"duration_seconds\": 720,\n  \"quality_score\": 4.5,\n  \"summary\": \"Participant struggled with onboarding step 3...\",\n  \"top_quote\": \"I almost gave up at the import screen.\",\n  \"themes\": [\"onboarding friction\", \"data import\"],\n  \"transcript_url\": \"https://koji.so/p/abc123/r/anon_xyz\"\n}\n```\n\nSince the payload shapes differ, you need a tiny middleware that reformats Koji's JSON into Slack's format.\n\n### Step 3 — Connect with one of three integration patterns\n\n**Option A — No-code (5 minutes)**\n\nUse a tool like Zapier, Make, or n8n with this recipe: trigger on Koji webhook, transform with a \"format JSON\" step, post to Slack with the incoming webhook URL. Map the Koji `top_quote` field into the Slack `text` field with formatting like:\n\n```\nNew interview completed for {{study_name}}\nQuote: \"{{top_quote}}\"\nThemes: {{themes}}\nQuality: {{quality_score}}/5\nFull transcript: {{transcript_url}}\n```\n\n**Option B — Lightweight serverless (15 minutes)**\n\nDeploy a small forwarder on Vercel, Cloudflare Workers, or AWS Lambda. The forwarder accepts Koji's POST, reformats it into Block Kit, and pushes to Slack. A complete TypeScript example lives in our [Webhook Setup](/docs/webhook-setup) guide.\n\n**Option C — Direct via the Headless API (advanced)**\n\nIf you are already using the [Headless API](/docs/headless-api-overview), have your existing backend listen for Koji webhooks and post to Slack alongside the work it already does (write to your data warehouse, update CRM, ping PagerDuty for negative sentiment, etc.). This is the route most enterprise customers go.\n\n### Step 4 — Register the endpoint in Koji\n\nIn Koji, open Settings → API & Webhooks → Add Webhook. Paste your forwarder URL, pick the events to subscribe to, and save. Koji will sign every request with a shared secret using HMAC-SHA256 — verify the signature in your forwarder. See [MCP Authentication & Security](/docs/mcp-authentication-security) for the signature-verification pattern.\n\nFire a test event from Koji's webhook console. Within a few seconds you should see a message appear in Slack.\n\n## Five Slack research workflows worth setting up\n\n### 1. Real-time interview firehose\nChannel: `#voice-of-customer`. Trigger: `interview.completed` with quality_score ≥ 3. Posts the top quote, themes, and transcript link. Keeps the whole team close to customers.\n\n### 2. Churn-signal alerting\nChannel: `#cs-alerts`. Trigger: `theme.detected` where theme matches `cancel|leaving|switching|too expensive`. Tags your CS lead. Pulls churn signals out of noisy data immediately.\n\n### 3. Feature-request capture\nChannel: `#product-feedback`. Trigger: `theme.detected` matching `wish|need|missing|wanted`. Auto-creates Linear tickets via the Linear Slack app. Closes the loop from interview to backlog.\n\n### 4. Daily research digest\nChannel: `#research-daily`. Posts a 5pm summary every day: number of interviews completed, top 3 themes, top 3 quotes, quality score average. Ideal for execs.\n\n### 5. Stakeholder mentions\nChannel: project-specific (e.g., `#proj-checkout-redesign`). Filters webhook events by `study_id` and posts to the matching project channel. Keeps domain stakeholders in the loop without spamming everyone.\n\n## Why webhooks beat the \"export CSV every Monday\" workflow\n\n| Capability | Manual CSV export | Slack via Koji webhook |\n|---|---|---|\n| Latency | 1–7 days | Seconds |\n| Distribution | Email attachment to 3 people | Whole channel sees it |\n| Discoverability | Sits in someone's inbox | Searchable in Slack forever |\n| Action time | Days (waits for next standup) | Immediate (link → discussion) |\n| Setup time | Weekly recurring chore | One-time, runs forever |\n\nPlatforms like Koji eliminate the \"research bottleneck\" entirely. Insights flow into the same channels where decisions already happen.\n\n## Filtering noise: only Slack the signal\n\nTwo controls keep your channels useful:\n\n1. **Quality gate** — Koji only sends webhook events for conversations that pass the quality gate (score 3+). Low-effort or abandoned interviews never trigger Slack. See [How the Quality Gate Works](/docs/how-the-quality-gate-works).\n2. **Theme thresholds** — Configure `theme.detected` to fire only when ≥3 unique respondents mention the same theme. Prevents single-data-point overreaction.\n\nFor sensitive employee research running in [Anonymous Mode](/docs/anonymous-employee-research-ai-interviews), webhook payloads automatically strip identifiers — only theme-level data is forwarded.\n\n## Combining with Koji's 6 structured question types\n\nWhen your study uses Koji's [structured questions](/docs/structured-questions-guide) (open_ended, scale, single_choice, multiple_choice, ranking, yes_no), webhook payloads include the exact structured answer for every question. This means your Slack message can say:\n\n> \"Sarah scored NPS as 9/10. Top reason for the 9: 'The new dashboard saves me 2 hours a week.'\"\n\n…instead of just an unstructured quote. Single, parseable, ready to ingest into your analytics warehouse alongside the conversation.\n\n## Security best practices\n\n- **Verify HMAC signatures** on every incoming Koji webhook before forwarding to Slack. Never trust unsigned webhooks.\n- **Store the Slack webhook URL as a secret** in your environment (not in code). Anyone with the URL can post to your channel.\n- **Use a per-study webhook URL** if you have sensitive studies. Slack lets you create unlimited incoming webhooks; isolating them per channel limits blast radius.\n- **Rotate secrets quarterly** — Koji supports webhook secret rotation in the dashboard.\n- **Apply Koji rate limits** — see [Rate Limits and CORS](/docs/rate-limits-and-cors). High-volume studies (1,000+ interviews/day) should batch events through a queue.\n\n## What about Microsoft Teams, Discord, or Mattermost?\n\nThe same pattern works. All three accept incoming webhooks. Replace the Slack URL with their equivalents. The Koji-side configuration is identical — you control the destination URL.\n\n## Plan availability and pricing\n\nWebhooks are available on every Koji plan, including Free. Each interview costs 1 credit (text) or 3 credits (voice). The webhook itself is not metered — you can fire as many as your study generates without additional cost. The [Insights](/docs/plan-comparison-guide) plan (€29/mo) suits teams running ~30 interviews per month; the Interviews plan (€79/mo) supports always-on programs.\n\n## Related Resources\n\n- [Webhook Setup](/docs/webhook-setup) — full webhook configuration walkthrough with code samples\n- [Research Automation Webhooks](/docs/research-automation-webhooks) — building real-time research pipelines\n- [Headless API Overview](/docs/headless-api-overview) — running Koji programmatically\n- [Structured Questions in AI Interviews](/docs/structured-questions-guide) — the 6 question types that produce parseable data\n- [How to Automate User Research](/docs/how-to-automate-user-research) — building 24/7 research pipelines\n- [MCP Authentication & Security](/docs/mcp-authentication-security) — verifying Koji request signatures\n- [Real-Time Research Insights](/docs/real-time-research-insights) — the Koji insights dashboard","category":"API Reference","lastModified":"2026-05-09T03:23:52.165633+00:00","metaTitle":"Slack Integration: Send Research Insights to Slack via Webhooks | Koji","metaDescription":"Pipe Koji customer interview insights into Slack channels in real time using webhooks. Step-by-step setup, code examples, and 5 production workflows.","keywords":["slack research integration","customer feedback slack","research insights slack","webhook slack","koji webhooks","slack notifications research","user research automation","customer interview alerts","voice of customer slack","real-time research"],"aiSummary":"Connect Koji to Slack via webhooks to post real-time customer interview insights into channels. Setup is three steps: create a Slack incoming webhook URL, build a small forwarder (Zapier, serverless function, or your existing backend) that reformats Koji's JSON payload into Slack format, and register the endpoint in Koji's webhook settings. Koji emits events for interview.completed, interview.quality_passed, theme.detected, and report.generated. Available on every plan including Free. Webhook payloads include structured answers from all 6 question types and respect Anonymous Mode by stripping identifiers automatically.","aiPrerequisites":["Koji account with webhooks enabled","Slack workspace admin access","Basic familiarity with REST APIs (or a no-code tool like Zapier)"],"aiLearningOutcomes":["Create a Slack incoming webhook and connect it to Koji","Map Koji webhook payloads into Slack Block Kit format","Set up 5 production research workflows in Slack","Verify HMAC signatures for webhook security","Filter noise using quality gates and theme thresholds"],"aiDifficulty":"intermediate","aiEstimatedTime":"10 min read"}],"pagination":{"total":1,"returned":1,"offset":0}}