+ Add Question

Shopping lists


I'm trying to make a shopping list using todoist.

The main functions are:
- Make list of items (would like a master list with nesting structure that I can instantiate)
- Add item to list after instantiating it
- Mark item as something I need to buy
- Mark item as something I have bought
- Organize the unbought items so I can buy them some other time
- Clean up the bought items so the list is ready for the next time
- Don't mess up the master list (could happen if items that I mark are removed from the master list)

Can you advise how this can be done conveniently using:
- todoist on the web for setting up the master list
- todoist on the iPhone for marking items to buy and marking items already bought
- todoist on either platform for resetting the list for the next trip

All responses

Brendon Wadey  staff
Replied on Mar 31, 2014 - 19:27 UTC

Hi Bruce,

It can be much similar than that. Just create a new project, "Groceries" or "Shopping" and add the items you need to that list. Don't add dates or labels or anything.

When you purchase something, check it off, it's then gone.


Bruce Esrig  premium
Replied on Mar 31, 2014 - 19:42 UTC

So far so good, but I'm a little worried about items that disappear when I have bought them because then I might not remember to add them the next time.

I have an existing project that has all the items organized into groups that more or less reflect how they are arranged in the store. If I make a new project, "Next Shopping Trip" ... then ... will there be a good way to work from my existing project to add the items I need to the new project?

I see how to move items to a new project, but, at least without Premium, I might not be able to get a fresh copy of each item without destroying the original list.

Can I do it without Premium? Can I do it with Premium?

Brendon Wadey  staff
Replied on Mar 31, 2014 - 19:49 UTC


You can add tasks as recurring instead, but then it has a due date. You can use the Templates feature, but this is only possible in the Premium version.

Though, I myself re-add items whenever they are needed, even if it was something I had before, at least for shopping related items. As you don't always need the same items?


Bruce Esrig  premium
Replied on Mar 31, 2014 - 20:09 UTC

We're creatures of habit, but a little forgetful, so having something to refer to makes a big difference for us.

Could you say more about how this could be done with Templates?

Brendon Wadey  staff
Replied on Mar 31, 2014 - 20:36 UTC


Well, in terms of "forgetfulness" then unless you add a task as a recurring one, such as "everyday" there aren't many options. As there is no auto re-add of a task, unless recurring, but even then, you may forget a recurring task. You can add reminders, but not reminders to re-add a task :) I hope that makes it clear.

The template feature exports all tasks from your project, and then can be added to a new project (or any project). Wrench icon in the top right within each project can show you this feature. It's manual though.


Bruce Esrig  premium
Replied on Mar 31, 2014 - 21:36 UTC

Thank you, Brendon,

It's good to know that when you import a template, it adds the tasks in the template. The thing I find easy to forget is what subset of my usual items I would like to get this time, and a template could help with that.

Looking at it another way, though, I'm starting to think that my intended use of tasks is a bit backwards. I want to check an item from a larger list to indicate that I need it, and uncheck it to indicate that I got it. But as completed tasks, the checked items would disappear from the list on my phone, when what I want is to *show* each checked item until I get the item. In that sense, tasks work in the opposite way from what I wanted for the items on a shopping list.

As a fallback, I might end up using todoist only for things that are really task-like, and use something else for lists of items.

I appreciate the support.

Best wishes,


David Trey  staff
Replied on Mar 31, 2014 - 22:01 UTC

Hello Bruce,

Have you tried using sub-tasks? Create a parent task called "Shopping" and indent tasks below it, each representing an item. They will always stay checked on the list until you check off the entire parent task.

Combine this with templates and you can import the shopping list with sub-tasks whenever you need it :-)

Best regards,

Bruce Esrig  premium
Replied on Apr 01, 2014 - 07:19 UTC

That's a really good property of sub-tasks. I was using them, but I didn't realize they would work that way.

I upgraded, and can use templates now. I have lots of comments!
- The pen interferes with the wrench in the task actions icon. Would it be enough to just use a wrench?
- There's an import/export templates video, but it's only available after you find the function. Could it be pulled up to top level in the help?
- Saving a template naturally doesn't save the states of the tasks, so I can't mark everything completed, import the shopping list items, and then uncheck the ones I want. I have to explicitly dismiss all the items I don't want each time I import the template.

Let me see if I can make this observation into a suggestion under Votebox.

Best wishes,


Barbie Smith  premium
Replied on Mar 24, 2015 - 22:31 UTC

