A project manager I worked with had a SharePoint task list with a Due Date column, and she was tired of chasing people by email. She wanted the people assigned to each task to get a heads-up 14 days and 7 days before it was due, a reminder on the day, and a nudge when it was 7 and 14 days overdue.
In this tutorial, I’ll show you how to build that with one scheduled Power Automate flow. It runs every morning, checks each task’s due date, and sends the right reminder to everyone assigned to it, with a link to the task and the due date highlighted in color.
Quick answer: Create a Scheduled cloud flow that runs daily. Get today’s date with convertTimeZone(), use Get items to read the SharePoint list, and in an Apply to each loop compare each task’s date columns (due date, 7 and 14 days before, 7 and 14 days after) with today. When a date matches, send a Send an email (V2) reminder to each person in Assigned To.
What the flow sends
Each morning, the flow looks for tasks where one of these dates is today, and sends the matching reminder:
| When | Reminder | Date color in the email |
|---|---|---|
| 14 days before the due date | The task is due in 14 days | Green |
| 7 days before the due date | The task is due in 7 days | Green |
| On the due date | The task is due today | Orange |
| 7 days after the due date | The task is 7 days overdue | Red |
| 14 days after the due date | The task is 14 days overdue | Red |
You can change the number of days to anything you like, such as 3 or 30, using the same steps.
Set up the SharePoint list
My example uses a list called TaskList with these columns:
| Column | Type |
|---|---|
| Title (renamed TaskName) | Single line of text |
| AssignedTo | Person or Group, with multiple selections allowed |
| TaskPriority | Choice |
| TaskStatus | Choice |
| DueDate | Date and time (date only) |

Add four calculated date columns
To make the comparisons in the flow simple, add four calculated columns that work out the reminder dates from the due date. In the list, select Settings > List settings > Create column, name the column, and choose Calculated (calculation based on other columns).
For DueDateBefore7days, enter this formula and set the data type returned to Date and Time with the Date only format:
=DueDate-7

Create the other three the same way:
| Column | Formula |
|---|---|
| DueDateBefore14days | =DueDate-14 |
| DueDateAfter7days | =DueDate+7 |
| DueDateAfter14days | =DueDate+14 |
The list now shows all five dates for every task:

If calculated columns are new to you, see how to calculate dates in SharePoint calculated columns.
Create the scheduled flow
In Power Automate, select Create > Scheduled cloud flow. Give it a name, set the start date and time, and set Repeat every to 1 Day. I run mine every morning at 10:00 AM.

Then open the Recurrence trigger and set the Time zone, for example (UTC-05:00) Eastern Time. Without it, the schedule runs in UTC, which can be the wrong day for your users.
Get today’s date in your time zone
Add a Compose action, rename it Today, and enter this expression:
convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time', 'yyyy-MM-dd')

My first version of this flow used utcNow() on its own. In the US, a flow that runs in the evening is already on the next day in UTC, so every reminder arrived a day early. Converting to your time zone and formatting the date as yyyy-MM-dd avoids that. Replace Eastern Standard Time with your own time zone name.
Get the tasks
Add the SharePoint Get items action and select your site address and list name.

Get items returns only the first 100 items by default. If your list has more tasks, open the action’s Settings, turn on Pagination, and set a threshold such as 5,000. See how to get more than 100 items from a SharePoint list for the details.
Add two variables
Add two Initialize variable actions, both of type String with no value: LinktoItem for a clickable link to the task, and DueDate for the colored due date in the email.


Check each task’s dates
Add an Apply to each loop and select value from the Get items action. Inside the loop, you’ll add one Condition for each reminder.

Case 1: the task is due today
Add a Condition. On the left, enter this expression, choose is equal to, and on the right select the output of Today:
formatDateTime(items('Apply_to_each')?['DueDate'], 'yyyy-MM-dd')
In the True branch:
- Add a Set variable action for LinktoItem with this value, which builds a link to the task:
<a href='@{items('Apply_to_each')?['{Link}']}'>@{items('Apply_to_each')?['Title']}</a> - Add a Set variable action for DueDate with the due date wrapped in a colored span. For the due-today reminder, use orange:
<span style="background-color:Orange;">@{formatDateTime(items('Apply_to_each')?['DueDate'], 'MM/dd/yyyy')}</span> - Add an Apply to each over AssignedTo, because the column allows several people, and inside it add Send an email (V2). Set To to the person’s Email, and use the two variables in the subject and body.

