<resource>.<state> where possible. Document lifecycle events add verbs such as created, updated, deleted, and restored for changes that are not document statuses.
Document events
Document events apply to documents created from any source, including API runs, email, chat, and schedules.Creation and initial status
Every document insertion emitsdocument.created. If the document is created directly in another subscribed state, Fluent immediately emits the matching status event as well.
For example, a quota or intake failure can create a document whose initial status is error. Consumers receive document.created followed by document.error. Both events have previous_status: null.
Most documents begin in processing, which has no event of its own, so they initially emit only document.created.
Updates
document.updated represents a meaningful human change:
update.trigger: "user_edit"means a person saved edited document data.update.trigger: "rollback"means a person restored an earlier version.
document_data do not emit document.updated.
Approval outcomes
document.pending_approval, document.approved, and document.rejected describe the approval flow as a whole. They are separate from the per-approver approval.* events.
Two transitions are especially important:
- Force approval emits
document.approvedwithout requiring precedingapproval.approvedevents for every stage. - Reopening a rejected document emits
document.pending_approvalagain. Therefore,document.rejectedis not necessarily the document’s final event.
Processing, trash, and retention
document.processed confirms that Fluent wrote the document to the configured system of record. An agent run can complete before this happens when the document still requires review or approval.
document.deleted represents a soft delete. It can be initiated by a person, an API request, or the team’s document-retention policy. Use the included document.status to distinguish an in-flight cancellation from archival of an already processed document.
A later restore emits document.restored. Permanent deletion after the trash-retention period does not emit another event.
Approval events
Approval events describe one approval unit at one stage. Subscribe to them when your application displays reviewer progress or needs individual votes. If you only need the overall verdict, use the document approval events instead.
Each event includes
stage_name, stage_position, stage_count, and an approval status. A human vote can include a note.
For approval.skipped:
approvercan benullwhen the approval unit matched nobody.noteisnull.reasoncan explain why the unit was excluded.
API-run events
Run events apply only to runs started through the public agent API. Runs started internally from email, chat, schedules, or other product workflows do not emitrun.* events.
A run can produce zero, one, or many documents. Terminal run events include the complete
document_ids list, which can be empty. A successful text-only run, for example, can emit run.completed without any document event.
Run completion and document processing are different milestones.
run.completed means the agent finished its work; a resulting document may still be a draft, awaiting approval, waiting for receipts, or ready to process.Events that are not emitted
Fluent does not currently emit events for transientprocessing or draft document states. These states do not indicate that an external system should act, and omitting them avoids a high-volume stream of intermediate pipeline updates.
Forward compatibility
Webhook payloads are additive. Fluent can add fields and event types without changing the webhook version. Consumers should:- Ignore payload fields they do not recognize.
- Return
2xxfor unknown event types after recording them. - Subscribe to All events only when the consumer safely handles unknown types.