useWebChat has no list helper. Use novu.webChat.listConversations to build a conversation sidebar or history screen.
List
Callnovu.loadWebChat(), then novu.webChat.listConversations on the client from useNovu. useWebChat loads Web Chat for the chat UI only.
Each row is a WebChatConversation with these fields: identifier, title, status, agentIdentifier, lastActivityAt, and createdAt.
data.conversations is the page. Use data.next and data.previous with after and before to page older lists.
When a row is selected, pass item.identifier as conversationId and item.agentIdentifier as agentId on useWebChat. Match the agent to the conversation.
Start or resume
PassconversationId so the hook loads history on mount.
conversationId that sendMessage returns, or the conversationId field on the hook result. On the next visit, pass that id back in, or pick a row from List.
To start another chat, remount the component without conversationId, or clear the prop.
agentId selects the agent. If the identifier changes, remount with the new agentId.
Omit conversationId unless that conversation belongs to the new agent. A conversation id from a different agent does not resume.
Older messages
Ifpagination.hasMore is true, call pagination.fetchMore() to load an older page.
fetchMore calls do not run.
Reconnect
The hook reconnects and applies missed events on its own. Show a banner from these fields.catchUpError is separate from send and fetch error. conversationStatus does not become an error state when recovery fails.
Retry
Ifmessage.status is failed, call retryMessage with that message id. Retry reuses the original idempotency key. It does not create a second message with the same text.
Resolved
conversationStatus on useWebChat is active or resolved. Do not use it to disable the composer.
The agent marks a conversation resolved with ctx.resolve(). conversationStatus becomes resolved.
When the subscriber sends the next message, the conversation reopens and conversationStatus becomes active again.
Use conversationStatus for badges or labels in your UI. Keep the composer enabled unless isRunning or isLoading is true.
Inspect resolved conversations in the Novu dashboard.