Skip to main content
Web Chat is how you embed an agent inside your own app. It is an Agent Communication Infrastructure (ACI) channel, the same layer Slack and Teams use, except you own the surface: message list, composer, and layout. The React client is useWebChat from @novu/react. There is no prebuilt <WebChat /> component. If you are not on React, use conversation() from @novu/js.

Setup

Create an agent and keep it active. Then add the channel in the dashboard:
  1. Open the agent in the Novu dashboard.
  2. Add Web Chat. Novu creates the novu-web-chat integration if it is missing.

Install

Collect these values from the dashboard, then install @novu/react:
  • Application identifier from API Keys
  • A subscriber id for the signed-in person
  • The public agent identifier from the agent page
@novu/react requires React 18 or later (^18.0.0 or ^19.0.0).
Place NovuProvider above the chat. useWebChat gets the Novu client from that context.
NovuProvider signs the subscriber in. useWebChat selects which agent to talk to.
Replace YOUR_* placeholders with values from API Keys and Subscribers.

Add Novu Web Chat to my React app

Open in Cursor

Send a first message

Call useWebChat inside NovuProvider. Render text parts, then send with sendMessage.
Omit conversationId to start a new chat. The first successful send creates the conversation.

Messages

Render message parts in the timeline.

Tools

Tool calls, approval, and MCP connect.

Generative UI

Custom data parts and structured UI.

Conversations

Resume chats, load history, and reconnect.

assistant-ui

Build with the assistant-ui library.

Security

HMAC hashes before you ship to production.

useWebChat

Hook props, return value, and callbacks.

JavaScript SDK

Call loadWebChat(novu), then novu.webChat.conversation() in @novu/js.