Create a Teams meeting easily with Power Automate

When I was looking my demo tenant to create some new Power Automate demos I found out that there were new Teams Flow Actions available!

Meetings are important so I thought I better build a short Flow to see how it is really behaving.

Create a Teams meeting (preview)

Looking at the action it looks like it will be super-simple to create new meetings in a Flow action. This opens nice possibilities for several scenarios. One is automation of meetings based on business processes “setting up meetings with customers automatically” or perhaps that is being done with a bot (Power Virtual Agents make this really easy). I chose to explore just a simple scenario of creating a meeting with a person who wrote a specific Teams message.

Looking at the Flow action we see we need to provide a few inputs there. Most of them make sense – and we don’t have to even invite anyone in: instead we can also use this to create simple meetings. But the beef is to create online meetings without the need to use Graph API so let’s jump in.

Show advanced options reveals even more possibilities

These options are familiar for all of us if we have done any Teams meetings.

Flow to create a Teams meeting based on single message

I used the “for selected message” trigger to initiate a Flow based on a single Teams message as a starter. In that trigger I can open a Adaptive Card to ask for more information like Subject of the message and meeting dates. It also gives me access to various information about the message used. See my earlier blog post for more info about For a selected message -trigger.

With “For a selected message”-trigger Adaptive card gives us access to information user enters in it – using variable. So remember to name your input variables properly.

The Get Sender Profile I used to get an example of adding two users to the meeting. What is really needed is the Get Originating User Profile to book a meeting with the person who wrote the message in Teams channel. From “For a selected message” -trigger we get this information, but it is a ID so we need to retrieve user profile to get the email we can use in the meeting.

After getting all the information we can start creating the meeting! Calendar ID can not be chosen dynamically but picking a Calendar seems to default to other users as well. It is certainly better than Birthdays or US Holidays for this need 🤣

We get several variables from the Adaptive Card like mySubject and dates & times. Since this is a demo flow I didn’t have to ensure data & time format input checking but if you are building a Flow for an international / global organization I recommend testing it well and checking for inputs before using that. Of course when using a different source for information also ensures that dates and times are in the correct format.

timeZone can not be set with a variable – it needs to be picked manually. Make your own conversions to date & time before creating the meeting.

In the last action of the Flow I simply write the meeting information to a channel for demo/test purposes. “Create a Teams meeting”-provides a good amount of dynamics fields as output to feed business processes further.

Using this simple snip I included the meeting start & end times as well as the joinURL. This could be used to send a well formatted email to a customer for example – or just returning the meeting joinURL to the customer via bot for instant meetings!

Testing it out

I tested this as “Amy” who is one demo user in my demo tenant. She launched the action “Create Teams meeting” to one old message I had – welcoming Chris to the team.

The next phase was her to add information about the meeting for the card that opened automatically

Since the Flow executed successfully the message was written to a channel in team. It show Amy’s identity as author since she initiated the action. The Flow was created under my alter ego (demo-Vesku) identity.

All information seems to be good. The join-link to Teams meeting works as well. As you can see the Summay-body isn’t that useful. The better option is to ask for the user to provide a meeting description AND then insert the link to the original message in the body. To see how link can be inserted there check my To-Do blog post.

What really matters is how this looks in the calendar. And it does look almost perfect!

The only thing that doesn’t look right is the timezone name. But the beef is correct: it is the correct timezone, just the nearest city is wrong since it can not be set in the Flow action. In short: it is just a minor cosmetic flaw.

All the other things: attendee, start & end date&time are correct – and the meeting body looks a lot better now than in the channel post.

And if I look at my demo-Vesku calendar I see all the right information – with RVSP option which I set to be used in meeting creation (it can be also set to off).

This is a snip of the raw output when meeting is created:

As you can see, the new Create a Teams meeting action is a really powerful and EASY to use. It was really simple to create this demo and go through it’s details when writing this article. Do remember: the action is in the preview so it is subject to change and generally advice is that preview-features are not used in production environments.

What else was new to Power Automate in Teams? Yes – there is more!

There are also other new triggers and actions for Teams in Power automate!

Triggers go first:

The “For a selected message” should be familiar to you now. However do note that you can also create processes when a user is either removed from a team – or leaves it by user’s own choice. This way a project/business owners can be up to date who are in the team – who has the access to the contents for example. But also it can initiate exit-processes like removing user’s access to other content sources or systems.

Besides “Create a Teams meeting” there are also two new actions that can be used with Teams in Flow: Add a member for a team, Create a team and Create a channel.

Creation a new team is now a lot easier than before. In my Power Automate sessions I have presented in various events during past 7 months I have used GRAPH API to create a team. Now I can change them to Power Automate. The biggest thing here is that this action does not require Premium licensing to create a new team. However, it’s options are a bit limited at this point:

This action can create a public or private team.

Using the Add a member to a team -action sounds perfect one to be used when creating a new team. But it is not. Currently it lacks the capability to use dynamic value for team. So you need to pick the team already when you are creating the flow.

