AutomationFlowsGeneral › Reschedule Overdue Asana Tasks & Clean Up

Reschedule Overdue Asana Tasks & Clean Up

Original n8n title: Reschedule Overdue Asana Tasks and Clean Up Completed Tasks

Reschedule overdue Asana tasks and clean up completed tasks. Uses scheduleTrigger, asana, stickyNote. Scheduled trigger; 10 nodes.

Cron / scheduled trigger★★★★☆ complexity10 nodesAsana
General Trigger: Cron / scheduled Nodes: 10 Complexity: ★★★★☆ Added:

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": "RJ4PaYq0JBr29KJm",
  "name": "Reschedule overdue Asana tasks and clean up completed tasks",
  "tags": [
    {
      "id": "oMfA3lEfbqs7MU2P",
      "name": "Template",
      "createdAt": "2025-01-06T20:33:18.396Z",
      "updatedAt": "2025-01-06T20:33:18.396Z"
    }
  ],
  "nodes": [
    {
      "id": "9262720e-2beb-4426-a472-3d7bf8bc28af",
      "name": "Everyday at 7am",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        80,
        -520
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 7
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "0d074451-5d61-4ed4-86a8-f6cdf002e84b",
      "name": "Get user tasks",
      "type": "n8n-nodes-base.asana",
      "position": [
        320,
        -520
      ],
      "parameters": {
        "filters": {
          "assignee": "1201727447190193",
          "workspace": "1201727656813934",
          "completed_since": "={{ DateTime.now().format('yyyy-MM-dd') }}"
        },
        "operation": "getAll",
        "returnAll": true
      },
      "credentials": {
        "asanaApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "14939268-9bda-4fc1-9fef-aa6a74c2365a",
      "name": "Get task infos",
      "type": "n8n-nodes-base.asana",
      "position": [
        540,
        -520
      ],
      "parameters": {
        "id": "={{ $json.gid }}",
        "operation": "get"
      },
      "credentials": {
        "asanaApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e7d9a37c-66b7-46b9-b228-7372cb0d7b09",
      "name": "Task is open?",
      "type": "n8n-nodes-base.if",
      "position": [
        780,
        -520
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "145d9367-7662-4ed9-8195-bf9b35c78d6b",
              "operator": {
                "type": "boolean",
                "operation": "false",
                "singleValue": true
              },
              "leftValue": "={{ $json.completed }}",
              "rightValue": "false"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "11ae0bbb-8d76-4623-9a24-2c2a36600dd3",
      "name": "Due date in the past?",
      "type": "n8n-nodes-base.if",
      "position": [
        1020,
        -640
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "dbecabb3-8075-4cc0-94af-b678c8af8f66",
              "operator": {
                "type": "number",
                "operation": "lt"
              },
              "leftValue": "={{ $json.due_on.replaceAll(\"-\",\"\") }}",
              "rightValue": "={{ DateTime.now().format('yyyyMMdd') }}"
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "282d79c7-e74a-4249-ad37-b4d81655a206",
      "name": "Set due date to Today",
      "type": "n8n-nodes-base.asana",
      "position": [
        1280,
        -680
      ],
      "parameters": {
        "id": "={{ $json.gid }}",
        "operation": "update",
        "otherProperties": {
          "due_on": "={{ DateTime.now().format('yyyy-MM-dd') }}"
        }
      },
      "credentials": {
        "asanaApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "7cc18243-d3d4-4624-a906-a1617e411b0c",
      "name": "Clean up task",
      "type": "n8n-nodes-base.asana",
      "position": [
        1020,
        -440
      ],
      "parameters": {
        "id": "={{ $json.gid }}",
        "operation": "delete"
      },
      "credentials": {
        "asanaApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f4aafa1f-8c5b-4fd1-9aca-fd096508dbfb",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        40,
        -800
      ],
      "parameters": {
        "color": 5,
        "width": 640,
        "height": 240,
        "content": "### \u2699\ufe0f Set Up \n\n1. Add your **Asana** credentials\n2. Schedule the workflow to run at desired intervals (e.g., daily or weekly).\n3. Select your **Workspace Name** and your **Assignee Name** (user) in the **Get user tasks** node\n4. *(Optional) Tailor filtering conditions to match your preferred due-date rules and removal criteria.*\n5. **Activate the workflow** and watch your Asana workspace stay up to date and clutter-free."
      },
      "typeVersion": 1
    },
    {
      "id": "e4fcbdee-5dd0-40dc-b1ef-f7b8ce00dd03",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        60,
        -360
      ],
      "parameters": {
        "color": 7,
        "width": 160,
        "height": 100,
        "content": "\ud83d\udc46 \nUpdate the **Scheduler** here"
      },
      "typeVersion": 1
    },
    {
      "id": "195f467d-1124-4216-ab0e-048c6a9fc752",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        280,
        -360
      ],
      "parameters": {
        "color": 7,
        "width": 200,
        "height": 100,
        "content": "\ud83d\udc46 \nSelect your **Workspace Name** & **Assignee Name** here"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "timezone": "Europe/Paris",
    "callerPolicy": "workflowsFromSameOwner",
    "executionOrder": "v1"
  },
  "versionId": "fdc51229-75f4-4489-a7f7-1f36a35d43ac",
  "connections": {
    "Task is open?": {
      "main": [
        [
          {
            "node": "Due date in the past?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Clean up task",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get task infos": {
      "main": [
        [
          {
            "node": "Task is open?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get user tasks": {
      "main": [
        [
          {
            "node": "Get task infos",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Everyday at 7am": {
      "main": [
        [
          {
            "node": "Get user tasks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Due date in the past?": {
      "main": [
        [
          {
            "node": "Set due date to Today",
            "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

How this works

Keep your Asana projects on track effortlessly by automatically rescheduling overdue tasks to today and tidying up completed ones, saving you hours of manual admin each week. This workflow suits busy teams or individuals juggling multiple deadlines who rely on Asana for task management, ensuring nothing slips through the cracks without constant monitoring. The key step involves checking each open task's due date and updating it via Asana if it's in the past, while a separate branch handles archiving finished tasks to maintain a clutter-free workspace.

Use this daily at 7am for proactive maintenance in active projects with frequent task shifts, or adjust the cron trigger for different frequencies like weekly. Avoid it for static, low-volume lists where manual oversight suffices, or if your team uses custom Asana fields that might need extra handling. Common variations include adding email notifications for rescheduled tasks or integrating with Google Calendar to sync due dates across tools.

About this workflow

Reschedule overdue Asana tasks and clean up completed tasks. Uses scheduleTrigger, asana, stickyNote. Scheduled trigger; 10 nodes.

Source: https://github.com/Zie619/n8n-workflows — 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 template creates a nightly backup of all n8n workflows and saves them to a Google Drive folder. Each night, the previous night's backups are moved to an “n8n_old” folder and renamed with the corr

Move Binary Data, Google Drive, Item Lists +1
General

Code Itemlists. Uses stickyNote, moveBinaryData, googleDrive, itemLists. Scheduled trigger; 33 nodes.

Move Binary Data, Google Drive, Item Lists +1
General

This workflow is perfect for n8n users who want to automatically backup all their workflows 💾 to Google Drive with zero manual effort. Perfect for teams managing multiple workflows or anyone who value

n8n, Google Drive
General

Shopify to Google Sheets Product Sync Automation. Uses noOp, graphql, googleSheets, scheduleTrigger. Scheduled trigger; 25 nodes.

GraphQL, Google Sheets
General

Wait Code. Uses scheduleTrigger, markdown, splitInBatches, rssFeedRead. Scheduled trigger; 23 nodes.

RSS Feed Read, Google Sheets