Todoist has a whole array of templates available. However, they are limited in their configurability. Spreadsheets can provide a far more robust and flexible set of templates! The Sheet Importer for Todoist is designed to treat formatted Google spreadsheets as powerful Todoist "templates" that can be imported to suit needs of individual users and complex organizations alike.
Visit the Sheet Importer for Todoist page in the Google Workspace Marketplace
Select Install
Login to your Google account (or choose your Google account from the provided list), if needed
On the Sign in to Sheet Importer for Todoist screen, select Continue
On the next screen ("Sheet Importer for Todoist wants to access your Google Account"), select Allow
These permissions are necessary for the Importer to import your spreadsheets into Todoist.
Select Done
In a new Google Spreadsheet, select Extensions > Sheet Importer for Todoist > Create new sheet
This will create two new sheets: Importer Config and New Sheet
The default (and empty) Sheet1 sheet can be deleted if you'd like
Select the Importer Config sheet
Get a Todoist API Token by following the steps at that link
Past your Todoist API Token into the Value column (next to Todoist API Token)
Optional: Set a default project ID for this spreadsheet
If you don't set a default project ID, you can set one on individual sheets OR tasks will default to your Inbox project.
If you haven't already created the project you'd like in Todoist, do so now.
Select Extensions > Sheet Importer for Todoist > Tools > View project list
Find the project you'd like in the list, and copy that ID into the Value column (next to Todoist Project ID)
You can create as many importable sheets as you'd like! To do so, either:
Duplicate an existing spreadsheet, which you can then clear our / modify as you see fit, -or-
Select Extensions > Sheet Importer for Todoist > Create new sheet, which will create a new sheet with some sample tasks
An importable sheet is made up of two sections: the header section and the task section.
The primary purpose of the Header section is to specify configuration before importing. For example, rather than importing a task called, Set up the new employee’s payroll, you could change a value in the header such that you'd import a task called, Set up Joe Smith's payroll, which will make it much easier to identify context later on, especially when handling multiple such tasks at once.
The header section:
is located at the top of a template, beginning with the frozen header row (row 1)
ends with one or more empty rows (the thin darker row by default)
may contain any number of rows, so long as rows with values are consecutive (remember: a blank row indicates the end of the header section!)
has no specific format. (In fact, the Importer completely ignores these rows while importing.)
This means that there is great flexibility in how you use the space.
But since some convention is helpful, here is a suggested format:
Provide a "key" (or "name") for each header row in the first Tasks column.
Provide its "value" in the Description column. (One useful exception might be to utilize the dropdown in Assign to.)
For values that are calculated automatically and need not be changed (e.g. it uses a TODAY() function), change it to gray.
The purpose of the Task section is to define tasks that should be imported into Todoist. Each row can have values in the following columns:
Priority
Equivalent to Todoist's Priority value: 1, 2, 3, or 4 (default)
This column can also have special values (e.g. creating sections or skipping rows)
Date
Deadline
Equivalent to Todoist's Deadline value (Todoist premium users only; without a premium/paid plan, using this column will produce error messages.)
Note: at present, only date formats are accepted (e.g. 2025-09-30, 9/30/2025, Sept 30 are all okay, but "next monday" is not)
Assign to
See Todoist's documentation on Assigning a task
The values of the dropdown are set based on the Importer Config sheet's Users section
If blank, the task is unassigned. To assign a person, the selected person must have the project shared with them already (via Todoist's app)
Tasks
First-level tasks should be placed in the leftmost Tasks column.
To create subtasks beneath it, indent the next tasks one more column.
To create subtasks beneath that level, indent the next tasks one more column.
Don't skip levels "on the way down". However, you can skip levels "going back up".
Todoist supports up to five levels (hence the Importer having five levels)
Note that only the leftmost column containing text will be used.
Can use markdown formatting
Description
Equivalent to Todoist's Description value
Can use markdown formatting
Additional notes:
The Importer will import whatever text is displayed. That is, it doesn’t matter whether a spreadsheet cell contains a formula or reference or number or date, etc. What you see is what Todoist gets!
Blank rows are ignored.
Columns can be rearranged if you'd like, so long as the five columns for Tasks remain together.
If formatting in a sheet gets "messed up", select Extensions > Sheet Importer for Todoist > Tools > Format selected sheet.
Don't like the default color scheme for your sheets? No worries! Just set some new colors:
Foreground Color 1: #000000 (black) if not otherwise set
Background Color 1
Background Color 2: calculated from Background Color 1 if not otherwise set
There are several ways to change these values:
Set sheet-specific configuration (e.g. # Background Color 1); for the current sheet
Set cell A1's ("Priority") background & foreground colors (this will set Background Color 1 & Foreground Color 1); for the current sheet
Set Importer Config settings (e.g. Background Color 1); default for all sheets - individual sheets can be overridden using either method above
After setting the values using one of the methods above, select Extensions > Sheet Importer for Todoist > Tools > Format selected sheet.