# Task status changed Source: https://neondeerdata.com/docs/platform/automations/triggers/task-status-changed/ Trigger · Tasks Starts a run when a task is marked complete or reopened. **Attio events:** `task.created` , `task.updated` ## Inputs No configuration. ## Outputs ### Branch Completed (`completed`) | Label | Key | Type | Always set | Notes | | ------------------- | --------------------- | --------------- | ---------- | ------------------------------------------------------------------------------------------------------------------- | | Task | `task` | Task | Yes | | | Task ID | `task_id` | Text | Yes | | | Triggered at | `triggered_at` | Timestamp | Yes | | | Updated by | `updated_by` | Actor | No | Present only when Attio sends an actor of a recognized type (workspace member, API token, system, app or workflow). | | Is completed | `is_completed` | True/false | Yes | | | Content | `content` | Text | Yes | | | Deadline | `deadline_at` | Date | No | Date only (YYYY-MM-DD). The time of day is dropped. | | Linked record count | `linked_record_count` | Number | Yes | | | Linked records | `linked_records` | List of records | Yes | Iterable in a Loop block. Records whose object cannot be resolved to a slug are left out. | | Completed at | `completed_at` | Timestamp | No | | ### Branch Uncompleted (`uncompleted`) | Label | Key | Type | Always set | Notes | | ------------------- | --------------------- | --------------- | ---------- | ------------------------------------------------------------------------------------------------------------------- | | Task | `task` | Task | Yes | | | Task ID | `task_id` | Text | Yes | | | Triggered at | `triggered_at` | Timestamp | Yes | | | Updated by | `updated_by` | Actor | No | Present only when Attio sends an actor of a recognized type (workspace member, API token, system, app or workflow). | | Is completed | `is_completed` | True/false | Yes | | | Content | `content` | Text | Yes | | | Deadline | `deadline_at` | Date | No | Date only (YYYY-MM-DD). The time of day is dropped. | | Linked record count | `linked_record_count` | Number | Yes | | | Linked records | `linked_records` | List of records | Yes | Iterable in a Loop block. Records whose object cannot be resolved to a slug are left out. | ## How it behaves - Compares the task’s current completion status with its previously stored status. A change starts a run on the Completed or Uncompleted branch. - Needs a stored prior value for the task. The first event for a task the app has never seen stores the value and does not start a run. ## Errors Triggers have no error branch. When something goes wrong inside a trigger, no run starts. See [Troubleshooting](https://neondeerdata.com/docs/platform/automations/troubleshooting/). ## Example Move a deal to the next stage when its "Send contract" task is completed. **Example inputs** | Event | Value | | -------------- | --------------------------------------------------------------------------------------- | | `task.updated` | Sam Ortiz marks the task "Send contract", linked to the deal Acme Renewal, as complete. | **Example outputs** | Output | Value | | ------------------- | ------------------------------------ | | Task | Send contract | | Task ID | 2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e | | Triggered at | 2026-10-07T11:40:22Z | | Updated by | Sam Ortiz (workspace member) | | Is completed | true | | Content | Send contract | | Deadline | 2026-10-09 | | Linked record count | 1 | | Linked records | Acme Renewal (deals) | | Completed at | 2026-10-07T11:40:21Z | The run takes the Completed branch. Reopening the task takes Uncompleted, which has no Completed at. If the app has no stored status for a task, the first change only stores it and starts no run.