New

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

Back to docs
API Reference

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.

The 60-second answer

Koji 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.

If 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.

Why pipe research into Slack?

Research 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.

With Koji webhooks → Slack you get:

  • Real-time visibility — every completed interview, every theme detected, posted instantly
  • Cross-functional reach — engineers, designers, support, and execs all see the same raw quote
  • Faster product decisions — a single quote in #product-channel can shortcut a 30-minute meeting
  • Customer obsession at scale — your CEO can lurk on #voice-of-customer and stay close to users without scheduling a single call

Koji'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.

Webhook events Koji can send

Koji emits webhook events for the moments that matter:

  • interview.started — a participant began an interview
  • interview.completed — interview finished, transcript and structured answers are ready
  • interview.quality_passed — completion scored 3+ on Koji's quality gate
  • theme.detected — a new theme has emerged across multiple interviews
  • report.generated — a research report is ready to share

For most teams, the high-signal triggers are interview.completed and theme.detected. Set up a Slack channel for each.

Setup: Slack → Koji in 3 steps

Step 1 — Create the Slack incoming webhook

  1. In Slack, go to Apps → search for Incoming Webhooks → click Add to Slack.
  2. 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.
  3. Slack generates a unique URL like https://hooks.slack.com/services/T0000/B0000/XXXXXXXX. Copy it.

Step 2 — Decide on payload shape

Slack's incoming webhooks accept either a plain {"text": "..."} payload or rich Block Kit JSON. Koji emits JSON like:

{
  "event": "interview.completed",
  "study_id": "abc123",
  "study_name": "B2B onboarding research",
  "respondent_id": "anon_xyz",
  "duration_seconds": 720,
  "quality_score": 4.5,
  "summary": "Participant struggled with onboarding step 3...",
  "top_quote": "I almost gave up at the import screen.",
  "themes": ["onboarding friction", "data import"],
  "transcript_url": "https://koji.so/p/abc123/r/anon_xyz"
}

Since the payload shapes differ, you need a tiny middleware that reformats Koji's JSON into Slack's format.

Step 3 — Connect with one of three integration patterns

Option A — No-code (5 minutes)

Use 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:

New interview completed for {{study_name}}
Quote: "{{top_quote}}"
Themes: {{themes}}
Quality: {{quality_score}}/5
Full transcript: {{transcript_url}}

Option B — Lightweight serverless (15 minutes)

Deploy 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 guide.

Option C — Direct via the Headless API (advanced)

If you are already using the Headless API, 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.

Step 4 — Register the endpoint in Koji

In 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 for the signature-verification pattern.

Fire a test event from Koji's webhook console. Within a few seconds you should see a message appear in Slack.

Five Slack research workflows worth setting up

1. Real-time interview firehose

Channel: #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.

2. Churn-signal alerting

Channel: #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.

3. Feature-request capture

Channel: #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.

4. Daily research digest

Channel: #research-daily. Posts a 5pm summary every day: number of interviews completed, top 3 themes, top 3 quotes, quality score average. Ideal for execs.

5. Stakeholder mentions

Channel: 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.

Why webhooks beat the "export CSV every Monday" workflow

CapabilityManual CSV exportSlack via Koji webhook
Latency1–7 daysSeconds
DistributionEmail attachment to 3 peopleWhole channel sees it
DiscoverabilitySits in someone's inboxSearchable in Slack forever
Action timeDays (waits for next standup)Immediate (link → discussion)
Setup timeWeekly recurring choreOne-time, runs forever

Platforms like Koji eliminate the "research bottleneck" entirely. Insights flow into the same channels where decisions already happen.

Filtering noise: only Slack the signal

Two controls keep your channels useful:

  1. 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.
  2. Theme thresholds — Configure theme.detected to fire only when ≥3 unique respondents mention the same theme. Prevents single-data-point overreaction.

For sensitive employee research running in Anonymous Mode, webhook payloads automatically strip identifiers — only theme-level data is forwarded.

Combining with Koji's 6 structured question types

When your study uses Koji's structured questions (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:

"Sarah scored NPS as 9/10. Top reason for the 9: 'The new dashboard saves me 2 hours a week.'"

…instead of just an unstructured quote. Single, parseable, ready to ingest into your analytics warehouse alongside the conversation.

Security best practices

  • Verify HMAC signatures on every incoming Koji webhook before forwarding to Slack. Never trust unsigned webhooks.
  • Store the Slack webhook URL as a secret in your environment (not in code). Anyone with the URL can post to your channel.
  • 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.
  • Rotate secrets quarterly — Koji supports webhook secret rotation in the dashboard.
  • Apply Koji rate limits — see Rate Limits and CORS. High-volume studies (1,000+ interviews/day) should batch events through a queue.

What about Microsoft Teams, Discord, or Mattermost?

The 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.

Plan availability and pricing

Webhooks 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 plan (€29/mo) suits teams running ~30 interviews per month; the Interviews plan (€79/mo) supports always-on programs.

Related Resources

Related Articles

Real-Time Research Insights: How to See Themes, Quotes, and Quality Scores as Interviews Complete

Stop waiting weeks for analysis — modern AI research platforms surface themes, structured-question distributions, sentiment, and quality-scored quotes the moment each interview ends. Here is how real-time research insights work in Koji and how to design studies that take advantage of them.

Research Automation: How to Build Real-Time Research Pipelines with Webhooks

Koji webhooks push interview and report data to your systems the instant something happens — enabling Slack alerts, CRM sync, automated tagging, and fully automated research pipelines that operate without manual intervention.

Webhook Setup

Receive real-time notifications when interviews complete and analysis finishes using webhooks.

Rate Limits and CORS

Understand how Koji's API rate limiting works and how to configure CORS origins for your integration.

Plan Comparison Guide

Compare Koji's credit-based pricing plans — Free, Insights, Interviews, and Enterprise — to find the right fit for your research needs.

How the Quality Gate Works

Understand Koji's quality gate — conversations scoring below 3/5 are completely free and don't consume credits, protecting your research budget.

Headless API Overview

Manage interviews programmatically with the Koji REST API — start, message, and complete interviews from your own code.

Structured Questions in AI Interviews

Mix quantitative data collection — scales, ratings, multiple choice, ranking — with AI-powered conversational follow-up in a single interview.

MCP Authentication & Security

How Koji MCP authenticates with OAuth 2.1 and PKCE. Covers the authorization flow, token lifecycle, security model, data privacy, and how to revoke access.

How to Automate User Research: Build a Pipeline That Runs 24/7

A step-by-step guide to automating user research — from setting up AI-moderated interviews to continuous discovery pipelines that generate insights every week without manual effort.

Customer Interview Cadence: How Often Should You Talk to Users? (2026)

Set the right customer interview cadence for your team — from one a week (Teresa Torres' baseline) to daily continuous discovery — and how AI moderation makes higher cadences sustainable.