Activity history
Route: /org/tasks?id=<task-id> → Activity Log tab
1. What the activity log is
An automatic, append-only record of what changed on a task and who changed it. Nobody writes to it by hand and nothing can be edited or removed.
It is recorded by the database itself, not by the application — a trigger on the task table fires on every insert, update and delete. That one implementation detail explains most of this page's behaviour:
| Consequence | Why |
|---|---|
| A change made anywhere is recorded | The trigger cannot be bypassed by using a different screen |
| Changes made by background jobs are recorded | Including Jira sync |
| Values are recorded as they were stored | Some appear as raw ids rather than names |
| Nothing is recorded for comments | Comments are a separate table with no such trigger |
| Activity log | Comments | |
|---|---|---|
| Written by | The database | People |
| Editable | Never | Never |
| Notifies | No | Yes |
| Covers | Field changes | Discussion |
2. What is recorded
Every field change gets its own entry, so one save that changed three fields produces three lines.
| Activity type | Fires on |
|---|---|
created | Task creation — records the title |
title_changed | Title |
description_changed | Description — truncated to 50 characters with an ellipsis |
status_changed | Status |
priority_changed | Priority |
assigned | Assignee, resolved to names |
due_date_changed | Due date, formatted Mon DD, YYYY |
start_date_changed | Start date |
category_changed | Category |
milestone_changed | Milestone |
estimated_hours_changed | Estimate, to two decimals |
remaining_hours_changed | Remaining hours |
actual_hours_changed | Actual hours |
time_logged | A time log |
deleted | Task deletion |
Completion is recorded in both directions — a task acquiring a completion timestamp, and one losing it because it was reopened.
3. Reading the log — step by step
Entries are a vertical timeline, newest first. Each line reads
"<user> <description>" with a MMM d, h:mm a timestamp beneath.
Empty: No activity recorded.
4. Field reference
Who the actor is
The trigger takes the actor from the task's own created_by or last_updated_by column, falling
back to the database session's current user.
An entry with no resolvable user displays as System.
Values that appear as ids rather than names
| Field | Recorded as |
|---|---|
| Assignee | The person's full name — resolved, with Unassigned for empty |
| Due date and start date | Formatted dates |
| Estimated / remaining hours | Rounded to two decimals |
| Status | The status id, not its name |
| Priority | The priority id, not its name |
An entry can read todo → in_progress rather than To Do → In Progress. The trigger stores what is
on the task, and statuses and priorities live in the project's configuration rather than in a table
it can join to.
If your status ids are cryptic, the activity log is where that shows.
What is not recorded
| Not in the log | Where it is instead |
|---|---|
| Comments | The Comments tab |
| Tag changes | Nowhere |
| Billable flag changes | Nowhere |
| Who viewed the task | Nowhere |
| The full text of a long description | Truncated to 50 characters |
5. The admin contract
Nothing to configure — the log cannot be turned off, filtered or retained differently, and there is no UI for purging it.
6. Downstream
The log is read by this tab only. It is not used for analytics, reporting or notifications.
The table view saves instantly, and bulk actions change many tasks at once. Neither has an undo. The activity log is how you find out what a value used to be.
7. Don't confuse this with…
| Thing | Where | Why it is different |
|---|---|---|
| Activity Log (this page) | The task | Field-level change history |
| Comments | Comments | Discussion, and the only thing that notifies |
| Time Logs | Time logs | The logs themselves; the activity log only notes that one happened |
| Jira sync history | Jira sync | Sync runs, not task fields |
8. Troubleshooting
| Symptom | Cause |
|---|---|
| An entry says System | The actor could not be resolved — usually a background job |
| A status change shows ids | Statuses are stored as ids; the trigger cannot resolve names |
| A description change is cut off | Descriptions are truncated to 50 characters |
| A comment is missing | Comments are not recorded here |
| A tag change is missing | Tags are not recorded |
| Several entries for one save | One entry per changed field |
| Entries appeared with nobody working | A Jira sync changed the task |
Related
- Task detail · Time logs
- Jira sync — the most common source of unexplained entries