Migrating from Todoist
Task Fiend includes a one-time import command that pulls your active tasks, projects, labels, comments, and attachments from Todoist.
Before you start
You'll need:
- Your Todoist API token — find it at Todoist Settings → Integrations → Developer
- A Task Fiend user account and API key for the account that will own the imported data:
bash php artisan user:create your@email.com "Your Name" password123 php artisan apikey:create your@email.comNote the API key — it's only shown once.
Running the import
php artisan todoist:import --taskfiend-api-key=tfk_xxxxx --todoist-api-key=YOUR_TODOIST_KEY
The Todoist key can also be set as an environment variable instead of a CLI option:
export TODOIST_KEY=YOUR_TODOIST_KEY
php artisan todoist:import --taskfiend-api-key=tfk_xxxxx
Progress is printed to the console as it runs. Warnings and errors are written to Laravel's log files. A summary is shown when it finishes.
What gets imported
| Todoist | Task Fiend | Notes |
|---|---|---|
| Projects | Projects | Flat; nested projects become top-level |
| Labels | Tags | Created if they don't exist; reused if they do |
| Active tasks | Tasks | Assigned to the importing user |
| Subtasks | Tasks | Imported after parent tasks |
| Comments | Comments | Attributed to the importing user |
| Comment attachments | Attachments | Downloaded and re-uploaded |
| Recurring tasks | Recurring tasks | Pattern converted; logged if unrecognizable |
| Due dates and times | Dates and times | Pacific timezone assumed |
What doesn't get imported
- Completed tasks
- Todoist priority levels (no equivalent)
- Sections (no equivalent)
- Collaborator information (everything is assigned to the importing user)
- Task attachments (Todoist's API doesn't expose these separately from comments)
Duplicate handling
Running the import more than once is safe. Items that already exist are skipped, not overwritten:
- Projects: skipped if a project with the same name already exists
- Tasks: skipped if a task with the same name exists in the same project
- Tags: existing tags are reused silently
After the import
Check in the Task Fiend UI that:
- Projects were created
- Tasks are in the right projects
- Tags are applied
- Comments are visible
- Attachments are downloadable
- Recurrence patterns are working as expected
Any recurrence patterns that couldn't be converted are logged as warnings — search the logs for those task names and set the pattern manually.
Known limitations
- Subprojects are flattened to top-level projects (Task Fiend doesn't support nested projects)
- Some complex Todoist recurrence patterns may not convert cleanly — these are imported without recurrence and logged
- All imported content is owned by the user identified by the API key; collaborator relationships are not preserved