AutomationFlowsGeneral › Manage Human Review Tasks with Google Tasks and Web Forms

Manage Human Review Tasks with Google Tasks and Web Forms

BySebastian Rothbucher @sebastianro on n8n.io

This workflow starts from a webhook, creates a Google Tasks item for a human to review a website, pauses for feedback via an n8n form, and then routes the result to an optional follow-up action (for example, adding to shortlist). Use task manager to manage human task backlog.…

Webhook trigger★★★☆☆ complexity10 nodesGoogle Tasks
General Trigger: Webhook Nodes: 10 Complexity: ★★★☆☆ Added:

This workflow corresponds to n8n.io template #16137 — we link there as the canonical source.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "xQKONecPd0aFmY2C",
  "name": "Task & Form",
  "tags": [],
  "nodes": [
    {
      "id": "b08b486e-14a0-43bd-af1f-89d248fef325",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 480,
        "height": 880,
        "content": "## Task & Form\n\n### How it works\n\n1. Trigger the workflow using a webhook.\n2. Set the website to be reviewed.\n3. Create a task in Google Tasks.\n4. Wait for feedback using a web form.\n5. Decide if the task should be added to a shortlist.\n6. Perform an additional action based on the shortlist decision.\n\n### Setup steps\n\n- [ ] Configure Google Tasks credentials.\n- [ ] Set up the webhook URL for the trigger.\n- [ ] Customize the feedback form in the wait node.\n\n### Customization\n\nThe workflow can be customized by changing the conditions in the 'shortlist?' node.\n\n### Some background: Why?\nWhen getting many AI results for review, it becomes hard to keep track if it's just in slack or mail. Also, it's harder to distribute work. Still, you'll want to keep n8n as the workflow engine, asking me for OK before resuming its magic. Using an external tool for managing the backlog of human tasks keeps things manageable. \n\n#### Is this the only possible scenario?\nNo, you will likely have a different trigger, a different action as follow up and likely also a different task manager. Instead of Google Tasks, you can also use any other task manager like Asana, Jira, Todoist, G-Sheets, Planner, etc. My point is to show that a backlog can easily be managed with an external tool while keeping Human Tasks (aka Human in the Loop / HITL) firmly within n8n. "
      },
      "typeVersion": 1
    },
    {
      "id": "6ecd6307-e626-447f-92b7-940d0c2b81a5",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        128
      ],
      "parameters": {
        "color": 7,
        "width": 544,
        "height": 304,
        "content": "## Initialize and set task\n\nTrigger the workflow and set the website to be reviewed, then create a task."
      },
      "typeVersion": 1
    },
    {
      "id": "5f42ea9f-d272-45b6-b224-1af8b63c9868",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        96
      ],
      "parameters": {
        "color": 7,
        "width": 400,
        "height": 320,
        "content": "## Feedback and shortlist decision\n\nCollect feedback through a web form and decide if the task should be added to a shortlist."
      },
      "typeVersion": 1
    },
    {
      "id": "94ca05a7-19a6-4b59-b578-2ad1cde4a9bd",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1568,
        0
      ],
      "parameters": {
        "color": 7,
        "height": 320,
        "content": "## Add to shortlist action\n\nExecute action if the task is to be added to the shortlist."
      },
      "typeVersion": 1
    },
    {
      "id": "72d32c2f-a402-4aa4-b630-7bb692d50f59",
      "name": "Create Google Task",
      "type": "n8n-nodes-base.googleTasks",
      "position": [
        960,
        256
      ],
      "parameters": {
        "task": "MDY0ODcwODQ3NjEyNDEzODUzMzk6MDow",
        "title": "=Check website {{ $('Set Website To Review').item.json.website2look }}",
        "additionalFields": {
          "notes": "=go to {{ $execution.resumeFormUrl }}, submit the form, thx"
        }
      },
      "credentials": {
        "googleTasksOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "00a6a17d-f997-4718-8715-4db8bb7a51e3",
      "name": "Add to Shortlist Action",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1616,
        160
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "4cd7f3cc-715d-43bb-a06a-ea8b8aa3fa77",
      "name": "If Shortlisted",
      "type": "n8n-nodes-base.if",
      "position": [
        1392,
        256
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "54368a29-a4c2-4628-a1f5-f651c6fa7a4d",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "ee615c8d-a4e7-493b-9bae-00f7e162c1fb",
      "name": "Wait for Feedback Form Completion",
      "type": "n8n-nodes-base.wait",
      "position": [
        1184,
        256
      ],
      "parameters": {
        "resume": "form",
        "options": {},
        "formTitle": "Content evaluation",
        "formFields": {
          "values": [
            {
              "fieldType": "dropdown",
              "fieldLabel": "Add 2 shortlist",
              "fieldOptions": {
                "values": [
                  {
                    "option": "yes"
                  },
                  {
                    "option": "no"
                  }
                ]
              }
            }
          ]
        },
        "formDescription": "=Check out <a href=\"{{ $('Set Website To Review').item.json.website2look }}\" target=\"_blank\">{{ $('Set Website To Review').item.json.website2look }}</a> and give feedback"
      },
      "typeVersion": 1.1
    },
    {
      "id": "baeba22e-beed-4586-8b41-395f48d2e888",
      "name": "Set Website To Review",
      "type": "n8n-nodes-base.set",
      "position": [
        784,
        256
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "97763cc4-480c-440a-9d02-2cc20411a2d0",
              "name": "website2look",
              "type": "string",
              "value": "https://sebastianrothbucher.github.io/"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "bd499062-9894-443e-bc00-9842fcc8bb41",
      "name": "Webhook GET Trigger for Review",
      "type": "n8n-nodes-base.webhook",
      "position": [
        608,
        256
      ],
      "parameters": {
        "path": "6d857513-5902-4813-ad2f-0f7c027fcf10",
        "options": {}
      },
      "typeVersion": 2.1
    }
  ],
  "active": false,
  "settings": {
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "e7a05102-e826-4bf7-a23f-49b26affee0b",
  "connections": {
    "If Shortlisted": {
      "main": [
        [
          {
            "node": "Add to Shortlist Action",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Google Task": {
      "main": [
        [
          {
            "node": "Wait for Feedback Form Completion",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Website To Review": {
      "main": [
        [
          {
            "node": "Create Google Task",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook GET Trigger for Review": {
      "main": [
        [
          {
            "node": "Set Website To Review",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait for Feedback Form Completion": {
      "main": [
        [
          {
            "node": "If Shortlisted",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow starts from a webhook, creates a Google Tasks item for a human to review a website, pauses for feedback via an n8n form, and then routes the result to an optional follow-up action (for example, adding to shortlist). Use task manager to manage human task backlog.…

Source: https://n8n.io/workflows/16137/ — original creator credit. Request a take-down →

More General workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

General

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

N8N Nodes 1Shot
General

jump-section: Comment Fix Pipeline. Uses httpRequest. Webhook trigger; 24 nodes.

HTTP Request
General

This workflow provides a universal webhook endpoint that dynamically routes incoming requests to different subflows. It allows you to manage multiple API-like endpoints from a single entry point, whil

General

WF-010 Parent Orchestrator Canonical. Webhook trigger; 24 nodes.

General

GitHub Issues Router (Linear / Jira / ClickUp). Uses stickyNote, httpRequest, respondToWebhook. Webhook trigger; 23 nodes.

HTTP Request