# Send a reminder before a due date in a SharePoint list

> For the full documentation index, see https://250highstreet.com/llms.txt

> Build a Power Automate flow that runs every day, finds SharePoint list items due soon, and emails the owner. Plain steps, with the limits to know.

Short answer: build a scheduled flow that runs once a day, gets list items where Status is not Done, and emails the owner when the due date is within the next 3 days. Use Recurrence, Get items, a Condition on the due date, and Send an email (V2). The flow does the remembering, so people do not have to.

Exact names may differ on your screen.

## Before you start

You need three things in place first.

- A SharePoint list with a Date column for the due date, a Person column for the owner, and a Status column (a Choice column with values such as Open and Done).
- Access to Power Automate with a Microsoft 365 sign-in. Ask your admin if you cannot open it.
- A decision on the rule. One way to start: send a reminder when an item is due in the next 3 days and is not done.

A note on the due date. SharePoint blocks \[Today\] in calculated column formulas, so you cannot make a column in the list that counts days left from today's date. That is one reason to do this in a flow. The flow can read today's date each time it runs.

If you are still on a spreadsheet, see "[Replace a spreadsheet tracker with a SharePoint list](/guides/replace-spreadsheet-with-sharepoint-list/)" first. If you want alerts for items that are already late, see "[Late tasks nobody notices](/guides/late-tasks-nobody-notices/)". This page is about the warning that comes before the due date.

## What the flow will do

In plain words:

1.  Wake up once a day at a set time.
2.  Get items from your list that are not done.
3.  For each item, check if the due date is today or within the next few days.
4.  If yes, send an email to the owner.

Microsoft describes this pattern on its Apply to each page: a flow can start on a schedule, such as once per day, and use a loop action called Apply to each to process a list of items. For example, it can work through the items of a SharePoint list.

## Step 1. Create the scheduled flow

Microsoft's page on running a cloud flow on a schedule says you can run a flow once a day, once an hour, once a minute, on a date you set, or after a number of days, hours or minutes.

1.  Sign in to Power Automate.
2.  Select My flows, then the Cloud flows tab.
3.  Select Create from blank. A new flow opens with a single Add a trigger node.
4.  Select Add a trigger and search for Recurrence. Select Recurrence.
5.  Set Interval to 1 and Frequency to Day. Microsoft's example for a weekly flow is Interval 1 and Frequency Week, so a daily flow uses the same pattern with Day.
6.  In Start time, enter a date and time in the format YYYY-MM-DDTHH:MM:SSZ. Microsoft says the Z at the end means UTC time.
7.  In Time zone, pick your time zone. Microsoft says this field sets whether the Start time is local time, UTC or another zone.
8.  If you chose Day as the frequency, pick the hour and minute in the At these hours and At these minutes lists.
9.  Give the flow a name, such as "Daily due date reminder".

One way to start: pick an early morning time, so the email is waiting when people sit down. Check that you set the time zone, or the email may arrive at an odd hour.

## Step 2. Get the open items from the list

1.  Select the plus sign after the Recurrence trigger.
2.  Search for Get items and choose the SharePoint action named Get items. Microsoft describes it as an action that gets items from a SharePoint list.
3.  In Site Address, pick your SharePoint site. Microsoft's example looks like [https://contoso.sharepoint.com/sites/sitename](https://contoso.sharepoint.com/sites/sitename).
4.  In List Name, pick your list from the drop down. Microsoft says that if the list name has a period in it and you type it as a dynamic value, it causes an error. Picking the list from the drop down avoids that.
5.  Open Advanced options. Find Filter Query.

Microsoft says Get items supports a filter query written in OData, so the list server does the filtering before the flow sees the items. Microsoft's examples use this pattern: the column name, then an operator, then the value in single quotes. For example:

- Location eq 'Midwest' and Status eq 'Approved'

Microsoft lists these operators: lt (less than), le (less than or equals), gt (greater than), ge (greater than or equals), eq (equals) and ne (not equal).

So to keep done items out, one way to start is to use your own column name and value in the same pattern, with ne. If your Status column is named Status and the finished value is Done, that is: Status ne 'Done'. Use the internal column name. Microsoft says spaces in a column name are replaced with \_x0020\_ (the 0 is a zero), so a column called "Due Date" is written Due_x0020_Date.

This guide does the date test in Step 3 with a Condition, not in the filter, because a Condition is easier to see, test and fix. A faster option for a big list is in the section on filtering the date in Get items, further down.

Two limits from Microsoft's Get items page:

- The default item limit is 100. You can raise it up to 5,000 with the Top Count setting in Advanced options.
- If you go beyond 5,000 items, Power Automate fails and shows an error.

If your list has more than 100 open items, raise Top Count, or filter more tightly. For a list over 5,000 items, Microsoft says to turn on Pagination in the Get items action settings.

## Step 3. Check which items are due soon

When you use Get items, the result is a list of items. Microsoft says the Apply to each action needs a list like this. The designer can add Apply to each for you when you pick a field from Get items. If it does not, add it yourself.

1.  After Get items, select Add an action and search for Apply to each.

