Add assigned GitHub issues to Todoist automatically
Whenever a GitHub issue is assigned to you, a clean, labeled task lands in your Todoist Engineering project with the issue link, due date, and priority already set.
Build a code-based workflow that turns GitHub issues assigned to me into Todoist tasks in my Engineering project. This is a fully deterministic CRUD pipeline. No LLM judgement needed.
Trigger: incoming webhook from GitHub. Configure it for the 'issues' event. Only run the workflow when action == 'assigned' AND the assignee.login matches the GitHub username on my connected GitHub account. Otherwise, exit early.
Step 1: Call GitHub's Get an Issue operation using the repo owner, repo name, and issue number from the webhook payload. Pull title, body, labels, milestone, repo full_name, number, and html_url from the response.
Step 2: Build the Todoist task fields:
- content: '[<repo_name>#<number>] <title>' where <repo_name> is the short repo name (the part after the slash in full_name).
- description: the issue body, followed by a blank line and the line 'Issue: <html_url>'. If the body is empty, just include the issue link.
- priority: 2 (Todoist P2) if any GitHub label name (case-insensitive) is one of 'bug', 'urgent', 'p0', or 'p1'. Otherwise priority 3 (P3).
- labels: map every GitHub label name directly to a Todoist label string. Pass them as-is (Todoist will create any that don't yet exist on the account).
- due_date: if the issue has a milestone with a due_on value, use the date portion (YYYY-MM-DD) of that timestamp. If no milestone or no due_on, omit the due_date field entirely.
- project_id: the user's Engineering project in Todoist. Expose this as a configurable parameter at the top of the workflow so a user can rename or switch projects without editing logic.
Step 3: Call Todoist's Create Task operation with those fields. Return success on 2xx. Surface any 4xx/5xx errors with the upstream message so the user can see what went wrong (missing project, invalid label, etc.).
Edge cases to handle cleanly: an issue with no body, no labels, no milestone, or a milestone without a due_on. None of these should block task creation. Pull requests show up under the 'issues' event too. Skip them by checking for the pull_request key on the issue object and exiting early if present.
Additional information
What does this prompt do?
- Watches GitHub for the moment an issue gets assigned to you and creates a matching Todoist task in seconds.
- Names the task '[repo#number] title' so your Todoist inbox stays scannable, and drops the issue body plus a link to the issue in the description.
- Maps the GitHub labels onto Todoist labels and bumps priority to P2 if the issue is tagged bug, urgent, p0, or p1.
- If the GitHub milestone has a due date, the Todoist task gets the same due date so deadlines never get lost in translation.
What do I need to use this?
- A GitHub account where issues get assigned to you (personal repos or your team's).
- A Todoist account with an Engineering project (or any project you want the tasks to land in).
- Permission on the GitHub repos to install a webhook, or admin help if those repos are owned by your org.
How can I customize it?
- Point the tasks at a different Todoist project, like Personal or a specific team board.
- Adjust the priority rules. For example, treat anything tagged customer-facing as P1, or default everything to P4.
- Change the task name format. Some teams prefer just the issue title, others want the milestone name baked in.
- Add a filter so only issues from specific repos create Todoist tasks, useful if you're assigned across many repos but only want a subset in your task list.
Frequently asked questions
Does this work for issues assigned in private repos?
What happens if someone else gets assigned, or the whole team is assigned at once?
Will it create duplicates if the same issue is unassigned and reassigned to me?
Can I use this with a Todoist Free account?
What if the GitHub issue doesn't have a milestone or any labels?
Stop copying GitHub issues into your task list by hand.
Connect GitHub and Todoist once, and every issue assigned to you shows up as a ready-to-work task seconds later.