Create a Zoom meeting via Power Automate


Step 1: Create a Shared Booking Page

  • Click on the nine dots of the outlook page and then click on the “Bookings”. This will redirect to the Microsoft Bookings.
Booingimage1
  • There are two options for creating booking, Personal booking page & Share booking pages. Click on the “Shared booking pages”.
Booingimage2
  • Name the Page:

- Enter a unique **Name** (e.g., "VJ Test").

Booingimage3
  • Add a Logo (Optional):

- Upload a logo for branding (e.g., company logo).

  • Select Business Type:

- Choose from predefined categories like *IT support*, *Education*, or *Other*.

Booingimage4
  • Set Business Hours:

Default: Mon-Fri, 9:00 AM – 5:00 PM. Click **Change** to customize.

  • Click **Next** to proceed.
Invite Staff
  • Invite Team Members:
Booingimage5

Search for staff within your organization.

- Assign roles (default: *Team Member*). External users can be added later.

Click –Next- to continue.

Set Up Services
Booingimage6
  • Define Appointment Types:

- A default service (e.g., *IT support, 30 mins*) is pre-created.

Modify duration, availability, or description.

  • Customize Later:

- Add more services post-setup (e.g., *Consultation*, *Training*).

  • Click -Next- to advance.
Configure Access Permissions
Booingimage7
**Choose Audience**:

- **No self-service**: Bookings managed internally.

- **People in my organization**: Internal self-service page.

- **Anyone**: Public page (default for external users).

Click **Finish** to publish the booking page.


Booingimage8
  • Copy the link and paste in new tab for creating “Bookings”

**Add User Input Fields**:

- Require details like name, email, phone, and special requests.

Bookingimage9
Bookingimage10
Bookingimage11
Preview and Test

**Check Availability**:

Bookingimage12

Step 2: Create a Zoom App for API Access

1.Go to Zoom Marketplace: https://marketplace.zoom.us/

zoom1

2. Sign In with your Zoom admin account.

3. Click on "Develop" > "Build App".

zoom2

4. Select App Type:

  • Choose "Server-to-Server OAuth App" (recommended for automation).
  • Click "Create".
zoom3

Configure the Server-to-Server OAuth App

1. App Name: Provide a meaningful name.

zoom4

2. Information: Fill in required fields (developer contact, company name, etc.)..

zoom5
zoom6

3. App Credentials:

  • Save the Client ID, Client Secret, and Account ID securely.
zoom7

Set API Scopes

zoom8

Go to Scopes tab in the app setup:

  • Click "+ Add Scopes".
  • Add scope: meeting:write:admin to create meetings.
zoom9

Save and Activate the app.

zoom10
zoom11
zoom12

Step 3: Create a Power Automate flow for Zoom API Access

1. Trigger: Use the "When an appointment is created" trigger from the Microsoft Bookings connector.

paimage1

Custom Value:

paimage2

Note:-Paste the booking page link in the custom Value and remove first part from https till calendar/ from the link and remove last part from /booking till last. Rest of the part of the link paste in the Custom value. For reference, check below https://outlook.office.com/owa/calendar/VJTest@53ldh0.onmicrosoft.com/bookings/?ismsaljsauthenabled


Step (4-a1): “To Convert Time” just after "When an appointment is created" trigger

Step 1: Add a new action:-“Compose”
C1
C2

1. In the expression paste this formula:-

convertTimeZone(triggerOutputs()?['body/startTime'], 'UTC', 'Eastern Standard Time', 'MM-dd-yyyy hh:mm tt')

Note:- the above yellow part is the “output value of Start Time” will come from dynamic value. And change the Time Zone as per your location of USA. Here are the values of USA time zone, copy and paste in the expression.

Here are some common U.S. time zone IDs you can use:

Region
Time Zone ID
Eastern Time (ET) 'Eastern Standard Time'
Central Time (CT) 'Central Standard Time'
Mountain Time (MT) 'Mountain Standard Time'
Pacific Time (PT) 'Pacific Standard Time'

Step 4: Generate Zoom Access Token

Action 1: Generate a Zoom Meeting Link via HTTP Request

Action 1: Add a “Compose” and rename it “Generate base64 Encoder”

Inside the compose paste an Expression value type:- base64(ClientID:ClientSecret)

Put the (ClientID:ClientSecret)which was saved earlier.

paimage3

Step 5: Use Power Automate to Get Token

Action 2: Add an “HTTP” Action: and rename its name to HTTP
  • Method: POST
  • URI: https://zoom.us/oauth/token
  • Headers

Authorization: Basic (Output of Generate base64 Encoder )

Content-Type: application/x-www-form-urlencoded

  • Queries:

: account_credentials

account_id: Paste account_id here (get account id from zoom market place)

paimage4

Step 6: Create a Zoom Meeting via API

Action3: Add an “HTTP” Action: and Rename HTTP to Create Meeting
  • Method: POST
  • URI: https://api.zoom.us/v2/users/me/meetings

Headers: { "Authorization": "Bearer ACCESS_TOKEN", "Content-Type": "application/json" }

Note:- Put Access Token value in Expression:-

body(‘Access Token Fetch’)?[‘access_token’]

Note:- After Bearer write the following expression in expression tab:-

body(‘New Name of HTTP action ’)?[‘access_token’]

if your HTTP action name is different then write your action name.

body(‘______’)?[‘access_token’]

paimage5
paimage7

Below images used are used for inside body parameters :

Example:
Body:
{
  "topic": "Zoom Meeting",
  "type": 2,
  "start_time": Under dynamic content select “Output of compose”,
“end_time”: Under expression put this value:         addMinutes(outputs('Compose'),30),

  "duration": 30,
  "timezone": Under dynamic content select “customer time zone for 1:1 meeting”,
  "settings": {
    "host_video": true,
    "participant_video": true,
    "join_before_host": true,
    "mute_upon_entry": true,
    "audio": "voip"
}
}
C3
1.body{start_time}
C4
2.body{end_time}
C5
3. body{timezone}
C6

Step 7:- Add an Action named “Parse JSON”

C7

Content: In the content add dynamic value “Body” of Create Meeting

C8

Schema:- paste this Schema and save it.

Example:
{
    "type": "object",
    "properties": {
        "join_url": {
            "type": "string"
        },
        "start_time": {
            "type": "string"
        },
        "topic": {
            "type": "string"
        },
        "password": {
            "type": "string"
        } ,
        "Meeting ID": {
            "type": "string"
        }

    }
}

Step 8:- Add an action named “Send an Email (V2)”

C9

To: paste the dynamic value “Customer Email”

C10

Subject:- Write the Subject

Body:- Paste this format in HTML mode.

 Hello,
(Dynamic value “Customer Name”)
You are being invited to a scheduled zoom meeting.

Topic: body(‘Parse_JSON’)?[‘topic’]
Start Time: outputs(‘Compose’)
Join Link: Click here to join Zoom

Meeting ID:- body(‘Parse_JSON’)?[‘id’] Passcode: body('Parse_JSON')?['password']

Thank you,
Kind Regards
C10
C11
C12
C13
C14

Note:- Save the flow and create a meeting from “Booking” and check flow is working. Then check meeting is created in Zoom App.

C15

If you have any doubts or questions related to this blog, you can Contact us by Email: info@voxtus.com

Himanshu Nauityal
Power Automate Consultant