Power Automate: How to Process and Forward Emails with Delay (Step‑by‑Step Guide)

In many real‑world automations, we need to process multiple emails sequentially, perform an action on each email (like forwarding or notifying), and control the pacing to avoid throttling or loops.

In this post, I’ll walk through how I built a Power Automate flow that:

  • Is manually triggered
  • Reads emails from a specific Outlook folder
  • Loops through each email
  • Sends an email based on the original message
  • Adds a 1‑minute delay between each email

I tested this entirely in my personal tenant, making it easy for anyone to try.

🧩 Use Cases

  • Forwarding or re‑sending emails in bulk
  • Sending notifications based on incoming emails
  • Controlled email processing (avoid Outlook throttling)
  • Testing loop behavior in Power Automate

📐 Flow Overview

High‑level design:

Manual Trigger
   ↓
Get emails (V3)
   ↓
Apply to each (email)
   ├─ Send an email (V2)
   ├─ Delay (1 minute)
└─ Move email (V2)

✅ Prerequisites

  • Power Automate access (Personal / Developer / M365 tenant)
  • Outlook connection
  • A test email folder (recommended)

🏗️ Step‑by‑Step Implementation

Step 1: Create an Instant Flow

  1. Go to https://make.powerautomate.com
  2. Click Create → Instant cloud flow
  3. Name the flow
    Example:
    Forward Emails with Delay
  4. Choose Manually trigger a flow
  5. Click Create

Step 2: Add “Get emails (V3)”

  1. Click + New step
  2. Search for Get emails (V3)
  3. Configure:
    • Folder:
      Recommended → Inbox/TestInput/Draft (choose your required folder)
    • Top:
      100 (for first testing, use 5)

✅ This action returns an array called body/value, which contains all retrieved emails.

Step 3: Add “Apply to each”

  1. Click + New step
  2. Select Apply to each
  3. In Select an output from previous steps:
    • Choose body/value from Get emails (V3)

📌 This ensures each email is processed one at a time.

Step 4: Send an Email (V2)

Inside the Apply to each:

  1. Click Add an action
  2. Search for Send an email (V2)
  3. Configure:
    • To:
      From (Address) (or your test email)
    • Subject:
      Subject
    • Body:
      Forwarded email content:
      
      @{Body}
      

✅ This reuses content from the original email dynamically.


Step 5: Add Delay (1 Minute)

Still inside Apply to each:

  1. Click Add an action
  2. Select Delay
  3. Configure:
    • Count: 1
    • Unit: Minute

✅ This ensures controlled processing and avoids throttling or rapid email firing.


🛡️ Loop‑Safety Best Practices (Highly Recommended)

✅ Use a Dedicated Folder

  • Read from: Inbox/TestInput
  • Do not send emails into the same folder

✅ (Optional) Move Email After Processing

Add Move email (V2) at the end of the loop:

  • Message IdMessage Id
  • Target folder → Inbox/TestProcessed/Sent (you can choose any folder)

Step 6: Move email (V2)

Still inside Apply to each:

  1. Click Add an action
  2. Select Move email (V2)
  3. Configure:
    • Message Id → Message Id
    • Target folder → Sent Items (you can choose any folder)

This ensures each email is processed only once.

▶️ Testing the Flow

  1. Save the flow
  2. Click Test → Manually
  3. Add a few emails to your input/Draft folder
  4. Monitor Run history

✅ You will see one email processed per minute.

🔍 Key Learnings

  • Apply to each + Delay is a powerful pattern
  • Always control email loops to prevent reprocessing
  • Personal or dev tenants are perfect for testing
  • Start small (Top = 5) and scale gradually

🎯 Final Thoughts

This pattern is extremely useful for email‑driven automations, controlled batch processing, and safe testing scenarios. It works reliably across personal, developer, and business tenants.

If you’re building more advanced flows, this setup can easily be extended with:

  • Filters (subject, sender, date)
  • Conditions
  • Error handling
  • Parallel → sequential control

**TIP**

Concurrency Control MUST Be Disabled for Delays

If Delay is inside Apply to each:

  • Go to Apply to each → Settings
  • Turn Concurrency Control = On
  • Set Degree of Parallelism = 1

Without this, Delay is ignored and emails may never send as expected.


Update:
A reusable unmanaged Power Automate solution and sample screenshots are available on GitHub:
https://github.com/spashikanti/power-automate-forward-email-delay-pattern

No comments

Powered by Blogger.