# Changelog | Novu

Stay up-to-date with Novu

# Changelog

Product updates, improvements, and fixes

[Follow us on X](https://twitter.com/novuhq?utm_campaign=website)

## All changelog posts

-

Jun 19, 2026

## [Novu Chat SDK Adapter](/changelog/novu-chat-sdk-adapter.md)

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.

Author: Dima Grossman

Dima Grossman

- [Agent Communication](/changelog/category/agent-communication.md)

- [New Feature](/changelog/category/new-feature.md)

- [Chat](/changelog/category/chat.md)

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](/changelog.md#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](/changelog.md#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](/changelog.md#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](https://docs.novu.co/agents/custom-code-agent/setup-your-agent/connect-components).

-

Jun 16, 2026

## [In-conversation MCP authorization and message queues](/changelog/in-conversation-mcp-authorization-and-message-queues.md)

Connect external MCPs during the conversation and process incoming messages one at a time for a more predictable chat experience.

Author: Dima Grossman

Dima Grossman

- [MCP](/changelog/category/mcp.md)

- [Agent Communication](/changelog/category/agent-communication.md)

Connecting external MCPs is now part of the conversation itself, instead of a separate setup step. When an agent needs access to a tool, it can prompt the user to connect it right at that moment and then continue the original request once access is granted. This makes the experience feel much more natural and reduces the friction of getting started with tool-powered workflows.

We also introduced session-level tool access, so connected tools are available only where they are relevant. That gives users a clearer sense of control over what an agent can use during a conversation, while helping keep tool usage focused on the task at hand.

### [Conversation queue](/changelog.md#conversation-queue)

We also improved how conversations behave when several messages arrive quickly. Messages are now processed in order, one at a time, instead of competing in parallel. This creates a more predictable experience in fast-moving chats and helps reduce confusing or out-of-sequence responses.

Each queued message gets its own ⏳ indicator, and the indicator is removed when the message is processed.

-

Jun 15, 2026

## [Novu Connect](/changelog/novu-connect.md)

Connect your AI agent to every channel your users already use, Slack, Microsoft Teams, WhatsApp, Telegram, and email, through one API. One agent, one synced conversation, live in minutes.

Author: Dima Grossman

Dima Grossman

Introducing Novu Connect: the Novu mark with channel icons orbiting it

Your AI agent can think. Now it can talk.

Novu Connect is live: the communication layer for AI agents. One agent, every channel your users already use, held together in one synced conversation, through a single API. You bring the agent. Connect handles identity, threading, and delivery.

## [Meet ACI: Agent Communication Infrastructure](/changelog.md#meet-aci-agent-communication-infrastructure)

Every wave of AI infrastructure solved one connection. MCP connected agents to tools. A2A connected agents to other agents. ACI connects agents to people.

Agent Communication Infrastructure is the layer that lets an agent hold a real, two-way conversation with humans on the channels they already use. Novu Connect is the first ACI layer. [Learn about the category](/aci.md).

The ACI architecture: communication providers (Slack, WhatsApp, MS Teams, Telegram, email) connect through Novu for identity resolution, credential management, observability, and a unified conversation, to the agent brain (Agent SDK, LangChain, or Claude Managed Agent)

The ACI stack: communication channels, the Novu bridge, and your agent's brain.

## [One agent, every channel](/changelog.md#one-agent-every-channel)

Reach your users on the surfaces they never close:

- Slack: channels and DMs, answering in-thread with full context.

- Microsoft Teams: the same agent inside the enterprise, with identity handled.

- WhatsApp: a real back-and-forth, not a no-reply blast.

- Telegram: fast, bot-friendly, community-native.

- Email: the universal fallback, same thread, same context.

Add a channel later, and your agent code does not change.

Choosing where your agent listens and communicates in the Novu dashboard: Slack, Microsoft Teams, WhatsApp Business, and Novu Email, with Telegram, Google Chat and more coming soon

Choosing where your agent listens and responds, in the Novu dashboard.

## [One conversation, not five bots](/changelog.md#one-conversation-not-five-bots)

The hard part was never connecting a single channel. It was keeping one conversation coherent across all of them.

Picture it: a user starts in Slack this morning, follows up from WhatsApp at lunch, and closes the loop by email tonight. To your agent, it is one thread. Same memory, same context. They never repeat themselves.

Managing an agent's conversations in Novu: one synced thread per user across channels

One synced conversation per user, across every channel.

That is the part that single-channel connectors cannot do. Identity resolution and threading are handled for you, so the conversation follows your user across channels.

## [Live in minutes: three ways to start](/changelog.md#live-in-minutes-three-ways-to-start)

Pick the path that fits how you work.

1. CLI. Run one command:

```
npx novu connect
```

2. Agent-first. Paste a prompt where your agent already lives: "Add an agent to my app https://novu.co/agents.md". Sixty seconds later, your agent is live on a real channel, no account or API key required.

3. Dashboard. Set it up visually in the Novu dashboard.

A Novu agent live in Slack: the connected support agent replies in a thread and offers to continue setup in the dashboard

An agent live in Slack, minutes after setup.

## [Bring your own brain](/changelog.md#bring-your-own-brain)

The agent logic stays yours. Bring Claude or your own code, and Connect carries it across every channel. We never run your agent's brain. Claude Managed agents are supported out of the box, on a free tier.

Creating an agent in Novu and connecting your own code or model through the unified conversational API

Bring your own code or model through the unified conversational API.

## [Same infrastructure, now two-way](/changelog.md#same-infrastructure-now-two-way)

Connect runs on the same delivery infrastructure behind your Novu notifications. No new stack, no migration. The one shift: it carries two-way agent conversations, not just the outbound messages you already send.

Connect your first agent at [novu.co/connect](/connect.md). This is day one, with more agent runtimes and channels on the way.

-

May 7, 2026

## [Account Security Upgrades: Passkeys, Smarter Client Trust, zxcvbn, Turnstile](/changelog/improving-security-in-novu.md)

Sign in with a passkey, skip Client Trust when 2FA is on, get real password-strength scoring at signup, and run into bot challenges only when traffic looks suspicious.

Author: Dima Grossman

Dima Grossman

- [Dashboard](/changelog/category/dashboard.md)

- [Improvement](/changelog/category/improvement.md)

Four account-security improvements ship together today: passkey login, Client Trust deferring to 2FA, zxcvbn-ts password scoring, and a smart CAPTCHA on sign-up.

Existing sessions are unaffected.

## [Passkey Login](/changelog.md#passkey-login)

Passkeys are now a supported authentication method for Novu accounts.

Sign up with email and password or SSO as usual, then add a passkey from **Account settings → Security**.

Your platform authenticator (Touch ID, Windows Hello, a hardware security key or a password manager like 1Password or iCloud Keychain) handles the rest.

On your next sign-in, pick **Sign in with passkey**.

Passkeys are built on WebAuthn. The private key never leaves your device, so there's nothing phishable for an attacker to capture on our side.

You can register up to 10 passkeys per account, and they stack alongside your password and 2FA. Passkeys are an additional method, not a replacement.

## [Client Trust Now Defers to 2FA](/changelog.md#client-trust-now-defers-to-2fa)

Client Trust is our defense against credential stuffing: when someone signs in with a valid password from a new device, we send a one-time code to their email or phone.

The catch was that this fired even on accounts with 2FA already enabled. Signing in from a new laptop meant two prompts: enter your TOTP code, then approve the new device.

That's now collapsed into the regular MFA flow.

If you have 2FA configured (TOTP, SMS or backup codes), Client Trust skips automatically. Your second factor already covers the new device.

If you don't have 2FA enabled, behavior is unchanged: new devices still require a verification code by email or phone.

This only applies to password sign-ins. Passkeys, OAuth and email links bypass Client Trust entirely.

If you've been meaning to turn on 2FA, this is the nudge.

## [Stronger Password Feedback via zxcvbn](/changelog.md#stronger-password-feedback-via-zxcvbn)

Password strength at signup, change and reset is now scored with zxcvbn-ts, the OWASP-recommended library for measuring real password entropy rather than pattern-matching "8 characters, one number, one symbol."

You'll see live strength feedback as you type, and a prompt when a password technically meets the basic rules but is still weak (`Password1!`, `qwerty123`, dictionary words with predictable substitutions).

This sits on top of our existing NIST-based minimum requirements.

## [Smarter Bot Protection on Sign-up](/changelog.md#smarter-bot-protection-on-sign-up)

Sign-up is where bots show up first.

We've moved off the old invisible CAPTCHA and onto a smart variant that uses CDN-level signals to decide whether a sign-up attempt looks suspicious.

If it does, the user gets a quick interactive challenge (typically a checkbox). If it doesn't, which is most of the time, the challenge stays out of the way.

Less friction for real users, more for the scripted ones.

-

May 5, 2026

## [Novu Copilot](/changelog/novu-copilot.md)

Describe the notification journey you want. Copilot builds the workflow inside Novu, ready for you to review and ship.

Author: Paweł Tymczuk

Paweł Tymczuk

Novu Copilot - describe a notification journey, get back a working workflow

Describe a notification Workflow in plain English and Novu Copilot builds it for you, ready to review and ship from the dashboard.

Play
Pause

Mute
Unmute

Enter fullscreen mode
Exit fullscreen mode

Novu Copilot generating a Workflow from a plain-English prompt

Tell Copilot the journey you want - a re-engagement sequence, a trial conversion flow, a milestone celebration - and it assembles the Workflow and required steps inside Novu.

Channels, timing and conditions are picked to match what you described, shaped by patterns Novu has seen work across thousands of production setups.

Generated Workflows land in your Development Environment as real Novu Workflows. Keep them, discard them or re-run with a tweaked prompt. Promote to production the same way you promote any other Workflow - nothing ships until you say so.

Copilot is in BETA and we ship improvements weekly based on what teams ask for. [Generate your first Copilot Workflow](https://dashboard.novu.co/workflows) in your dashboard.

-

Apr 21, 2026

## [Novu MCP Server](/changelog/novu-mcp-server.md)

Describe a notification flow in plain English and let your AI build, trigger, and debug it against your live Novu environment. 20+ tools, one Bearer token, live in two minutes.

Author: Emil Pearce

Emil Pearce

Novu MCP Server - your AI client, wired to your notification infrastructure

Describe a notification flow in plain English and let your AI build, trigger, and debug it against your live Novu environment.

No SDK. No dashboard clicking. No guessing at workflow IDs.

AI prompt describing a multi-channel notification flow being turned into a Novu Workflow that ships across In-App, Email, Push, SMS and Slack

The [Novu MCP Server](https://docs.novu.co/platform/additional-resources/mcp?utm_source=changelog&utm_medium=web&utm_campaign=mcp-launch) is now generally available.

We first shipped it as a preview last July, then kept adding to it quietly. It now exposes **20+ tools** - roughly ten more than launch day - covering subscriber CRUD, bulk triggering, event cancellation, and integration management.

If you've been meaning to connect your AI to Novu, this is the version to try. The model stops generating code from training data and starts reading your actual environment.

## [Build workflows in plain English](/changelog.md#build-workflows-in-plain-english)

Instead of scaffolding a workflow in the dashboard and wiring each channel step by hand, describe the outcome. The AI reads your environment, picks real providers, and stitches the steps together. Ask it to iterate and it edits the same workflow in place.

> "Create a workflow called order-shipped that sends an in-app notification when an order ships, then follows up with an email after 24 hours if the user hasn't seen it."
>

Novu Workflow built from an AI prompt, fanning out across Email, Push, SMS, Slack and In-App on the free tier's 10k events per month

## [Debug, inspect, and bulk-operate from chat](/changelog.md#debug-inspect-and-bulk-operate-from-chat)

Once a workflow is live, keep the assistant in the loop. Because it reads live delivery data and subscriber state, routine investigation, maintenance, and triage stop requiring a second tab:

> "Why didn't the order-confirmation notification reach subscriber user_123?"
>

> "Find subscriber user_789 and mute their Slack notifications, but keep email and push active."
>

> "Bulk trigger the re-engagement workflow for these 500 subscribers."
>

> "List my active integrations and tell me which are primary for each channel."
>

The last two hit tools we shipped in this release. Bulk triggering, event cancellation, integration inspection, and primary-provider management all came online after the original preview.

## [Connect your tool in two minutes](/changelog.md#connect-your-tool-in-two-minutes)

Copy a Secret Key from [dashboard.novu.co/settings/api-keys](https://dashboard.novu.co/settings/api-keys) and point your AI tool at the Novu server. Claude Code is one command:

```
claude mcp add --transport http novu https://mcp.novu.co/ \
--header "Authorization: Bearer your-novu-api-key"
```

Cursor uses **Settings > Tools & Integrations**. Codex reads `~/.codex/config.toml`. Claude Desktop connects through `npx mcp-remote` (Node.js 18+). EU environments use `https://mcp.novu.co/?region=eu`. Any other MCP-compatible client works with the same URL and Bearer auth pattern.

Novu MCP authorize dialog - one-time consent to let an AI client act on a Novu workspace

## [Missing a tool? Request it](/changelog.md#missing-a-tool-request-it)

The server is a living product. If there's an action you want to drive from your AI client that isn't covered yet, request it on the [Novu roadmap](https://roadmap.novu.co/roadmap) and we'll prioritize based on demand.

Available on every plan, cloud and open-source. [Explore Novu MCP](/mcp.md?utm_source=changelog&utm_medium=web&utm_campaign=mcp-launch).

## Free to start, ready to scale

**10K events/month** free forever. From weekend projects to enterprise scale, we've got you covered.

[Get started](https://dashboard.novu.co/)[See our plans](/pricing.md)
