Google Tasks
Put your Google Tasks lists in a flow: add, update and complete tasks and manage lists with the action node, and fire a flow when a task is created, updated, completed or deleted with the trigger. The action node can also be handed to an AI Node as an AI toolkit.
Connect an account
Click Connect — in the node's credential picker or in Settings → Credentials — pick Google Tasks and sign in with Google. One credential is one Google account, with all its task lists.
Before Google asks for consent you choose the access:
- Full access (the default) — create, change, complete and delete tasks and lists. Needed by every operation that writes.
- Read only — list and read tasks and lists. A node connected this way says so and asks you to reconnect with Full access if it is set to write; it never tries.
- Revoking. Remove HostWebhook from
myaccount.google.com/permissionsand the credential stops working; Reconnect it from Settings → Credentials.
The action node
Fourteen operations, in two groups.
| Group | Operation | What it does | Tasks |
|---|---|---|---|
| Tasks | Create task | With notes, a due date, and optionally as a subtask. | writes |
| Tasks | Get task | One task whole: its notes, dates, status and links. | reads |
| Tasks | List tasks | The open, completed or all tasks of a list, optionally within a range of dates. | reads |
| Tasks | Update task | Only the fields you fill in change. Can remove the due date. | writes |
| Tasks | Complete task | Marks it as done. | writes |
| Tasks | Reopen task | Marks a completed task as not done. | writes |
| Tasks | Move task | Under another task (as a subtask), after a sibling, or into another list. | writes |
| Tasks | Delete task | It doesn't come back. | deletes |
| Lists | List task lists | Your lists with their IDs. | reads |
| Lists | Get task list | One list: its title and when it last changed. | reads |
| Lists | Create task list | A new list. | writes |
| Lists | Rename task list | A new title for a list. | writes |
| Lists | Delete task list | The list and every task in it. It doesn't come back. | deletes |
| Lists | Clear completed | Hides every completed task of a list: Google stops showing them in its apps. | deletes |
Every field takes a template: {{payload.name}} from a form, {{payload.id}} and {{payload.listId}} for the task that fired the Google Tasks trigger.
Picking a list
In Google Tasks a task always lives in a list, so most operations ask for one. You pick it from the account's own lists — the default one (My Tasks) comes first and is marked. Left empty, the default list is used — except to rename or delete a list, which always need one picked. Refresh reloads the lists after you create one in Google Tasks. To take it from the flow instead, choose Type an ID or a template under the list.
Due dates are a day
A due date is a day — 2026-10-15 — because Google Tasks keeps the day, not a time: a time you write is dropped. What the node returns comes back the same way, as a day.
Completed tasks
List tasks shows the open tasks by default; pick Completed or All to see the finished ones too. Tasks completed from the Google apps are kept hidden by Google, and the node asks for them on purpose, so they are found.
AI toolkit mode
Once the account is connected, the node asks for a Mode. AI toolkit turns it into fourteen tools that an AI Node — or an MCP client, through one of your MCP servers — calls by name.
| Tool | Arguments |
|---|---|
| create_google_task | list_id? · title · notes? · due? · parent? · previous? |
| get_google_task | list_id? · task_id |
| list_google_tasks | list_id? · show? · due_from? · due_to? · completed_from? · completed_to? · updated_since? · max_results? |
| update_google_task | list_id? · task_id · title? · notes? · due? · status? · remove_due_date? |
| complete_google_task | list_id? · task_id |
| reopen_google_task | list_id? · task_id |
| move_google_task | list_id? · task_id · parent? · previous? · destination_list_id? |
| delete_google_task | list_id? · task_id |
| list_google_task_lists | max_results? |
| get_google_task_list | list_id? |
| create_google_task_list | title |
| rename_google_task_list | list_id · title |
| delete_google_task_list | list_id |
| clear_google_tasks_completed | list_id? |
What you control
- Deleting starts blocked. Unblock
delete_google_task,delete_google_task_listorclear_google_tasks_completedin the node's tool list if the agent should have them. Any other tool can be blocked the same way — creating tasks, for an agent that should only read. - Lists. A tool called without
list_idworks on the default list;list_google_task_listsgives the model the others. - Characters per call sent to the model. 20,000 by default. Lists that don't fit are cut whole tasks at a time, with a note saying how many were left out.
Testing a tool
operation in their payload that names another tool is refused.{ "operation": "create_google_task", "title": "Call Sam about the proposal", "due": "2026-10-15" }The trigger
Pick a Google Tasks credential, the list to watch (from the account's lists) — or All my lists, up to twenty — and what fires it, one or more of:
- Task created — a new task. Selected by default.
- Task completed — marked as done. It arrives once, as completed, not also as updated. Selected by default.
- Task updated — its title, notes, due date or position.
- Task deleted — removed from the list.
A Read only connection is enough for the trigger: it only reads. The events can change while the trigger is active; a different list needs Apply changes.
- Activating doesn't send what was already there. The tasks that exist when you activate are only remembered; the first delivery is the first change after that.
- "Created" means new to HostWebhook. Google doesn't keep when a task was created — only when it last changed — so a task is created for the trigger when it sees it for the first time.
- All my lists looks at every list the account has at each check. A list made after you activate is picked up at the next check, and its tasks are remembered, not delivered.
- A very busy list — more than a thousand tasks changed since the last check — is read in parts: the trigger doesn't move forward until fewer change, and warns about it.
What the trigger sends downstream
The same task the action node's Get task returns, with what happened and the list in front — a flow reads {{payload.title}} the same way from either:
{
"event": "taskCompleted",
"id": "MTYyODc1NjQ4MjM2NTA0NTM3NzY6MDow",
"title": "Call Sam Rivera about the proposal",
"notes": "Ask about the second-round dates.",
"status": "completed",
"due": "2026-10-15",
"completed": "2026-10-14T17:30:00.000Z",
"parent": null,
"position": "00000000000000000001",
"updated": "2026-10-14T17:30:00.000Z",
"webViewLink": "https://tasks.google.com/task/…",
"listId": "MDQ2Nzg5MDEyMzQ1Njc4OTAxMjM6MDow",
"listTitle": "My Tasks",
"previousStatus": "needsAction",
"deleted": false,
"hidden": true,
"assigned": false
}previousStatus is what HostWebhook last knew of the task; null on a new one. A deleted task arrives with deleted: true and what Google still returns of it.
Complete it, update it or move it with the action node using {{payload.id}} and {{payload.listId}}.
Trying it out
The trigger's Test push reads the latest tasks of the list and shows them exactly as a delivery will arrive, for the events you picked — without running the flow and without remembering anything. To see a real one, activate the trigger and add a task to that list: it arrives at the next check.
Good to know
Busy or throttled
Google limits how many calls one project can make. When it answers that the limit was reached, the node waits and tries again before giving up with Google's message.
Tasks assigned from Docs or Chat
A task assigned to you from a Google Doc or a Chat space can only be changed in part. If Google refuses an edit, the node returns Google's own message.