1. Home
  2. Guides
  3. Calendar & Scheduling
  4. How to send bulk Outlook calendar invites without showing everyone's email address
Calendar & Scheduling

How to send bulk Outlook calendar invites without showing everyone's email address

Use Power Automate to add a list of people from Excel to one existing Outlook calendar event, one person at a time, with the attendee list hidden. Everyone gets their own invite and nobody sees who else was invited.

  • By Nur Islam
  • 13:31 video
  • 13 steps
Jump to a step (13)
Who this is for

When you invite a large group to one Outlook event, every attendee can see the full attendee list and everyone's email address. For client webinars, trainings or community events that is a privacy problem, and creating a separate event for each person makes a mess of your calendar.

This flow works like a mail merge for calendar invites. It reads your Excel attendee list, then for each row it reads who is already on the event, adds the one new person, and updates the same event with the attendee list hidden. Outlook sends the invite only to the person just added.

The flow uses the Send an HTTP request action from the Office 365 Outlook connector to talk to Microsoft Graph, so you do not need SharePoint or a premium connector. You only need the event's ID, which you get once from Microsoft Graph Explorer.

What you need

  • Microsoft 365 Business Basic or Standard with Power Automate and Outlook
  • An existing Outlook calendar event that you own
  • An Excel table in OneDrive with Name and Email columns
  • Access to Microsoft Graph Explorer, signed in with the account that owns the event

Step by step

0 of 13 done
  1. 01

    Prepare the Excel attendee list

    Create an Excel file in OneDrive (the video uses attendees.xlsx) with two columns: Name and Email. Name is optional, so you can leave it blank for some people.

    Select the columns, click Format as Table and pick a style. Note the table name (here Table1).

  2. 02

    Open the existing calendar event

    Create or open the Outlook event you want people added to. In the video it already has one participant. The flow will add everyone from Excel to this same event rather than creating new ones.

  3. 03

    Get the event ID with Graph Explorer

    Open Microsoft Graph Explorer and sign in with the same Microsoft 365 account that owns the event. On the Modify permissions tab, consent to the calendar permission so it can read your events.

    Set the method to GET, paste this URL and click Run query:

    https://graph.microsoft.com/v1.0/me/calendar/events?$select=id,subject,start,end

    The response lists your recent events with their subject, start and end. Find your event by its subject and copy its id. Keep it somewhere handy for the next steps.

  4. 04

    Create an instant cloud flow

    In Power Automate, click Create > Instant cloud flow. Name it Add Excel list to Outlook event, choose Manually trigger a flow and click Create. You run it on demand whenever you have a list to add.

  5. 05

    Read the attendees from Excel

    Add the Excel Online (Business) action List rows present in a table. Set Location to OneDrive for Business, Document Library to OneDrive, choose attendees.xlsx and select Table1. This returns every person on your list.

  6. 06

    Initialize the AllAttendees array

    Add Initialize variable, rename the action and the variable to AllAttendees, and set Type to Array. For each Excel row, this array is rebuilt to hold the event's existing attendees plus the current person.

  7. 07

    Loop through each Excel attendee and reset the array

    Add Apply to each and set its input to value from List rows present in a table. With five people in Excel, the loop runs five times. Everything below goes inside this loop.

    Inside the loop, add Set variable, choose AllAttendees and set the value to []. This empties the array at the start of each person. Without it, attendees from earlier rows pile up and repeat.

  8. 08

    Read the existing attendees from the event

    Add the Office 365 Outlook action Send an HTTP request and rename it Get event attendees. Set the method to GET and the URI to:

    https://graph.microsoft.com/v1.0/me/events/YOUR_EVENT_ID?$select=attendees

    Replace YOUR_EVENT_ID with the ID you copied. $select=attendees tells Graph to return only the attendee list, which you need before adding anyone.

    Add Parse JSON. Set Content to the body of Get event attendees. Click Use sample payload to generate schema, paste a small sample of the GET response and click Done so Power Automate builds the schema.

  9. 09

    Append the existing attendees

    Add a second Apply to each and set its input to the attendees array from Parse JSON. Inside it, add Append to array variable, rename it Append existing attendees, choose AllAttendees and paste this value:

    {"emailAddress": {"address": "", "name": ""}}

    Place the cursor between the address quotes and insert address from Parse JSON, then between the name quotes and insert name (both under See more). This puts everyone already on the event back into the array.

  10. 10

    Append the current Excel attendee

    Outside the inner loop but still inside the outer loop, add another Append to array variable and rename it Append new attendee. Use the same AllAttendees array and the same JSON structure. This time insert Email and Name from List rows present in a table.

    The array now holds the existing attendees plus exactly one new person.

  11. 11

    Update the event with a PATCH request

    After Append new attendee, add another Send an HTTP request and rename it Add attendees. Set the method to PATCH and the URI to:

    https://graph.microsoft.com/v1.0/me/events/YOUR_EVENT_ID

    Replace the placeholder with your event ID. Open Advanced parameters, add Body, and send the attendee array with the attendee list hidden, for example {"attendees": @{variables('AllAttendees')}, "hideAttendees": true}.

    Because the list you send matches the event plus one new person, Outlook only emails that one person. People already on the event are not emailed again. Save the flow.

  12. 12

    Test the full flow

    Click Test, choose Manually, then Test and Continue. Watch the run: the outer loop processes each Excel row, clearing the array, reading the event, adding existing attendees and adding the new one.

    When it finishes, close and reopen the event in Outlook. Everyone from the Excel file is now on the attendee list.

  13. 13

    Confirm each invite is private

    Check Sent Items. You should see one invite per person (five in the video) rather than one bulk message. Open the invite in one attendee's inbox: it shows only that person, and no other email addresses are visible.

