Guides6 min read

Todoist AI Bot Integration

Connect your AI chatbot to Todoist. Manage tasks, projects, and productivity through OpenClaw or OpenClaw via chat.

Published: 27/01/2025

Overview

Connect your AI chatbot to Todoist and manage your tasks entirely through chat. Add tasks, check your schedule, complete items, and get productivity insights - all by messaging your bot.

What You Can Do

  • Add tasks: "Add buy milk to my shopping list"
  • View tasks: "What's on my agenda today?"
  • Complete tasks: "Mark the report as done"
  • Reschedule: "Move the dentist appointment to Friday"
  • Projects: "Show me all tasks in the Work project"
  • Search: "Find all tasks tagged with urgent"

Setup Guide

Step 1: Get Todoist API Token

  1. Go to todoist.com/app/settings/integrations
  2. Scroll to "API token"
  3. Copy your token

Step 2: Configure Your Bot

# Todoist Integration
TODOIST_ENABLED=true
TODOIST_API_KEY=your-api-token-here

Step 3: Test Connection

# Restart bot
pm2 restart openclaw

# Test in chat
"Show my tasks for today"

Usage Examples

Quick Add

Natural language task creation:

You: "Remind me to call John tomorrow at 2pm" Bot: "Added task: 'Call John' due tomorrow at 2:00 PM āœ“"

You: "Add 'Review proposal' to work project, high priority, due Friday" Bot: "Added to Work project: 'Review proposal' (Priority 1) due Friday āœ“"

View Tasks

You: "What do I need to do today?" Bot: "šŸ“‹ Today's Tasks (5 items):

High Priority:

  • [ ] Finish quarterly report

Work:

  • [ ] Team standup @ 10:00
  • [ ] Client call @ 14:00

Personal:

  • [ ] Dentist @ 16:30
  • [ ] Pick up groceries"

Complete Tasks

You: "I finished the quarterly report" Bot: "Completed: 'Finish quarterly report' āœ“

Great job! 4 tasks remaining for today."

Reschedule

You: "Push the client call to tomorrow" Bot: "Rescheduled: 'Client call' moved to tomorrow at 14:00 āœ“"

Project Overview

You: "How's the website project looking?" Bot: "šŸ“Š Website Redesign Project:

Progress: 8/15 tasks complete (53%)

Overdue (2):

  • Design mockups (2 days)
  • Content review (1 day)

Due This Week (3):

  • Homepage layout
  • Mobile responsive
  • SEO optimization"

Advanced Features

Smart Parsing

The AI understands context:

You: "Add eggs, milk, and bread to shopping" Bot: "Added 3 tasks to Shopping list:

  • Eggs
  • Milk
  • Bread āœ“"

You: "Schedule a meeting with Sarah next Tuesday at 3" Bot: "Added: 'Meeting with Sarah' scheduled for Tuesday, Feb 4 at 15:00 āœ“"

Recurring Tasks

You: "Add 'Weekly review' every Friday at 4pm" Bot: "Added recurring task: 'Weekly review' every Friday at 16:00 āœ“"

Labels and Filters

You: "Show all tasks tagged @urgent" Bot: "Urgent Tasks (3):

  1. Submit tax forms (Due: Tomorrow)
  2. Fix production bug (Due: Today)
  3. Respond to client (No date)"

Productivity Stats

You: "How productive was I this week?" Bot: "šŸ“Š Weekly Productivity Report:

Tasks Completed: 23 Tasks Created: 18 Completion Rate: 92%

By Project:

  • Work: 12 completed
  • Personal: 8 completed
  • Shopping: 3 completed

Best Day: Wednesday (8 tasks) Karma Points: +45"

Automation Ideas

Morning Briefing

TODOIST_MORNING_BRIEFING=true
BRIEFING_TIME=07:30

Bot sends at 7:30 AM: "ā˜€ļø Good morning! Here's your day:

