Notion: two ways to automatically add a date stamp to tasks marked as done

Notion: two ways to automatically add a date stamp to tasks marked as done

May 31, 2022·Nick Gracilla
Nick Gracilla

Notion, the wildly flexible no-code platform for writing notes and building workflow tools, is often configured as a to-do list. But there’s no obvious way to check off a task as “done” and save the date it was done.

Why bother to save the date when you complete a task? You’ll need to know Date Completed to build progress reports or retrospectives. Out of the box, Notion can’t do this. But, there’s a workaround. Here are two approaches.

Option 1: Use a Date Completed field

Use a date field instead of a checkbox to mark a task as completed. Date Completed can be empty, meaning not completed, or have a timestamp of the date it was done. To mark a task as done, enter the date and time. You can also create a new Formula field Done, that adds a checkbox and makes reports easy: empty(prop("Date Completed")) ? false : true.

This works, but it’s a poor user experience. Entering a date and time isn’t fun and is counterintuitive. 

Option 2: Use Last Edited with a date override

Last Edited is a built-in field that saves the timestamp when a record is changed. Perfect! We can save Last Edited to a new formula field, Date Completed, when the user checks Doneprop("Done") ? prop("Last Edited") : fromTimestamp(toNumber("")). Note that, since the formula returns a date, we need a tricky way to say “no date” when Done isn’t checked. 

While this works for most cases, if the record is changed later, it will update Date Completed to that new edit date and time, which isn’t correct. To work around this, let’s add another date property, Date Completed Override. You’ll use this to set the correct date — override the Last Edited date — only if you edit the record later. So our Date Completed formula becomes:

prop("Done") ? if(empty(prop("Date Completed Override")), prop("Last Edited"), prop("Date Completed Override")) : fromTimestamp(toNumber(""))

That’s it: an easy checkbox to mark tasks as complete, that saves the moment and allow for editing, later. Let me know if you have questions about this approach; I’m @nickgracilla on Twitter.

Updated on