Cases 2 to 5: before and after the due date
Add four more Conditions, still inside the main loop, the same way. Only the column you compare and the color change:
| Case | Compare this column with Today | Color | Subject idea |
|---|---|---|---|
| 2 | DueDateBefore7days | Green (#77ff33) | Task due in 7 days |
| 3 | DueDateBefore14days | Green (#77ff33) | Task due in 14 days |
| 4 | DueDateAfter7days | Red (#ff6666) | Task 7 days overdue |
| 5 | DueDateAfter14days | Red (#ff6666) | Task 14 days overdue |
For example, the left side of the Case 2 condition is:
formatDateTime(items('Apply_to_each')?['DueDateBefore7days'], 'yyyy-MM-dd')




Here’s the whole flow:

Test the flow
To test it without waiting, create five tasks whose dates match today. If today is October 5, 2026, set one task’s due date to October 5, one to October 12 (7 days before is today), one to October 19, one to September 28 (7 days after is today), and one to September 21.
Select Test > Manually > Test. Each person assigned to a task gets the matching reminder in Outlook: “due today” with an orange date, “due in 7 days” and “due in 14 days” in green, and the two overdue reminders in red. A task with two people assigned sends one email to each of them.
A faster option for large lists
The loop above checks every task every day. That’s fine for a few hundred tasks, but for big lists it’s faster to let SharePoint find the matching tasks. Use one Get items action per reminder, with a Filter Query like this one for “due in 7 days”:
DueDate eq '@{formatDateTime(addDays(convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time'), 7), 'yyyy-MM-dd')}'
Change the 7 to 14, 0, -7 or -14 for the other reminders, and you no longer need the calculated columns. If the filter query is new to you, see how to use the Get items filter query.
Tips
- Skip completed tasks: add
TaskStatus ne 'Completed'to a filter query, or a Condition on TaskStatus before the reminders. - Use a shared mailbox or Send an email from a shared mailbox (V2) so reminders don’t come from your personal address.
- For a single summary email per person instead of one email per task, see how to send a monthly due date reminder email.
- For approvals that are waiting on someone, see how to send approval reminders in Power Automate.
Download the complete flow
If you’d like to skip the build, the ready-made 7 and 14 day reminder flow is available with our other Power Platform and SPFx solutions, so you can import it into your environment and adjust it.
These Power Automate tutorials go well with this flow:
- How to Send Monthly Email Reminder for a Due Date Using Power Automate?
- Power Automate Approval Reminder: 3 Ways to Remind Approvers
- How to Use Power Automate Get Items Filter Query + 8 Examples
- How to Use the Send an Email (V2) Action in Power Automate (With Examples)
- How to Get Current Date in Power Automate + 7 Examples
- How to Get More Than 100 Items with Get Items in Power Automate (and Past 5,000)
Frequently Asked Questions
How do I send a reminder email before a due date in Power Automate?
Create a scheduled cloud flow that runs daily, get today’s date, and compare it with the due date minus the number of days you want. When they match, send the email. Microsoft explains scheduled flows in its guide to running flows on a schedule.
Why do my reminders arrive a day early or late?
The flow uses UTC by default. Set the time zone in the Recurrence trigger and convert today’s date with convertTimeZone() before you compare it with the due date.
Can I send the reminder to everyone in a multi-person column?
Yes. Add an Apply to each over the Person column and send one email to each person’s Email value inside it.
Do I need calculated columns for the reminder dates?
No. You can compare addDays() on today’s date with the due date instead, or use a Get items filter query for each reminder.

I have worked with Microsoft technologies for more than 18 years, including SharePoint, Microsoft 365 and the Power Platform (Power Apps, Power Automate and Power BI), at companies like HP, TCS and KPIT. I started EnjoySharePoint in 2011 to share the solutions I build in real projects with readers in the United States, Canada, the United Kingdom, Australia, New Zealand and beyond. Microsoft has recognized this work with the Microsoft MVP award 13 times since 2014.
Hi thanks for the detailed tutorial. i followed the steps- flow is running successfully but the emailis not triggered