Skip to main content
ctx.emit({ name, data }) sends a named payload on the current turn. It is not a chat message. It is not a signal. Use ctx.reply() when the subscriber must see text or a card. Use ctx.emit() when your client needs structured data during the turn, for example progress or a machine-readable status. The call posts at once. It does not wait for ctx.reply(). If the bridge has no eventsUrl, the call is a no-op.

Channel support

Send an event

name is a non-empty string. data is yours. JSON size must stay at or under 64 KB. Novu drops the event when name is empty or data is over the limit.
You can call ctx.emit more than once in one turn. Each call is a separate event.

Agent Chat

Agent Chat adds each event to the assistant message as part.type === 'data'. The fields are name and data. Render the parts you support. Skip the rest. The part stays on the message. Client walk: Custom data parts.

Reply

Send text, markdown, files, or cards to the subscriber.

Signals

Metadata, workflow triggers, and conversation resolution.

Agent Chat data parts

Render part.type === 'data' in your product UI.