2.  In the box for the list to loop over, pick value from the dynamic content of Get items.

3.  Inside the loop, add a Condition. Microsoft's Condition page shows it as three boxes: a value on the left, an operator in the middle and a value on the right. It has an If yes side and an If no side.

4.  Left box: open the expression editor and wrap the Due date so both sides are plain dates: formatDateTime(, then pick Due date from the dynamic content, then , 'yyyy-MM-dd'). Our advice, not a Microsoft rule: SharePoint returns the due date with a time, so without this an item due on the last day of the window can fail the test.

5.  Middle box: pick is less than or equal to.

6.  Right box: the date that is a few days from now. Here you need an expression. Microsoft's function reference gives these:

    - utcNow returns the current timestamp as a string.
    - addDays has the form addDays('\<timestamp\>', \<days\>). It adds a positive or negative number of days to a timestamp. Microsoft's example is addDays('2018-03-15T00:00:00Z', 10), which returns a date 10 days later.
    - formatDateTime has the form formatDateTime('\<timestamp\>', '\<format\>'). Microsoft's example formats a date with the pattern 'yyyy-MM-ddTHH:mm:ss'.

    Select the right box, open the expression editor and enter: addDays(utcNow(), 3, 'yyyy-MM-dd'). This means today plus 3 days, written as a date. The exact names may differ.

7.  Add a second test with the Add button on the Condition card. Microsoft says you can build complex conditions this way. The second test is: the due date is greater than or equal to today. This keeps late items out of this flow, because those belong in a separate late alert. For the right box of the second test, enter: formatDateTime(utcNow(), 'yyyy-MM-dd'). Use the same formatted Due date in the left box.

The date test is where mistakes happen. A due date column that holds only a date and a timestamp that holds a time can compare in surprising ways, and time zones add to it. Test with a few rows set to yesterday, today, 3 days out and 5 days out, and read the results. Both expressions use UTC time, so an item can shift by a day near midnight. Check each row in the test run in Step 5.

## Step 4. Send the email

1.  On the If yes side, select Add an action.
2.  Search for send email and select Send an email (V2), from Office 365 Outlook. Microsoft uses this same action in its beginner flow page.
3.  In To, add the owner. If your Person column offers an email address in the dynamic content list, pick it. The exact names may differ.
4.  In Subject, type fixed words and add the item Title from the dynamic content. Example: "Due soon:" then the Title.
5.  In Body, add the due date and a link to the item or the list. Keep it to two or three lines. Say what the item is, when it is due, and what to do.

Microsoft's page says Send an email (V2) lets you format the email, with bold, italic, underline, lists and links.

Two facts from Microsoft's Office 365 Outlook connector page:

- Each email counts as one API call per connection, even if there is more than one recipient.
- If the action gets a 504 timeout response and retries, Microsoft says duplicate emails are possible.

Save the flow.

## Step 5. Test it before you trust it

1.  Add four test rows to the list, clearly marked as tests: one due yesterday, one due in 2 days, one due in exactly 3 days and one due in 10 days. Use your own email as the owner.
2.  In My flows, select the flow and run it. Microsoft's Apply to each page shows the Run icon next to the flow name, then Run flow, then Done.
3.  Open the run to see the results. Microsoft says the run history is on the flow's Details page, and that you can select a run to see the inputs and outputs of each step.
4.  Check that only the 2-day and 3-day rows sent an email. If the wrong rows were picked, fix the Condition and run again.
5.  Delete the test rows.

To pause the flow later, Microsoft says to select the three dots next to it on My flows and choose Turn off. Turn on resumes it.

## Send each reminder only once

Our advice, not a Microsoft rule: a daily flow matches the same item on each of the days inside the window, so add a Yes/No column named Reminder sent to the list and set its default value to No in the column settings.

1.  In the Condition from Step 3, add a third test: Reminder sent is not equal to true (enter true as an expression). Rows added before the column existed may have no value, and this test still lets them through once.
2.  After Send an email (V2), add the SharePoint action Update item. Microsoft's connector page lists Update item as an action that updates an item in a SharePoint list.
3.  In Update item, pick the same site and list, enter the item ID, and set Reminder sent to Yes.
4.  Test with one row and confirm the box is ticked after the run.

Because the flow is scheduled and not triggered by item changes, this update does not start the flow again.

## Filter the date in Get items (faster option for a big list)

Our advice, not a Microsoft rule: put the date test in the Get items filter, so SharePoint sends back only the items that match. In Filter Query, type: Status ne 'Done' and Due_x0020_Date lt ' then insert the expression addDays(utcNow(), 4, 'yyyy-MM-dd') from the expression editor, then type a closing single quote. Use lt with 4 days, not le with 3: a plain date in the filter means midnight, so le would leave out items due on day 3. Keep the Condition for the lower bound, so late items stay out. Run the Step 5 test rows before you trust it. The 5,000 item limit above still applies.

## Variants: Excel and expiry dates

Expiry date. The same flow works for an expiry date. Use your expiry column in place of the due date, and change the message to say what expires.

