We've been using ClickUp for task management here for a while now.
We create a Space for each project to manage tasks, and we also use it to manage all sorts of small internal administrative work.
- ClickUp: What are Spaces?
Recently, as the number of Spaces and tasks has grown, we've started to see tasks slip past their original deadlines, and I felt it was becoming harder to notice when that happens.
Big goals like deliveries or releases, and high-priority tasks, are usually fine, but there are cases where a lower-priority task we decided to do just sits there, or where the task status simply never gets updated.
What we did
Of course, it's important for each task owner to keep an eye on deadlines and statuses themselves, but I thought that making it more visible when a task has passed its deadline could also serve as motivation to move tasks forward or update their status. So I built a mechanism to send notifications to Slack.
This mechanism runs the following process every weekday at 10am:
- Fetch overdue tasks via the ClickUp API
- Post the task information retrieved in step 1 to Slack
I've put together the code for running this on AWS Lambda in the following repository, so if you want to try the same thing, you can get started right away.
- GitHub: t2h5/clickup-reminder
Here's what the resulting notification looks like:
For each overdue task, it lists the date, the Space (the client or project name), the task name, the status, and the assignee. The look and feel could still use improvement, but it now makes it clear at a glance just how many tasks have gone past their deadline.
Since this gets posted to Slack every day, I think it's been effective at prompting people to check on their tasks.
That said, building this made me realize that it's only meaningful if you can notice a task before its deadline has already passed. Next, I'm planning to add a feature that notifies about tasks whose deadlines are coming up soon.
Explanation
AWS Lambda
Running this every day at 10am is achieved by combining AWS Lambda with CloudWatch Events.
For developing small batch jobs like this, we use the Serverless Framework, and lately we've found it easy to use the Serverless Plugin Typescript.
ClickUp API
We use the API to retrieve information from ClickUp.
Since API requests require a token, we get a Personal API Key ahead of time.
Since we wanted to retrieve all tasks for the Team regardless of Space, we request Get Filtered Team Tasks, and the "past deadline" state can be expressed using the due_date_lt parameter. It looks like the "deadline coming up soon" state could be expressed by combining it with due_date_gt.
Slack
Since we'd like to add features such as dynamically changing the channel to notify, we issue a token and post task information by requesting the chat.postMessage API.
If you just want a simpler way to send notifications, Incoming Webhooks also works.