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.
ℹOnly Tasks. It is its own connection: your Gmail, Calendar, Drive or Contacts credentials don't work here, and this one doesn't reach any of them. Google lets you pick the access at consent, not change it afterwards — to switch between Full access and Read only, connect the account again.
  • Revoking. Remove HostWebhook from myaccount.google.com/permissions and the credential stops working; Reconnect it from Settings → Credentials.

The action node

Fourteen operations, in two groups.

GroupOperationWhat it doesTasks
TasksCreate taskWith notes, a due date, and optionally as a subtask.writes
TasksGet taskOne task whole: its notes, dates, status and links.reads
TasksList tasksThe open, completed or all tasks of a list, optionally within a range of dates.reads
TasksUpdate taskOnly the fields you fill in change. Can remove the due date.writes
TasksComplete taskMarks it as done.writes
TasksReopen taskMarks a completed task as not done.writes
TasksMove taskUnder another task (as a subtask), after a sibling, or into another list.writes
TasksDelete taskIt doesn't come back.deletes
ListsList task listsYour lists with their IDs.reads
ListsGet task listOne list: its title and when it last changed.reads
ListsCreate task listA new list.writes
ListsRename task listA new title for a list.writes
ListsDelete task listThe list and every task in it. It doesn't come back.deletes
ListsClear completedHides 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.

⚠Deleting a task or a list, and Clear completed, happen for real on every run — Run test included — and Google Tasks can't bring them back from here. Point the first tests at a list made for testing.

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.

ToolArguments
create_google_tasklist_id? · title · notes? · due? · parent? · previous?
get_google_tasklist_id? · task_id
list_google_taskslist_id? · show? · due_from? · due_to? · completed_from? · completed_to? · updated_since? · max_results?
update_google_tasklist_id? · task_id · title? · notes? · due? · status? · remove_due_date?
complete_google_tasklist_id? · task_id
reopen_google_tasklist_id? · task_id
move_google_tasklist_id? · task_id · parent? · previous? · destination_list_id?
delete_google_tasklist_id? · task_id
list_google_task_listsmax_results?
get_google_task_listlist_id?
create_google_task_listtitle
rename_google_task_listlist_id · title
delete_google_task_listlist_id
clear_google_tasks_completedlist_id?

What you control

  • Deleting starts blocked. Unblock delete_google_task, delete_google_task_list or clear_google_tasks_completed in 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_id works on the default list; list_google_task_lists gives 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

⚠Only a tool call picks the tool. In AI toolkit mode, only an AI Node, an MCP client or a voice agent chooses which tool the node runs. Run Test, a flow or a webhook run the operation saved on the node: an operation in their payload that names another tool is refused.
✦To try a tool, call it from an AI Node or from an MCP client. Its arguments look like this:
jsonA tool call
{ "operation": "create_google_task", "title": "Call Sam about the proposal", "due": "2026-10-15" }
⚠A node in toolkit mode is not part of the pipeline. Events arriving through connections made before you switched are refused — the node only runs the tool it is asked for.

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.

ℹGoogle Tasks doesn't notify anyone, so HostWebhook checks the lists on a schedule: as often as your plan allows, never faster than every five minutes. A task changed twice between two checks arrives once, as it stands at the second check.
  • 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.