Skip to content

Novu Chat SDK Adapter

Bring your Chat SDK agent to Slack, Teams, WhatsApp, Telegram, and email: deliver multi-channel notifications from one trigger, resolve every channel to one unified subscriber, and drop in React connect components to put channels in front of your end-customers.

Contributors
  • Dima Grossman

    Dima Grossman

The @novu/chat-sdk-adapter is now available. Wire it into your Chat SDK app and Novu manages credentials, identity, and delivery across Slack, Microsoft Teams, WhatsApp, Telegram, and email.

npm install @novu/chat-sdk-adapter

Multi-channel notifications from one trigger

Define a workflow once in Novu with the channels you want, then fire a single trigger from any handler. Novu fans out to every step — Slack, email, WhatsApp, and more — and routes replies back through the same agent loop, so proactive notifications and conversational replies share one handler set.

const ctx = getNovuContext(thread);

// One trigger delivers to every channel in the workflow.
await ctx.trigger("order-shipped", {
  payload: { orderId: "1234", trackingUrl: "https://example.com/track/1234" },
});

One unified subscriber across every channel

Every channel resolves to a single Novu subscriber mapped to your own user, so your agent always knows who it's talking to — with email, phone, locale, custom data, and the canonical conversation history available inside any handler.

const ctx = getNovuContext(thread);

const subscriber = await ctx.getSubscriber(); // email, phone, locale, custom data
const history = await ctx.getHistory();       // canonical transcript — ideal for LLM context

Expose channels to end-customers with connect components

Drop the prebuilt SlackConnectButton from @novu/react into your app so your end-customers can install and connect their own Slack workspace to your agent — OAuth, credentials, and Slack Connect handled by Novu. Microsoft Teams and Telegram connect buttons are in pre-release.

import { SlackConnectButton } from '@novu/react';

<SlackConnectButton
  integrationIdentifier={integrationIdentifier}
  connectionIdentifier={`${subscriberId}:${integrationIdentifier}:${agent.identifier}`}
  connectionMode="subscriber"
  connectLabel={`Install ${agent.name} ↗`}
  connectedLabel="Connected to Slack"
  onConnectSuccess={handleSlackOAuthSuccess}
/>

Get started with npx novu connect --runtime chat-sdk, or read the connect components docs.