But what this allows is a management of a specific team’s members – and it can be used to add owners as well. It just can’t be used in a provisioning situation. I hope that this will get updates later.

And finally Create a channel action.

This does not allow creation of private channels and this has the same issue with selected Team as with Add a member to a team: you have to select team from a list instead of using a dynamic value. This hinders the usability of this action to processes that are created to a single team – instead of using this in provisioning or doing actions dynamically. It has it’s uses of course but this could do much more.. Hoping that this will be updated later as well.

List of all currently available Teams triggers and actions in Power Automate

And actions:

Yes, it is an impressive list. And it seems to grow. 😍

22 thoughts on “Create a Teams meeting easily with Power Automate

  1. hi Vesa, thanks for this article. I have been looking for a way to create Teams meetings in Power Automate for at least 6 months in replacement of Skype for Business meetings. Now Microsoft Graph is no longer needed.
    While there is no action for updating a Teams meeting I was able to do it using Update Event (V4) (Office 365 Outlook).


    1. I found that using Update Event (v4) stripped my meeting of its Teams info, returning it to a regular in-person event. Did you find the same?


      1. Hi Sally! I just tested that – and indeed it does what you describe. If the meeting is updated afterwards the update also removes the Teams info unless you do a trick.
        The trick is that you first use Get event (V3) to retrieve the Teams meeting information and then update the meeting with Update event (V4) and place the body from get event to the body of the update the updated meeting retains / preserves the Teams meeting.


      2. Thank you, Vesa! Populating the body (even though I didn’t need to update it) preserved the Teams meeting info. You have saved me a lot of grief!

        Liked by 1 person

  2. Hi, thank you so much for the article i was looking so long for more information about this. I have one question about ”create a Team” action, when i try to use it i get an Error message that says: ”User is not allowed to create team” . Do i need to be some spesific Admin to use it? i can´t find any information about this.


    1. To me that sounds like the user doesn’t have team creating permission. Can that user create a team normally?
      Power Automate runs on user (or creator , depending how you triggered it) context.
      I need to test more on this one later. Putting it to my to-do.


      1. Thank you for the fast reply.
        This Action was available a few weeks ago and when i tested it it was working. They removed it and put it back online now. In this new version it doesn´t work for me anymore. I´m a Office 365 and Sharepoint Admin and can create new Teams if an Office 365 group has been created before. So my guess is that i need to be a Teams Admin but there is no information about this in the documentation.


  3. Interesting. Very Interesting. Thank you for clarifying. I will give this a test as soon as I can. As far as I know there shouldn’t be any limits but as you said – there isn’t much information about this one. But I can always give feedback to the PG about it.


  4. I tested the Create team action. Worked really well for me. However – it is very limited since you can only give team name, description and choose if it is public or private. But it does save one from Graph API call if you only want a simple team.


  5. Is there any chance that these new actions still in preview become Premium? I have been told that Microsoft is used to do that.


    1. There is always a chance for everything. Also a chance that a preview feature is pulled back or it chances so that you need to changes to your Flow.
      Right on back of my head I don’t recall a Flow preview action changing to Premium. They did do licensing changes where was some changes.
      The biggest warning with preview actions is that they can change so if you were to use them in business critical processes: don’t. On other processes: evaluate if that worst case scenario is too risky or not. What these are excellent at: building POC or demo or testing them out in less critical processes and collecting experiences. And when they hit GA you can take them into production use quickly.


  6. For the CALENDAR ID, it’s supposed to be a GUID as i understand. I’ve tried passing the entire GUID which includes 19:#####@thread.tacv2 (preceeding 19: wth @thread.tacv2 trailing). I also tried stripping the 19: and @thread.tac2 and i keep getting a ID IS MALFORMED error. What is the proper CALENDAR ID form I am supposed to send? How is it there is NO documentation or legible examples?


    1. CalendarID is not a GUID – it is a long alphanumerical ID.
      You can retrieve Calendar ID by using, for example, Get calendars -action (Office 365 Outlook connector).
      You can not use team channel ID or group ID here.

      When you use create a meeting you can choose the calendar from the drop-down – this determines the calendar where the meeting is created to.


  7. Hi Vesa,

    There doesn’t seem to be a Create Channel Meeting action at the moment is there?


  8. Hello Vesa,

    Thank you for the article. I am creating a flow for onboarding and now I want to invite the new colleague and his boss with a teams meeting for installing the hardware. The function works properly, but it is using the calendar of the connection of the flow instead of my calendar. But I am changing the list element in the share point list, which is starting the flow so I think it should be possible to get a meeting, wich I can change in my calendar after creating.



    1. When you connect a Flow to the SharePoint list I recall it always runs with the Flow connections.
      Usually some kind of Service Account is used there to create the meeting and invite required parties. Or perhaps you could use Graph API calls to create a exact kind of meeting.


      1. Thank you Vesa for the quick reply, I’ll check Graph API with my colleagues
        Regards Klaus

        Liked by 1 person

Leave a Reply to Vesa Nopanen Cancel reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.