5 tasks for today:

  • [ ] Standup meeting @ 10:00
  • [ ] Review PR @ 11:00
  • [ ] Lunch with team @ 12:30
  • [ ] Client demo @ 15:00
  • [ ] Gym @ 18:00

Overdue (1):

  • [ ] Send invoice (yesterday)

You've got this! šŸ’Ŗ"

Evening Review

TODOIST_EVENING_REVIEW=true
REVIEW_TIME=21:00

Bot sends at 9 PM: "šŸŒ™ Daily wrap-up:

Completed today: 6 tasks Moved to tomorrow: 2 tasks Added today: 3 tasks

Tomorrow's Preview: 4 tasks scheduled

Anything to add before tomorrow?"

Automatic Project Creation

Triggered by external events:

// When new MacStories Weekly is published
// Create project for next issue
async function createNextIssue() {
  const issueNumber = await getCurrentIssue() + 1;

  await todoist.addProject({
    name: `MacStories Weekly #${issueNumber}`,
    parent_id: process.env.NEWSLETTER_PROJECT_ID
  });

  // Add standard tasks
  await todoist.addTasks([
    { content: 'Write main article', project: newProject.id },
    { content: 'Curate app picks', project: newProject.id },
    { content: 'Record audio version', project: newProject.id }
  ]);
}

Integration Patterns

Voice Task Entry

Combine with voice features:

šŸŽ¤ "Add call plumber to home tasks for tomorrow" šŸŽ¤ "Done! Added 'Call plumber' to Home, due tomorrow."

Cross-Integration

Combine Todoist with other services:

You: "Create a task from my last email from John" Bot: "Created task: 'Reply to John re: Project Update' with email link attached āœ“"

You: "Add tasks from today's meeting notes" Bot: "Found 4 action items in your meeting notes. Added:

  1. Send proposal to client
  2. Schedule follow-up call
  3. Review contract terms
  4. Update project timeline"

Replace Zapier

Instead of paying for Zapier automations:

// Cron job on your VPS - runs every hour
async function checkRSSAndCreateTasks() {
  const newItems = await checkRSSFeed('your-feed-url');

  for (const item of newItems) {
    await todoist.addTask({
      content: `Review: ${item.title}`,
      project_id: process.env.READING_PROJECT,
      labels: ['@reading']
    });
  }
}

Savings: £15-50/month in Zapier fees

Configuration

Default Project

TODOIST_DEFAULT_PROJECT=Inbox
TODOIST_DEFAULT_PRIORITY=2

Project Shortcuts

TODOIST_PROJECT_ALIASES="
work=2294567890
home=2294567891
shopping=2294567892
"

You: "Add meeting prep to work" Bot: Uses the correct project ID automatically.

Natural Language Settings

# Date parsing
TODOIST_DATE_FORMAT=European  # DD/MM format
TODOIST_WEEK_START=Monday
TODOIST_DEFAULT_TIME=09:00

Troubleshooting

Tasks not adding

# Check API connection
curl -X GET "https://api.todoist.com/rest/v2/tasks" \
  -H "Authorization: Bearer YOUR_TOKEN"

Wrong project/label

  • Check project and label names match exactly
  • Use project IDs for reliability
  • Verify API token permissions

Duplicates created

  • Implement deduplication check
  • Use task IDs for updates
  • Check for webhook duplicates

Security

Token Permissions

Todoist API tokens have full access. Protect them:

# Store securely
TODOIST_API_KEY=your-token

# Never log
LOG_API_KEYS=false

User Isolation

For multi-user setups, each user needs their own token.

Related Guides

Need Help?

Todoist integration with natural language understanding requires proper configuration. Our setup service includes full Todoist integration with automation setup.

Need a VPS for Your Bot?

We recommend Hostinger KVM 2 VPS - reliable, fast, and perfect for AI chatbots. Get started with our recommended setup.

Get Hostinger VPS

Need Help With Setup?

Got your VPS? Let us handle the technical work. Professional setup and maintenance for OpenClaw (formerly Clawd.bot).