- Integrations
- /
- Todoist
- /
- Triggers
- /
- Task Completed
TriggerTodoistReal-timeUpdated May 2026
How do I trigger when a Todoist task is checked off?
Short answer: Drop the "Todoist → Task Completed" trigger on your workflow canvas, add filters if you want them, and publish. It fires within seconds of the event in Todoist, not on a polling schedule.
Anatomy
What this trigger looks like in a workflow.
Drop it on the canvas. Configure a couple of fields. Publish.
In the builder
Trigger
Task Completed
When the matching event happens
task completedtask doneon task completedwhen task completedwatch for completed taskwhen a task is completed in todoisttask finished
What this trigger returns
for the curiousYou don’t need to read this. Tiny Command auto-maps every field into the visual picker so downstream nodes can pull values by clicking. We show it here for power users who want to know what’s on the wire.
{"id": "7891011122","due": {"date": "2026-04-22","string": "Apr 22","is_recurring": false},"url": "https://todoist.com/showTask?id=7891011122","labels": ["billing"],"content": "Send invoice to client","priority": 2,"parent_id": null,"created_at": "2026-04-20T14:00:00.000000Z","creator_id": "123456","project_id": "2203456789","section_id": "7025","description": "Monthly retainer invoice for April","completed_at": "2026-04-23T11:30:00.000000Z","is_completed": true}
Output shape
Fields available to downstream nodes.
Every field below can be referenced by name in any action or filter that comes after this trigger.
| Field | Type | Example |
|---|---|---|
| id | string | "7891011122" |
| due | object | { … } |
| due.date | string | "2026-04-22" |
| due.string | string | "Apr 22" |
| due.is_recurring | boolean | false |
| url | string | "https://todoist.com/showTask?id=7891011122" |
| labels | array | ["billing"] |
| content | string | "Send invoice to client" |
| priority | number | 2 |
| parent_id | null | null |
| created_at | string | "2026-04-20T14:00:00.000000Z" |
| creator_id | string | "123456" |
| project_id | string | "2203456789" |
| section_id | string | "7025" |
| description | string | "Monthly retainer invoice for April" |
| completed_at | string | "2026-04-23T11:30:00.000000Z" |
| is_completed | boolean | true |
Pairs with
Drop these actions after Task Completed.
FAQ
Questions about Task Completed.
How does the Task Completed trigger work in Todoist?
Fires when a task is marked complete in Todoist. Common use: log productivity metrics, ping the requester, or move related items forward in a downstream system.
Is the Task Completed trigger real-time?
Yes. Task Completed uses webhooks or push subscriptions, not polling. Your workflow fires within seconds of the event happening in Todoist.
What data does Task Completed return?
The full event payload from Todoist. The output shape table on this page lists every field, its type, and an example value so you can map fields into downstream nodes.
Can I filter Task Completed so only some events start a workflow?
Yes. Add a Filter node right after the trigger and match on any field, whether that's subject, sender, status, or anything else in the payload. Workflows only continue when the filter passes.
Do I need Todoist admin permissions to use Task Completed?
For most Todoist accounts a standard user can authorize the trigger. Some Todoist plans require an admin to enable third-party webhooks. Check Todoist's docs if the trigger fails to register.
More triggers
Other Todoist triggers.
Trigger
Comment Added
Fires whenever a comment is added to a Todoist task. Use it to mirror discussion to Slack or push transcripts into your project log.
TriggerNew Project
Fires when a new project is created in Todoist. Useful for auto-creating matching folders or seeding default sections and templates.
TriggerNew Task
Fires whenever a new task is created in Todoist. Use it to forward action items into another tracker or to remind an assignee.
TriggerTask Updated
Fires whenever any field on a Todoist task changes (content, due date, priority, labels, project, assignee). Combine with field filters to react only to the changes you care about.
Build a workflow on this trigger.
One trigger. 27+ downstream actions. Zero glue.