Here's how I've been using a shopping list project: I add items one time to the list. Then I add labels to each item for the store(s) where I can find this item. If i'm going to xx store, I filter for all the items for that store. After I've bought something I mark off the task. It works beautiful EXCEPT for the problem of completed tasks disappearing. I can view completed tasks. But since the task list is so long, I have to click "show completed items" a number of times. Then I need to Ctrl-F to find the item I need, to uncheck it. Very inconvenient.

So... I set up a new shopping project with a subfolder for each store. I think this will work. The only downside is that I have to enter items multiple times. For example, "milk" would be added to 4 grocery store subfolders. I'll try this... I think it will work for me.

Still looking for that perfect solution!

Justin Leach  premium
Replied on May 02, 2015 - 18:20 UTC

Barbie - I've just been setting up something similar and was wanting to see if I missed anything which is what brought me here.

I was approaching this the same way as you but then realized that I can buy some things at multiple stores, such as "milk". So I decided to change my subprojects to categories of items, such as "Groceries" or "Household". That way I don't have to create an list item in multiple places.

I've considered using tags for the various stores I might buy something in but we'll see how this works first. Just trying to think of easy ways to filter the lists down when I'm in a particular store.

Don Conrad  premium
Replied on Jul 28, 2015 - 16:42 UTC

I just added it so I need to test but - I just added a single task at the beginning of my grocery list that just says Grocery Shopping List that always remains and then added multiple location-based alerts to that item for all of the nearby grocery stores. That way (hopefully) whenever I'm at one, I get the entire list.

Mark  premium
Replied on Aug 08, 2015 - 01:36 UTC

This is my first day with Todoist, so this might be terrible:

I created a project called "Shopping List." I added each item as a task with a label for each store where I buy that item (@wholefoods, @walmart...). I set the items to repeat "after 1 day" with a priority of 4 (white).

Next, I created a filter for each store like this:
"today & p:Shopping List & !p4 & @wholefoods"
So that the filter will display only items in the shopping list that are available in that store and have a priority set higher than 4.

When I need an item, I will set the priority to 3 (or anything above 4). At the store, I view the filter. When I get an item, I can either set its priority back to 4 or mark it complete. I'm not sure which is better. Either way, it should disappear from the filter.

The next day, all the items should be back and I can manually reset the priorities. It would be nice if they could be reset automatically.

Does that sound like it would work?

David Trey  staff
Replied on Aug 08, 2015 - 11:00 UTC

Hello Mark,

Yes, that could work, but you should always complete the tasks related to the items you get to that tomorrow they will be due "today" and also postpone all the tasks you didn't get/complete otherwise they would stay overdue (due yesterday) :-)


Mark  premium
Replied on Aug 08, 2015 - 12:36 UTC

I'm not sure if I understand. I've been using due dates more like "postpone until" dates. I don't really have any use for due dates. Will that be a problem for me?

What if I configured my filter like this instead?

"(today | overdue) & p:Shopping List & !p4 & @wholefoods"

David Trey  staff
Replied on Aug 08, 2015 - 12:55 UTC


This would also work, but your tasks may display split by their due date.

That said, if you don't care for the actual dates of these tasks, you may want to try using task templates. Prepare a full shopping list in a project and then export it as a template. Once you're done shopping, you can delete the whole task structure and them import it from the template the next day :-) This way you also wouldn't even need a filter for it, only the project view.

Please refer to this video to see how it works: https://www.youtube.com/watch?v=_Rl_CLGY_3o


Mark  premium
Replied on Aug 08, 2015 - 17:04 UTC

BTW, what's the difference between "after 1 day" and "every day?"

David Trey  staff
Replied on Aug 08, 2015 - 17:19 UTC


In this particular case, there's no difference. Normally, the "after" date will behave differently from "every" so that it will always move the task to the next date based on the day on which you complete it, for example:

- A task due "every 5 days" that's overdue by 2 days will move 3 days ahead upon completion to preserve its "every 5 days" cycle.

- A task due "after 5 days" that's overdue by 2 days will move 5 days ahead upon completion as it will ignore the cycle and just move forward based on the date of completion.

However, if the cycle is daily "every day" or "after 1 day", it won't make a difference as the next date after the completion is also the correct day according to the task's pattern ;-)


khushu.sangha  premium
Replied on Sep 30, 2015 - 10:15 UTC

then what is the difference between every! and the after feature?

Omar Samuels  staff
Replied on Sep 30, 2015 - 12:25 UTC


Here is some information on the "every!" and other date settings that you may find userful -