Skip to main content

Slack

Audience: Sales, management, support, engineering · Where in app: Settings → Integrations → Slack (toggles in Settings → Notifications) · Plan availability: All plans (verify)

Slack lets the customer's team get real-time alerts in a Slack channel when something worth knowing happens on their website — a new visitor arrives, a lead goes hot, or a meeting gets booked. It's the fastest way for a sales team to "pounce" on a live lead without watching the dashboard all day.

What it does

  • New visitor alert — posts when a session is created (notifications.slack_new_visitor).
  • Hot lead alert — posts when a visitor's lead score crosses the hot threshold (notifications.slack_hot_lead).
  • Booking created — posts when a meeting is booked.
  • Custom event hooks — anything else can be routed to Slack via native webhooks → Zapier → Slack.

How it works

Auth model: OAuth. The customer connects Slack from Settings → Integrations → Slack and picks a channel during install. The connection is stored on company.slack_data (access_token, channel, channel.id) — all three must be present for isSlackIntegrated() to return true. The bot is granted a broad scope set including chat:write, chat:write.public, channels:read, channels:manage, channels:join, channels:history, users:read, and chat:write.customize (plus user scopes users.profile:read, chat:write, channels:read, groups:read).

Direction: outbound only. Knock Knock pushes messages to Slack; nothing flows back into the dashboard. Notifications are sent via the OAuth bot token using the Slack Web API (chat.postMessage-style calls), not incoming webhooks — SlackService.postMessage() delegates to ms-communication at /integrations/slack/send-message. Live-chat thread sync for chats is also handled in ms-communication (OAuth + event subscriptions with raw-body signature verification).

Each notification is markdown-formatted and includes:

  • Visitor name (if identified) or "Anonymous visitor"
  • Lead score
  • Source / referrer
  • Current page
  • A deep link to the live session

Configuration & options

SettingWhereWhat it does
notifications.slack_new_visitorSettings → NotificationsToggle new-visitor alerts on/off
notifications.slack_hot_leadSettings → NotificationsToggle hot-lead alerts on/off
ChannelSlack install / workspace settingsWhich channel each alert type posts to

For QA / support: if a notification didn't fire, check the relevant toggle first — a disabled toggle is the most common cause. Each alert type can target a different channel via Slack workspace settings.

Behaviors & edge cases

  • Workspace-scoped install: the Slack bot is tied to the workspace it was authorized into. If the customer switches Slack workspaces, the integration must be re-authorized — notifications silently stop otherwise.
  • No message customization: the built-in message format is fixed. For full control over wording/format, route events through webhooks → Zapier → Slack.
  • Rate limits: very high-volume tenants may see Slack drop messages. Mitigate by subscribing only to hot-lead alerts rather than every new visitor.

Plan & limits

  • Available on all plans (verify exact tier gating against current package config).
  • No Knock Knock-side message quota; the practical limit is Slack's own API rate limiting.

Technical implementation

  • Owning service: backendapp/services/SlackService.js + app/routes/slackRoutes.js. OAuth URL/callback under /integrations/slack/oauth/*; helpers getAccessToken/getChannel/getChannelId read company.slack_data. Actual message send delegates to ms-communication /integrations/slack/send-message.
  • Live-chat thread sync: ms-communication — Slack OAuth + event subscriptions with raw-body signature verification.
  • Notification toggles: companies.notifications.slack_new_visitor (fired on new session) / slack_hot_lead (fired when lead score crosses the hot threshold). Disconnecting (DELETE /integrations/slack) clears slack_data and per-user slack_user.
  • See CRM & External Integration.

What Nox can tell you

  • Slack connection status.
  • Recent Slack-fired events (via notification logs).
  • Why a notification didn't fire (e.g. channel toggle off).