Excel. If the dates live in an Excel file, use the Excel Online (Business) action List rows present in a table in place of Get items. Microsoft says the connector supports files in OneDrive for Business and SharePoint sites. Microsoft's connector page lists these limits: the filter supports only eq, ne, contains, startswith and endswith, and the action returns up to 256 rows by default, with pagination needed for more. Put the dates in an Excel table, because the action reads rows from a table. The action also has a DateTime Format setting; set it to ISO 8601. Our advice, not a Microsoft rule: without it, Excel dates can arrive as plain numbers and the date test fails. Because the filter has no less-than operator, do the date test in the Condition from Step 3.

## Keep it from becoming noise

- One email per item can pile up. If one person owns several items, they may get 10 emails a day. One way to start is to send reminders only at 3 days and 1 day before, not every day. Another is to keep the volume low and widen it later.
- Stop reminders when work is done. The Status filter in Step 2 does this.
- Do not remind about items with no owner. Make the Owner column required in the list, so every item has someone to email.
- Watch the flow. If the owner of the flow leaves your company, the flow may stop working. Name a backup person who can open it.

## Honest limits

A reminder does not make the work happen. It makes the due date hard to miss. Email can still be ignored. If people ignore the reminders, ask why. Reasons can be too many emails, items with unclear owners, or due dates that nobody believes.

Microsoft's connector pages list SharePoint, Office 365 Outlook and Excel Online (Business) as Standard connectors in Power Automate. Which plan covers them for your team is a question for your admin.

## When to get help

You can build all of this yourself in Microsoft 365. If you would rather have it built and tested for your team, I do that. A tracker like this is a fixed price: \$5,000 for one, built in 2 weeks. See "[What a SharePoint tracker costs to build](/guides/what-a-sharepoint-tracker-costs/)". Bring one example of the problem to a free call.

I am Al Davies. I run 250 High Street LLC and build SharePoint trackers and Power Automate flows for operations teams. I work remotely. The first call is free, and I will not try to sell you anything.

See trackers I built: [Tools I built](/portfolio/)

## FAQ

### How do I send an email 3 days before a due date with Power Automate?

Use a Recurrence trigger set to once a day, Get items, a Condition that checks the due date is on or before addDays(utcNow(), 3, 'yyyy-MM-dd'), then Send an email (V2).

### How do I send an email based on a due date in a SharePoint list?

Get the list items with Get items, filter out done items with a filter query such as Status ne 'Done', test the due date in a Condition, and send the email to the Person column owner.

### How do I send a reminder email before a due date from an Excel file?

Use the Excel Online (Business) action List rows present in a table. The data must be in a table, and the date test goes in a Condition because the filter has no less-than operator. Set DateTime Format to ISO 8601 in the action.

### How do I send an email before an expiry date?

Use the same flow as the due date version, with the expiry column in the Condition and the Subject, and run it once a day.

### Will the flow send the same email twice?

A daily flow sends once per run for each matching item, so an item inside the window matches on each of those days. Add a Reminder sent column to send only once. Microsoft also notes that duplicate emails are possible if a send is retried after a timeout.

## Sources

- [Microsoft Learn, Run a cloud flow on a schedule in Power Automate](https://learn.microsoft.com/en-us/power-automate/run-scheduled-tasks)
- [Microsoft Learn, Create a cloud flow in Power Automate](https://learn.microsoft.com/en-us/power-automate/get-started-logic-flow)
- [Microsoft Learn, Use the Apply to each action to process a list of items periodically](https://learn.microsoft.com/en-us/power-automate/apply-to-each)
- [Microsoft Learn, Add a condition to a cloud flow in Power Automate](https://learn.microsoft.com/en-us/power-automate/add-condition)
- [Microsoft Learn, In-depth analysis into Get items and Get files SharePoint actions](https://learn.microsoft.com/en-us/sharepoint/dev/business-apps/power-automate/guidance/working-with-get-items-and-get-files)
- [Microsoft Learn, SharePoint connector reference](https://learn.microsoft.com/en-us/connectors/sharepointonline/)
- [Microsoft Learn, Office 365 Outlook connector reference](https://learn.microsoft.com/en-us/connectors/office365/)
- [Microsoft Learn, Workflow expression functions reference (utcNow, addDays, formatDateTime)](https://learn.microsoft.com/en-us/azure/logic-apps/workflow-definition-language-functions-reference)
- [Microsoft Learn, Excel Online (Business) connector reference](https://learn.microsoft.com/en-us/connectors/excelonlinebusiness/)

## Related guides

- [Send Power Automate emails from a shared mailbox](/guides/power-automate-send-email-from-shared-mailbox/)
- [Save Microsoft Forms answers to a SharePoint list](/guides/microsoft-forms-to-sharepoint-list/)
- [Email a SharePoint list as an Excel file every week with Power Automate](/guides/power-automate-export-sharepoint-list-to-excel-weekly/)
- [Court date tracker for a small law firm](/guides/court-date-tracker-sharepoint/)

Source: https://250highstreet.com/guides/send-reminder-before-due-date/