Tips and common problems

  • Sign in to Graph Explorer with the same account that owns the Outlook event, or the event will not appear in the list.
  • Reset the AllAttendees array to [] at the start of each Excel row. If you skip it, earlier attendees are appended again and repeat.
  • Put Append new attendee outside the existing-attendees loop. Inside it, the new person would be added once for every existing attendee.
  • The PATCH request replaces the event's attendee list with what you send, which is why the flow always reads and re-adds the existing attendees first.
  • The flow is manual. If people register through Microsoft Forms and you want them added as they sign up, see the related video in the section below.
Still stuck? Ask AI to help you fix itChatGPTClaudeGeminiCopilotPerplexityGrok

Microsoft Graph requests used in this flow

PurposeMethodURI
List recent events and find the event ID (Graph Explorer)GEThttps://graph.microsoft.com/v1.0/me/calendar/events?$select=id,subject,start,end
Read the event's current attendeesGEThttps://graph.microsoft.com/v1.0/me/events/YOUR_EVENT_ID?$select=attendees
Update the same eventPATCHhttps://graph.microsoft.com/v1.0/me/events/YOUR_EVENT_ID

Replace YOUR_EVENT_ID with the ID you copied from Graph Explorer.

Related videos

Questions

How do I send an Outlook meeting invite without showing other attendees?

Add attendees one at a time to the same event and set the event's hideAttendees property to true. This flow does both with Power Automate and Microsoft Graph, so each person receives their own invite and sees only themselves.

Will existing attendees get another email every time someone is added?

No. The flow sends back the existing attendee list plus one new person, so Outlook only sends an invite to the person who was just added.

Do I need a premium Power Automate licence for this?

No. Send an HTTP request is part of the standard Office 365 Outlook connector, and the flow also uses Excel Online (Business) and built-in variable actions. No SharePoint is needed.

Why not just put everyone in BCC?

A calendar event does not have a BCC field for attendees. Adding people individually with the attendee list hidden gives each person a normal invite that they can accept, while keeping the list private.

Video chapters
Ask a question in the comments Last checked 26 Sep 2026. Screens change: if a step looks different, tell me in the comments.