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.
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 aspart.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.
Related
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.