Guides
Events
GozWire emits versioned, at-least-once event envelopes. An event is a delivery hint, not proof that a message exists.
GozWire emits versioned, at-least-once event envelopes. PostgreSQL remains the source of truth. An event is a delivery hint, not proof that a message exists.
{
"version": 1,
"eventId": "019...",
"event": "message.created",
"occurredAt": "2026-09-09T00:00:00.000Z",
"conversationId": "019...",
"messageId": "019...",
"data": {}
}
Implemented events
message.created/message.updated/message.deletedmessage.delivered/message.readmessage.blockedconversation.created/conversation.updatedparticipant.addedtyping.started/typing.stopped(ephemeral, not outbox)moderation.completed/moderation.reviewed/moderation.failedreaction.added/reaction.removedidentity.updated
participant.removed and presence.changed are not emitted. Presence and participant removal are not part of the current API. There is no message.expired. Expiry reuses message.updated and message.deleted with reason: "expired".
Typing never gets an outbox row.