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.deleted
  • message.delivered / message.read
  • message.blocked
  • conversation.created / conversation.updated
  • participant.added
  • typing.started / typing.stopped (ephemeral, not outbox)
  • moderation.completed / moderation.reviewed / moderation.failed
  • reaction.added / reaction.removed
  • identity.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.