← Al Davies, 250 High Street

Power Automate approval fails after 30 days waiting

A flow run lasts at most 30 days, so a Start and wait for an approval step that is still waiting then times out. Set a shorter limit in the action's Settings under Timeout, written as an ISO 8601 duration such as P7D for 7 days, and add a branch that runs when the step times out.

The branch should tell the requester and a backup person what happened. The steps below build it.

What happens at 30 days

Microsoft's limits page lists run duration as 30 days and explains it this way: "Run duration is calculated using a run's start time and includes flows with pending steps like approvals. After 30 days, any pending steps time out."

The clock starts when the run starts. It does not restart when the approval email goes out, and it does not pause when the approver is away. Microsoft's error reference lists "Approval action without an expiration, hitting the 30-day flow run limit" as a cause of the OperationTimedOut error.

In plain words: if you set no limit of your own, you find out about the problem a month late, when the request has been open for 30 days and the flow ends in an error.

Why this is a problem for a small team

This guide is about the 30-day wall and how to design around it. For reminders before the wall, see "Remind an approver who has not answered after two days". For approvers who are out of office, see "Approvals stuck when the approver is out".

Choose your own limit first

One way to start: pick a limit that fits how fast your team really answers. For example, 7 days, not 30. Our advice, not a Microsoft rule: a limit you pick yourself gives you a chance to act. The 30-day limit only gives you an error.

Write the limit down in your process. Example: "Purchase requests wait 7 days. After that the request goes to the backup approver."

Step 1. Add a Status column to your list

This lets the flow and the people see what happened. Skip this if your list already has one.

  1. Open your SharePoint list.
  2. Add a Choice column named Status.
  3. Add these choices: 1 Waiting, 2 Approved, 3 Rejected, 4 Timed out.

Step 2. Set a timeout on the approval step

  1. Open https://make.powerautomate.com, select My flows, and edit your flow.
  2. Find "Start and wait for an approval". Open its Settings.
  3. Look for the Timeout setting. Microsoft's error reference says: "Open the action's Settings and increase the Timeout value (ISO 8601 duration, for example, PT5M for 5 minutes)." Microsoft lists "Wait for an approval" with an expiration that passed as a cause of the ActionTimedOut error.
  4. Write your limit in that style. Seven days is P7D. Exact names may differ on your screen.

Microsoft's error reference also advises, for approvals: "set a reasonable expiration and add a timeout branch to handle non-responses." Step 3 builds that branch.

Step 3. Build the branch for no response

The next steps run only when the approval step times out.

  1. Under "Start and wait for an approval", add a new action. Open its menu, then choose "Configure run after".
  2. Tick "has timed out". Microsoft's error reference names this option, "Configure run after > has timed out", for timeout branches. Untick the other boxes if you want this action to run only on a timeout.
  3. In that branch, add the SharePoint action "Update item". Fill in Site Address, List Name and Id, plus any other field the card marks as required.
  4. Set Status to 4 Timed out.
  5. Add "Send an email (V2)" to the requester. Say plainly that the request got no answer in 7 days and who they can ask next.
  6. Add a second email to a backup approver or a manager with the request title and a link to the item.

Note that the success path (Approved or Rejected) and this branch are separate. Test both.

How to spot a timeout in your flow

After the timeout branch runs, the run history shows which action timed out. Microsoft's error reference names two errors: OperationTimedOut, for a long wait such as an approval that reaches the 30-day limit, and ActionTimedOut, for one action that passes its own configured timeout. Microsoft's troubleshooting page lists the message "Flow run timed out." for a flow that exceeded the 30-day maximum.

Example durations

ISO 8601 writes a duration as P for days and PT for hours and minutes. These examples use that standard notation:

Step 4. Decide what the backup does

Pick one of these. Our advice, not a Microsoft rule: choose before you build.

  1. Send the request to a backup approver and start a new approval.
  2. Close the request and ask the requester to resubmit.
  3. Stop and wait for a person to decide by hand.

Option 1 gives the requester the most help. Start a new flow run for the second approval. A new run gets its own 30 days.

If your approvals can take longer than 30 days

Some requests really do take months, for example a contract or a grant. Microsoft's approvals tutorial says: "If your flow might run for more than 30 days, store your approvals in Microsoft Dataverse. This lets you create flows that act on responses to approval requests, even after the original flow run times out."

It adds that you use two flows: one to send the approval request, and one to run the business logic on the responses, based on the "Create an approval (v2)" action. Microsoft's error reference describes a similar "relay" pattern: end the current run and start a new one with state passed through Dataverse or a file.

Microsoft's pages do not give a full click path for this two-flow setup in one place. If you need it, test it with a short approval first, or ask for help.

Step 5. Test with a short limit

  1. Change the timeout to a few minutes, for example PT5M.
  2. Create a test row in your list. Do not answer the approval.
  3. Wait for the limit to pass. Confirm Status changed to 4 Timed out and both emails arrived.
  4. Run it again and answer fast. Confirm no timeout email arrives.
  5. Set the timeout back to your real limit, for example P7D.

What to avoid

Honest limits

A timeout branch tells people the request stalled. It does not make anyone decide. Limits and menu names can change, so check Microsoft's limits page for the current numbers before you depend on them. Check with your admin about which license your flows run under.

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

Power Automate approval timeout format: how do I write it?

Microsoft's error reference says to set the Timeout value in the action's Settings as an ISO 8601 duration, for example PT5M for 5 minutes. P7D is 7 days in the same notation.

Power Automate approval default timeout: how long is it?

Microsoft's limits page says: "After 30 days, any pending steps time out." The clock runs from the start of the run. Set your own shorter limit so you control what happens.

Power Automate extend approval timeout: can I wait longer than 30 days?

Not in one run. Microsoft's approvals tutorial says to store the approvals in Microsoft Dataverse and use two flows, one to send the request and one to act on the responses.

Power Automate handle approval timeout: how do I run steps when it times out?

Microsoft's error reference names "Configure run after > has timed out" for timeout branches. Add a step after the approval, tick has timed out, and update the row and notify people there.

What error shows when an approval waits too long?

Microsoft's error reference lists OperationTimedOut for long waits such as an approval that reaches the 30-day limit, and ActionTimedOut for a single action that passes its own configured timeout.

Can I cancel an approval I no longer need?

Microsoft's approvals tutorial says the person who sent the request can cancel it, and that the cancel feature is supported on the "Create an approval (v2)" action. Open https://make.powerautomate.com, select Approvals, then the Sent tab. Select the request and choose Cancel.

Sources