Encord Label and Activity Logs
This topic provides a comprehensive overview of all events tracked in the Encord Editor, including when they occur and what properties are captured for each event.Overview
The Encord Editor tracks user interactions and changes to provide analytics, audit trails, and workflow management capabilities. All events are logged with a consistent base structure and additional properties specific to each action type.Base Properties
All editor log events include the following base properties:| Property | Type | Description |
|---|---|---|
dataUnitId | string | The hash/ID of the data unit being annotated |
workflowStageId | string | UUID of the workflow stage |
workflowTaskId | string | UUID of the workflow task (annotation, review task or empty when in view mode) |
branchName | string | The branch name (useful when using consensus workflow) |
sessionId | string | Unique session identifier for the editor session |
action | string | The specific action being logged (see event-specific sections) |
actionCategory | string | Category of the action: "object", "classification", "task", "agent", or "editor" |
timestamp | string | Timestamp of when the event occurred |
Object Actions
Object actions track changes to annotation objects (bounding boxes, polygons, points, etc.).Common Object Properties
All object actions include these properties:| Property | Type | Description | |
|---|---|---|---|
objectHash | string | Unique identifier for the object | |
featureId | string | Feature hash identifying the ontology class/type | |
labelName | string | Display name of the label/ontology class | |
labelRanges | [number, number][] | Frame ranges where the object exists (empty array for segmentations) | |
objectShape | string | Shape type: "bounding_box", "rotatable_bounding_box", "polygon", "polyline", "point", "skeleton", "bitmask", "cuboid", "segmentation", "cuboid_2d" | |
objectId | number | Numeric ID of the object | |
objectCurrentFrame | number | null | Current frame index (null for segmentations) |
CREATE_OBJECT
When: An annotation object is created (drawn) in the editor. Additional Properties:eventInformation.coordinates(null for audio): Object coordinates (bounding box, polygon points, etc.)
UPDATE_OBJECT
When: An object is modified (frame range, classifications, or feature type changed). Additional Properties:eventInformation.oldRange(optional): Previous frame ranges[number, number][]eventInformation.newRange(optional): New frame ranges[number, number][]eventInformation.oldClassification(optional): Previous classification valueseventInformation.newClassification(optional): New classification valueseventInformation.oldFeatureHash(optional): Previous feature hasheventInformation.newFeatureHash(optional): New feature hasheventInformation.lastEditedBy: User hash of who made the edit
UPDATE_OBJECT with EventInformationObjectEditCoordinates.
UPDATE_OBJECT (Coordinate Changes)
When: Only the coordinates/shape of an object are modified (e.g., resizing a bounding box, moving polygon vertices). Additional Properties:eventInformation.oldCoordinates: Previous coordinate valueseventInformation.newCoordinates: New coordinate valueseventInformation.lastEditedBy: User hash of who made the edit
DELETE_OBJECT
When: An annotation object is deleted. Additional Properties:eventInformation.classifications(optional): Classification values that were associated with the objecteventInformation.coordinates(optional): Final coordinates of the deleted object
APPROVE_OBJECT
When: An object is approved during review. Additional Properties:eventInformation.classifications(optional): Classification values associated with the objecteventInformation.isConsensus: Boolean indicating if this is part of a consensus revieweventInformation.previousAction(optional): Previous review action ("APPROVE","REJECT", or"REOPEN")
REJECT_OBJECT
When: An object is rejected during review. Additional Properties:eventInformation.classifications(optional): Classification values associated with the objecteventInformation.isConsensus: Boolean indicating if this is part of a consensus revieweventInformation.previousAction(optional): Previous review action
REVERT_TO_PENDING_OBJECT
When: An approved or rejected object is reopened/reverted to pending status. Additional Properties:eventInformation.classifications(optional): Classification values associated with the objecteventInformation.isConsensus: Boolean indicating if this is part of a consensus revieweventInformation.previousAction(optional): Previous review action (typically"APPROVE")
Classification/Attribute Actions
Classification/attribute actions track changes to frame-level or object-level classifications (attributes).Common Classification Properties
All classification actions include these properties:| Property | Type | Description |
|---|---|---|
classificationHash | string | Unique identifier for the classification |
featureId | string | Feature hash identifying the classification type |
labelName | string | Display name of the classification |
labelRanges | [number, number][] | Frame ranges where the classification applies |
CREATE_ATTRIBUTE
When: A classification/attribute is created. Additional Properties:eventInformation.classifications: Object mapping feature hashes to classification results, including:featureId: Feature hashname: Display namevalue: Selected value- Nested answers (for nested attributes)
UPDATE_ATTRIBUTE
When: A classification is modified (frame range or value changed). Additional Properties:eventInformation.oldRange(optional): Previous frame rangeseventInformation.newRange(optional): New frame rangeseventInformation.oldValue(optional): Previous classification valueseventInformation.newValue(optional): New classification valueseventInformation.lastEditedBy: User hash of who made the edit
DELETE_ATTRIBUTE
When: A classification/attribute is deleted. Additional Properties:eventInformation.classifications: Classification values that were deleted
APPROVE_CLASSIFICATION
When: A classification is approved during review. Additional Properties:eventInformation.classifications(optional): Classification valueseventInformation.isConsensus: Boolean indicating if this is part of a consensus revieweventInformation.previousAction(optional): Previous review action
REJECT_CLASSIFICATION
When: A classification is rejected during review. Additional Properties:eventInformation.classifications(optional): Classification valueseventInformation.isConsensus: Boolean indicating if this is part of a consensus revieweventInformation.previousAction(optional): Previous review action
REVERT_TO_PENDING_CLASSIFICATION
When: An approved or rejected classification is reopened/reverted to pending status. Additional Properties:eventInformation.classifications(optional): Classification valueseventInformation.isConsensus: Boolean indicating if this is part of a consensus revieweventInformation.previousAction(optional): Previous review action
Task Actions
Task actions track workflow-level operations.SKIP_TASK
When: A task is skipped in the workflow. Additional Properties:eventInformation.skipReason: String reason provided for skipping the task
SAVE_TASK
When: A task is saved (manually or via autosave). Additional Properties:eventInformation.saveType: Either"manual"or"autosave"eventInformation.success: Boolean indicating if the save operation succeeded
SUBMIT_TASK
When: A task is submitted for review or completion. Additional Properties:eventInformation.labels: Array of label identifiers (object/classification hashes) included in the submission
APPROVE_TASK
When: A task is approved during review. Additional Properties: For non-consensus reviews:eventInformation.approvedLabelHashes: Array of approved label hasheseventInformation.isConsensus:false
eventInformation.approvedLabelHashes: Array of approved label hasheseventInformation.isConsensus:trueeventInformation.isDetermineConsensus:falseeventInformation.annotatorsWithApprovedLabels: Array of{ email: string, hash: string }for annotators whose labels were approved
eventInformation.approvedLabelHashes: Array of approved label hasheseventInformation.isConsensus:trueeventInformation.isDetermineConsensus:trueeventInformation.selectedAnnotators: Array of{ email: string, hash: string }for selected annotatorseventInformation.winningSetAnnotator:{ email: string, hash: string }for the annotator whose labels won
REJECT_TASK
When: A task is rejected during review. Additional Properties: For non-consensus reviews:eventInformation.rejectedLabelHashes: Array of rejected label hasheseventInformation.approvedLabelHashes: Array of approved label hasheseventInformation.isConsensus:false
eventInformation.approvedLabelHashes(optional): Array of approved label hasheseventInformation.isConsensus:trueeventInformation.isDetermineConsensus: Boolean indicating if consensus determination was involvedeventInformation.annotators: Array of annotator identifiers
Agent Actions
RUN_AGENT
When: An automated agent/ML model is executed. Additional Properties:eventInformation.objectHashes: Array of object hashes that were created or modified by the agenteventInformation.agentUuid: UUID of the agent that was runeventInformation.agentEndpoint: API endpoint used for the agenteventInformation.agentTitle: Display title of the agenteventInformation.agentDescription: Description of the agenteventInformation.success: Boolean indicating if the agent run succeeded
Editor Actions
Editor actions track editor-level state changes and user interactions.ENTER_EDITOR
When: A user opens/enters the editor. Additional Properties:- None (empty
eventInformation: {})
ENTER_EDIT_MODE
When: The editor enters edit mode (e.g., when starting to draw an annotation). Additional Properties:- None (empty
eventInformation: {})
EXIT_EDIT_MODE
When: The editor exits edit mode (e.g., after completing an annotation). Additional Properties:- None (empty
eventInformation: {})
FORCE_OVERWRITE
When: A user forces an overwrite operation (e.g., overwriting existing labels). Additional Properties:- None (empty
eventInformation: {})
Event Flow Examples
Creating an Object
- ENTER_EDITOR - User opens editor
- ENTER_EDIT_MODE - User selects drawing tool
- CREATE_OBJECT - User draws a bounding box
- EXIT_EDIT_MODE - User completes the annotation
- SAVE_TASK (autosave) - System auto-saves
- SUBMIT_TASK - User submits the task
Reviewing Objects
- APPROVE_OBJECT - Reviewer approves object 1
- REJECT_OBJECT - Reviewer rejects object 2
- APPROVE_TASK - Reviewer approves the entire task
Editing an Object
- UPDATE_OBJECT (coordinates) - User resizes a bounding box
- UPDATE_OBJECT (feature) - User changes the object’s class/type
- UPDATE_OBJECT (range) - User extends the object to additional frames
Notes
- All timestamps are in UTC ISO 8601 format
- Empty UUIDs (
EMPTY_UUID) are used when workflow information is not available - Classification values are stored as nested objects for complex attribute structures
- Coordinates are stored in shape-specific formats (bounding boxes, polygons, etc.)
- Frame ranges use inclusive start and end frames:
[startFrame, endFrame] - Segmentations do not have frame ranges (empty array) or current frame (null)

