← Al Davies, 250 High Street

Power Automate Delay until stops after 30 days: how to wait longer

Short answer: a single flow run cannot wait past 30 days. Microsoft's limits page says: "After 30 days, any pending steps time out." To wait longer, stop making one run wait. Save the target date on the item, then use a flow that runs every day and acts on items whose date has arrived.

The limit, in Microsoft's words

Microsoft's page "Limits of automated, scheduled, and instant flows" lists these values in its duration table:

So a Delay until set 45 days out will not reach its date. The run times out first. The same 30 days applies to an approval that nobody answers. See "Power Automate approval timeout after 30 days".

Why a Do until loop does not fix it

A Do until loop that waits and checks again is still one run. Microsoft's table gives the loop its own limit: "Until iterations" has a default of 60 and a maximum of 5,000. That limit counts loops. The 30 day run duration still applies on top of it. A loop wrapped around a long wait runs into the 30 days, not the iteration count.

The pattern: one date column and one daily flow

Instead of holding a run open, keep the date in the list and let a short flow look at it every morning. Each run lasts seconds.

Example: a Contracts list where someone needs a reminder 90 days after the start date.

Columns to add to the list (describe them in your own list; there is nothing to download):

  1. Title, for the contract name.
  2. Start date, a Date column.
  3. Remind on, a Date column. Fill it with the start date plus 90 days. Our advice, not a Microsoft rule: set it in the list form or in a short flow with the addDays expression, so it is stored on the row.
  4. Reminder sent, a Yes/No column. Set its default value to No.

Microsoft documents addDays this way: addDays('<timestamp>', <days>, '<format>'?). Its example adds 10 days: addDays('2018-03-15T00:00:00Z', 10) returns "2018-03-25T00:00:00.0000000Z". A negative number subtracts days.

Build the daily flow

Go to https://make.powerautomate.com. Exact names may differ on your screen.

  1. Select My flows, then the Cloud flows tab, then Create from blank.
  2. Select the Add a trigger node and search for Recurrence. Select Recurrence.
  3. Set Interval to 1 and Frequency to Day. Microsoft's scheduled flow page gives the same example for a weekly flow: Interval = 1 and Frequency = Week.
  4. Open the advanced options. In the Time zone field, pick your time zone. In Start time, use the format YYYY-MM-DDTHH:MM:SSZ. Microsoft's page gives 2025-03-24T22:00:00Z as 3:00 PM Pacific time, so the trailing Z means UTC.
  5. If you chose Day, set At these hours and At these minutes to the time you want the flow to run.
  6. Add a Get items action for the SharePoint list. In the advanced options, set Filter Query so the flow returns only rows where Remind on is today or earlier and Reminder sent is No. Our advice, not a Microsoft rule: test the filter on two rows first, one due and one not. If the filter returns nothing, see "Power Automate Get items filter query returns nothing: how to fix it".
  7. In Get items, set Top Count to 5000 and turn Pagination on. Get items returns 100 rows by default. See "Power Automate Get items only returns 100 rows".
  8. Add an Apply to each over the Get items result.
  9. Inside it, add the action you want, such as Send an email (V2).
  10. Still inside the loop, add Update item and set Reminder sent to Yes.

The Reminder sent column is the guard. Without it, a flow that runs every day would email the same row every day. The flow only acts on rows where the column is No, then sets it to Yes. Update item changes the row, so if you ever move this logic into a flow that triggers on item modified, add a loop guard as well. See "Power Automate flow triggers itself in a loop".

Date format for the filter

Microsoft's date and time page shows how to turn the current UTC time into text: formatDateTime(utcNow(), 'dd-MM-yyyy') returns the date as 15-06-2009 in its example. Another example uses the pattern 'MMMM dd, yyyy, HH:mm'. For the filter, you need a year-month-day text. Our advice, not a Microsoft rule: try formatDateTime(utcNow(), 'yyyy-MM-dd') and check the result in a test run before you rely on it.

The same page says Power Automate uses UTC by default. A flow that runs near midnight can see a different date than your calendar does. See "Power Automate date shows the wrong day with formatDateTime".

When the flow does not run

A daily flow that stays quiet has a schedule or connection problem to find. See "Power Automate scheduled flow not running". To run only on weekdays, see "Power Automate recurrence on weekdays only".

Longer than the 500 day recurrence maximum

Microsoft lists 500 days as the maximum recurrence interval. If you need a gap longer than that, you do not need a recurrence that long. The daily flow compares dates, so it handles a 2 year wait the same way it handles a 60 day wait.

When a single wait is fine

If the wait is shorter than 30 days, Delay until inside one run is simpler. Our advice, not a Microsoft rule: choose the date column pattern when the gap is close to 30 days, when people may change the date, or when you want to see all pending reminders in one list view.

Checks before you turn it on

For a plain "remind me before the due date" flow, see "Send a reminder before a due date".

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". Bring one example of the problem to a free call.

Tell me what's still manual

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

FAQ

What is the maximum delay in Power Automate?

A run lasts 30 days at most. Microsoft says: "After 30 days, any pending steps time out."

Why does Delay until fail for a date 60 days away?

The run times out at 30 days, before the date arrives. Store the date on the item and use a daily flow instead.

Can a Do until loop wait longer than 30 days?

No. The loop is part of the same run. Microsoft gives Until iterations a default of 60 and a maximum of 5,000, and the 30 day run limit still applies.

How long can a recurrence flow repeat?

Microsoft lists a maximum recurrence interval of 500 days and a minimum of 60 seconds.

How do I stop a daily flow from sending the same reminder twice?

Add a Yes/No column with a default of No. The flow acts only on rows where it is No, then sets it to Yes.

Sources