TodoistSync
A utility for syncing tasks from Clickup to Todoist
About
I use Todoist extensively for managing just about everything in my life. However, I usually have to use other project management software for work. Which brings us to Todoist sync. A utility for syncing tasks from one project management app to another. For now it only supports Clickup to Todoist but there are plans to eventually add more.
Why not just use IFTT or Zapier?
I wanted to add additionally functionality that's not available with a simple integration tool like that. Such as:
- Completing a task in one app marks it as completed in the other
- Editing the task in one syncs it back to other without creating new tasks
- Properly copying nested tasks over
Project Setup
- Ensure you have .NET Core 3.1 installed
- You'll need a publicly accessible url that can hit your running project. My preferred way to do this is through ngrok
- Create a new Todoist App using their app console
- Set the following environment variables in your project
- CLICKUP_API_KEY
- TODOIST_API_KEY
- This will be your access token from creating your todoist app
- TODOIST_CLICKUP_LABEL_ID
- This utility uses labels to determine if a task was generated by the utility itself. You'll have to create your own label and provide it's id here
- CLICKUP_USER_ID
- Clickup is normally setup as a team based project management app. You'll need to provide your specific User id here so the utility on syncs tasks assigned to you
- Run the project with
dotnet run
in theTodoistSync
folder - Run ngrok to get a public url
- Create a Todoist webhook
- Go back to your todoist app and fill in the Webhooks callback URL using the following format
<ngrok url>/todoist/webhook
- Select Webhooks version 8
- Check the
item:updated
event and theitem:completed
event - Save webhook configuration
- Go back to your todoist app and fill in the Webhooks callback URL using the following format
- Create a Clickup webhook
- Go to the Clickup API docs
- Scroll down to the webhooks section and click "Create Webhook"
- In the console fill out your team id and provide your api key in the
Authorization
header - Update the body section to have your endpoint using the format
<ngrok url>/clickup/webhook
- And update events to have just the following
- taskCreated
- taskUpdated
- taskDeleted
- Submit
- Create a new task in Clickup, assign it to the proper user id and watch it get created in Todoist