- Home
- Guides
- Calendar & Scheduling
- How to add Microsoft Forms registrants to an existing Outlook calendar event with Power Automate
How to add Microsoft Forms registrants to an existing Outlook calendar event with Power Automate
Build an event registration flow where each Microsoft Forms response adds the person as an attendee to one existing Outlook event, and Outlook sends them the invite. Only the new registrant gets an email.
Jump to a step (11)
When you run a webinar, workshop or training session, you register people through a form and then add each one to the calendar event by hand. Flows that create a new event per response fill your calendar with duplicates, and a careless update can wipe the attendee list or email everyone again.
You start with one master event already in your Outlook calendar. When someone submits the registration form, Power Automate reads the event's current attendees through Microsoft Graph, builds a list of existing attendees plus the new person, and sends that full list back to the same event with a PATCH request. Outlook then sends the invite to the new attendee only.
The Graph calls use the standard Send an HTTP request action in the Office 365 Outlook connector, so you do not need the premium HTTP connector.
What you need
- Microsoft 365 with Outlook, Microsoft Forms and Power Automate (standard connectors)
- One existing Outlook calendar event to act as the master event
- Access to Microsoft Graph Explorer, signed in with the account that owns the event
- A registration form with Name and Email fields (the demo also has a privacy consent question)
Step by step
0 of 11 done-
01
Create the master event in Outlook
Create the event in your Outlook calendar first (the demo is a one-hour session called
Power Automate Automating Business Processes). Every registrant will be added to this one event. It can already have attendees. The flow keeps them. -
02
Get the event ID with Microsoft Graph Explorer
Open Microsoft Graph Explorer and sign in with the account that owns the event. On the
Modify permissionstab, consent to the calendar permissions so it can read your events.Run a
GETrequest with this URI:https://graph.microsoft.com/v1.0/me/calendar/events?$select=id,subject,start,endFind your event in the response, copy its
idand paste it into Notepad. You need it twice in the flow. -
03
Set up the registration form
Put the event date, time and location in the form description so people know what they are registering for. The form has three questions:
Name,Email Addressand a privacy consent. -
04
Create the flow and get the response
In Power Automate select
Create>Automated cloud flow, name it (the demo usesEvent Registration to Outlook Calendar) and choose the Microsoft Forms triggerWhen a new response is submitted. Pick your form.Add
Get response details, select the same form and setResponse Idto the trigger'sResponse Id. You now have the registrant's name and email. -
05
Read the event's current attendees
Add
Send an HTTP requestfrom the Office 365 Outlook connector (a standard action) and rename itHTTP Get Event. Use methodGETand this URI, with your event ID in place ofYOUR_EVENT_ID:https://graph.microsoft.com/v1.0/me/events/YOUR_EVENT_ID?$select=attendeesThe
$select=attendeespart returns only the attendee list. You need it because the update must send back the complete list: existing attendees plus the new person. -
06
Parse the attendee JSON
Add
Parse JSON. SetContentto the body output ofHTTP Get Event. ForSchema, selectUse sample payload to generate schema, paste a small sample of the attendees response and selectDone. Power Automate generates the schema so you can pick attendee fields as dynamic content. -
07
Create the AllAttendees array
Add
Initialize variable, rename itAllAttendees, setNametoAllAttendeesandTypetoArray. Leave it empty. It will hold the final attendee list. -
08
Copy the existing attendees into the array
Add
Apply to each. For the input use an expression that returns only the attendees from Parse JSON, for examplebody('Parse_JSON')?['attendees'].Inside the loop add
Append to array variable, rename itAdd existing attendee, chooseAllAttendeesand paste an attendee object as the value, for example:{"emailAddress":{"address":"","name":""},"type":"required"}Put the cursor between the quotes of
addressand insert the attendee'semailAddress addressfrom Parse JSON (underSee more), then do the same forname. -
09
Add the new registrant
Outside the loop, add another
Append to array variable, rename itAdd new registrantand chooseAllAttendees. Paste the same JSON structure, but this time insert theEmail AddressandNameanswers fromGet response details. -
10
Update the event with a PATCH request
Add another Office 365 Outlook
Send an HTTP requestand rename itHTTP Update Event. Use this URI with your event ID:https://graph.microsoft.com/v1.0/me/events/YOUR_EVENT_IDSet
MethodtoPATCH(it updates only part of the event). UnderAdvanced parametersaddBodyand send the full array, for example{"attendees": @{variables('AllAttendees')}}. Save the flow. -
11
Test and check the invite
Select
Test>Manuallyand submit the form with a test name and email. After the run succeeds, reopen the event in Outlook and selectEdit: the new attendee is listed. The registrant's inbox has the invite, and your Sent Items shows only one email, to the new person.
Tips and common problems
- Never PATCH the event with only the new registrant. That replaces the attendee list. Always read the existing attendees first and send the full list back.
- Use Send an HTTP request from the Office 365 Outlook connector. It is a standard action, unlike the premium HTTP connector.
- Sign in to Graph Explorer with the same account that owns the event, and consent to the calendar permissions, or the events list will be empty or fail.
- In the video, existing attendees did not get repeat update emails, and a person who submits the form again with the same email does not get a second invite.
- Want each registration reviewed first? Add an approval step before the Graph update.
Graph requests used in this flow
| Purpose | Method | URI |
|---|---|---|
| List events to find the event ID (Graph Explorer) | GET | https://graph.microsoft.com/v1.0/me/calendar/events?$select=id,subject,start,end |
| Read the current attendees | GET | https://graph.microsoft.com/v1.0/me/events/YOUR_EVENT_ID?$select=attendees |
| Write the final attendee list | PATCH | https://graph.microsoft.com/v1.0/me/events/YOUR_EVENT_ID |
Replace YOUR_EVENT_ID with the ID you copied from Graph Explorer. Need a new event for every submission instead? See Create calendar invites from Microsoft Forms.
Questions
How do I add Microsoft Forms respondents to an existing Outlook meeting automatically?
Use Power Automate: get the form response, read the event's attendees with a Graph GET request, add the new person to an array of existing attendees, then PATCH the same event with the full array. Outlook sends the invite to the new attendee.
Does this create a new calendar event for every registration?
No. It updates one existing event. If you want a separate event per submission, that is a different build covered in a separate video.
Do I need a premium Power Automate license to call Microsoft Graph for calendar events?
Not for this flow. The Office 365 Outlook connector's Send an HTTP request action is standard and can call the Graph /me/events endpoints used here.
Will existing attendees get an email every time someone registers?
In the test in the video, only the new registrant received an email. The Sent Items folder showed a single message.
