TutorialGravity Forms Zoom Integration: Create Zoom Meetings From Booking Forms

Do you want to create Zoom meetings from a Gravity Forms booking form without copying meeting details by hand?

In this tutorial, you will build a practical Gravity Forms Zoom integration using GravityWP API Connector. When someone submits a booking form on your WordPress site, Gravity Forms will send the meeting details to Zoom and create a new Zoom meeting.

We tested this workflow with a simple booking form. The final setup created a Zoom meeting, saved the Zoom meeting ID, saved the join URL, saved the start URL, and stored the full Zoom API response in the Gravity Forms entry.

The workflow looks like this:

Gravity Forms booking form
→ GravityWP API Connector gets a Zoom access token
→ GravityWP API Connector creates the Zoom meeting
→ Zoom meeting details are saved back to Gravity Forms

This tutorial uses the Zoom API and a Zoom Server-to-Server OAuth app. It does not use Zapier.

Zoom’s Meeting APIs allow developers to work with Zoom Meetings and Webinars programmatically, and the Zoom Meetings API server is https://api.zoom.us/v2. Zoom API requests also need an access token, which can be created with Server-to-Server OAuth.

What does this Gravity Forms Zoom integration do?

This Gravity Forms Zoom integration creates a real booking workflow.

When a user submits a Gravity Forms form, GravityWP API Connector first requests a Zoom access token. Then it uses that access token to create a scheduled Zoom meeting.

After Zoom creates the meeting, Gravity Forms stores the returned meeting details in the entry.

The setup saves:

  1. Zoom Meeting ID
  2. Zoom Join URL
  3. Zoom Start URL
  4. Full Zoom Meeting Response

This is useful for discovery calls, onboarding calls, consultation forms, support sessions, internal appointments, and other booking workflows.

This tutorial creates a Zoom meeting. It does not create a Zoom webinar registration, register attendees for a webinar, or build a full webinar registration form. Zoom webinars may need different endpoints, scopes, or Zoom plan access.

What you need to integrate Gravity Forms with Zoom

This tutorial is part of the wider Gravity Forms integrations workflow, where form submissions can send data to other apps through APIs.

Before you start, make sure you have:

  • A WordPress site
  • Gravity Forms installed
  • GravityWP API Connector installed
  • A Zoom account
  • Access to Zoom App Marketplace
  • A Zoom Server-to-Server OAuth app
  • Permission to create meetings in Zoom

You will also need these values from your Zoom app:

  • Account ID
  • Client ID
  • Client Secret

Keep these credentials private. Do not add them to screenshots, public documentation, or frontend form fields.

Zoom’s Server-to-Server OAuth flow uses app credentials to request an access token. Then the access token is used to make Zoom API requests.

Step 1: Create a Zoom Server-to-Server OAuth app

First, go to the Zoom App Marketplace.

Then go to:

Develop → Build App

Choose:

Server-to-Server OAuth App

Name the app:

Gravity Forms Zoom Meeting Test

A Server-to-Server OAuth app is a good fit for this tutorial because the WordPress site needs to create Zoom meetings inside your own Zoom account. The person submitting the Gravity Forms booking form does not need to connect their own Zoom account.

After creating the app, open the App Credentials section and copy these values into a private note:

  1. Account ID
  2. Client ID
  3. Client Secret

Do not show the Client Secret in any tutorial screenshot.

Zoom’s documentation explains that Server-to-Server OAuth apps are created in the Zoom App Marketplace and use account credentials for API authentication.

Zoom Server-to-Server OAuth app activated for a Gravity Forms Zoom integration
The Zoom Server-to-Server OAuth app allows GravityWP API Connector to request access to the Zoom API.

Step 2: Add the Zoom meeting scope and activate the app

Next, go to the Scopes section in your Zoom app.

Add this meeting scope:

Create a meeting for a user
meeting:write:meeting:admin

This scope allows the app to create a Zoom meeting for a user in your Zoom account.

For this tutorial, you do not need Event Subscriptions. Leave webhook features turned off. Gravity Forms will trigger the workflow when the form is submitted, so we do not need Zoom to send webhook events back to WordPress.

After adding the scope, go to Activation and activate the app.

Zoom create meeting scope selected for a Gravity Forms Zoom integration
The create meeting scope allows the app to create Zoom meetings through the Zoom API.

Step 3: Create the Zoom Booking Form in Gravity Forms

Now create the booking form in WordPress.

Go to:

Forms → New Form

Name the form:

Zoom Booking Form

Add these public fields:

Field labelField type
Meeting TopicSingle Line Text
Booker NameName
Booker EmailEmail
Meeting DateSingle Line Text
Meeting TimeSingle Line Text
DurationNumber
Meeting NotesParagraph Text

For the first test, use simple text fields for Meeting Date and Meeting Time. This makes it easier to send the date and time to Zoom in the expected format.

Use values like this:

Meeting Date: 2026-07-30
Meeting Time: 10:00:00

Together, those values create a Zoom start_time like this:

2026-07-30T10:00:00
Gravity Forms Zoom Booking Form with meeting topic, date, time, duration, and meeting notes fields
The Zoom Booking Form collects the meeting details that will be sent to Zoom.

Step 4: Add hidden admin fields for Zoom data

Add these fields to the same Gravity Forms form:

Field labelField typeVisibility
Zoom Access TokenParagraph TextAdministrative
Zoom Token ResponseParagraph TextAdministrative
Zoom Meeting IDSingle Line TextAdministrative
Zoom Join URLSingle Line TextAdministrative
Zoom Start URLParagraph TextAdministrative
Zoom Meeting ResponseParagraph TextAdministrative

These fields should be set to Administrative visibility.

They are not for the person filling out the form. They are used to store the Zoom API results in the Gravity Forms entry.

This is important because the Zoom access token and Zoom start URL are sensitive. The start URL is for the meeting host and should not be shown publicly.

Gravity Forms documentation explains that Administrative visibility hides a field from the public form while keeping it available in the admin area.

Step 5: Create the Zoom OAuth Token API connection

Now create the first API connection in GravityWP API Connector.

This API connection gets the temporary Zoom access token.

Go to the API Connector settings and add a new API connection.

Use these settings:

SettingValue
API NameZoom OAuth Token
Base URLhttps://zoom.us
Authentication methodBasic Auth
UsernameYour Zoom Client ID
PasswordYour Zoom Client Secret

This may look confusing at first. The app is a Server-to-Server OAuth app, but the token request itself uses Basic Auth with the Client ID and Client Secret.

The token request gets an access token from Zoom. That token is then used in the second API request to create the Zoom meeting.

Zoom says Server-to-Server OAuth tokens are valid for one hour.

GravityWP API Connector Zoom OAuth Token connection using Basic Auth
The Zoom OAuth Token connection uses Basic Auth with the Zoom Client ID and Client Secret.

Step 6: Create the “Get Zoom Access Token” API Connector feed

Go to:

Zoom Booking Form → Settings → API Connector

Create a new feed.

Use these settings:

SettingValue
Feed nameGet Zoom Access Token
API ConfigurationZoom OAuth Token
Request MethodPOST
Body formatForm parameters
Endpoint URL/oauth/token
API request triggerOn form submission

In the Query String / Body Parameters section, add:

KeyValue
grant_typeaccount_credentials
account_idYour Zoom Account ID

For the target field mapping, use:

Field selectorResponse key
Zoom Access Tokenaccess_token

Then enable Store full response and select:

Zoom Token Response

GravityWP API Connector can store the full API response in a text field when the request triggers on form submission. This is useful for testing and troubleshooting.

GravityWP API Connector feed for getting a Zoom access token from Gravity Forms
The first API Connector feed requests a Zoom access token when the form is submitted.

Step 7: Create the Zoom Meetings API connection

Next, create a second API connection.

This one sends the meeting details to the Zoom API.

Go to the API Connector settings and add another API connection.

Use these settings:

SettingValue
API NameZoom Meetings API
Base URLhttps://api.zoom.us
Authentication methodNo authentication

Use No authentication here because the Authorization header will be added inside the feed. That header will use the access token saved by the first feed.

GravityWP API Connector Zoom Meetings API connection with no authentication
The Zoom Meetings API connection uses no saved authentication because the Bearer token is added in the feed header.

Step 8: Create the “Create Zoom Meeting” API Connector feed

Go back to:

Zoom Booking Form → Settings → API Connector

Create another feed.

Use these settings:

SettingValue
Feed nameCreate Zoom Meeting
API ConfigurationZoom Meetings API
Request MethodPOST
Body formatJSON body
Endpoint URL/v2/users/me/meetings
API request triggerOn form submission

Zoom’s Meeting API uses POST /users/{userId}/meetings to create meetings. The API server is https://api.zoom.us/v2, so using the base URL https://api.zoom.us with the endpoint /v2/users/me/meetings gives the correct request URL.

Step 9: Add the Zoom meeting request headers

In the Headers section of the Create Zoom Meeting feed, add:

KeyValue
AuthorizationBearer {Zoom Access Token}
Content-Typeapplication/json

Use the merge tag picker to insert the correct merge tag for the Zoom Access Token field.

It may look something like this:

Bearer {Zoom Access Token:8}

Your field ID may be different, so use the merge tag picker instead of copying this example exactly.

Step 10: Add the Zoom meeting body parameters

In the Query String / Body Parameters section, add these values:

KeyValue
topic{Meeting Topic}
type2
start_time{Meeting Date}T{Meeting Time}
duration{Duration}
timezoneAsia/Manila
agenda{Meeting Notes}

Use your actual Gravity Forms merge tags.

For example, your values may look like this:

topic → {Meeting Topic:1}
start_time → {Meeting Date:4}T{Meeting Time:5}
duration → {Duration:6}
agenda → {Meeting Notes:7}

The exact field IDs depend on your form.

Here is what each value does:

KeyPurpose
topicSets the Zoom meeting title
type2 creates a scheduled meeting
start_timeSets the meeting date and time
durationSets the meeting length in minutes
timezoneTells Zoom which timezone to use
agendaSends notes or context to Zoom

In our test, we used:

timezone → Asia/Manila

Change this if your site or meeting host uses a different timezone.

Step 11: Map the Zoom response back to Gravity Forms

In the Target Fields section, map the Zoom response values back into your Gravity Forms entry.

Use:

Field selectorResponse key
Zoom Meeting IDid
Zoom Join URLjoin_url
Zoom Start URLstart_url

Then enable Store full response and select:

Zoom Meeting Response

This lets you confirm the full Zoom response after each test.

Step 12: Test the Gravity Forms to Zoom workflow

Now submit a test entry.

Use this sample:

FieldSample value
Meeting TopicDiscovery Call Test
Booker NameJon Alexander Castillo
Booker Emailjonalexander@gravitywp.com
Meeting Date2026-07-30
Meeting Time10:00:00
Duration30
Meeting NotesThis is a test Zoom meeting created from Gravity Forms.

After submitting the form, open the Gravity Forms entry.

You should see values saved in these fields:

  • Zoom Access Token
  • Zoom Token Response
  • Zoom Meeting ID
  • Zoom Join URL
  • Zoom Start URL
  • Zoom Meeting Response

In our test, Zoom returned a meeting ID and Gravity Forms saved the meeting details back into the entry.

Gravity Forms entry showing saved Zoom meeting details from the Zoom API
Gravity Forms stores the returned Zoom meeting ID, join URL, start URL, and full API response after the request runs.

Then check Zoom:

Zoom Web App → Meetings → Upcoming

In our test, the meeting appeared in Zoom as:

Discovery Call Test
Zoom meeting created from a Gravity Forms booking form submission
The submitted Gravity Forms entry created a scheduled Zoom meeting in the Zoom dashboard.

That confirms the full Gravity Forms to Zoom workflow is working.

Why does this setup use two API Connector feeds?

This setup uses two feeds because Zoom requires an access token before the meeting request can run.

The first feed gets the token:

Get Zoom Access Token

The second feed uses that token:

Create Zoom Meeting

The workflow is:

Form submission
→ Get Zoom access token
→ Use token to create Zoom meeting
→ Save Zoom meeting details

This is why the hidden Zoom Access Token field matters. It stores the token from the first request so the second request can use it in the Authorization header.

What about Zoom webinars and registration forms?

This tutorial creates Zoom meetings, not Zoom webinars.

That matters because Zoom webinar workflows can be different. A Zoom webinar registration form may need different API endpoints, scopes, fields, and Zoom plan access.

For example, a webinar registration workflow may involve:

  1. Zoom webinar
  2. Webinar registration
  3. Webinar ID
  4. Registrant details
  5. Zoom registration
  6. Registration form fields

This tutorial does not register attendees for a Zoom webinar. It creates a scheduled Zoom meeting from a Gravity Forms booking form.

If your goal is webinar registration, test that as a separate workflow.

Troubleshooting Gravity Forms and Zoom API errors

If the integration does not work on the first try, check these common issues.

The Zoom access token is not saved

Check:

  • The Client ID is correct
  • The Client Secret is correct
  • The Account ID is correct
  • The Base URL is https://zoom.us
  • The endpoint is /oauth/token
  • The grant_type value is account_credentials
  • The response key is access_token

If any of these values are wrong, Zoom will not return the token.

The Zoom meeting is not created

Check:

  • The Zoom Access Token field is filled
  • The Authorization header starts with Bearer
  • The endpoint is /v2/users/me/meetings
  • The request method is POST
  • The body format is JSON body
  • The Zoom app has the create meeting scope

Also check that your token feed runs before the meeting feed.

The meeting time is wrong

Check:

  • Meeting Date format
  • Meeting Time format
  • Timezone value

In our test, we used:

2026-07-30T10:00:00

with:

Asia/Manila

If your timezone is different, update the timezone value in the feed.

The Zoom Join URL is not saved

Check the response mapping.

Use:

Zoom Join URL → join_url

Also check the full Zoom Meeting Response field to confirm that the join_url key exists in the response.

The Zoom Start URL is not saved

Check the response mapping.

Use:

Zoom Start URL → start_url

The start URL is sensitive. Keep it in an Administrative field and do not display it on the public form.

The workflow works once, then fails later

Zoom access tokens expire. In this setup, the token feed runs again on each form submission, then the meeting feed uses the token saved in the entry.

If the meeting feed runs before the token field is filled, the meeting request may fail. In our test, the two-feed setup worked because the token feed ran first and the meeting feed used the saved token.

When should you use n8n instead?

This API Connector setup is useful for a simple no-code workflow:

  • Create a Zoom meeting from a Gravity Forms submission
  • Save the Zoom meeting ID
  • Save the Zoom join link
  • Save the Zoom start URL
  • Store the full API response

For more advanced automation, you may want to use n8n with Gravity Forms.

n8n may be a better fit when you need:

  1. Conditional routing
  2. Different Zoom hosts
  3. Follow-up emails
  4. Calendar invites
  5. CRM updates
  6. Slack or Telegram notifications
  7. Multi-step automation

You can also use GravityWP’s n8n Connector if the main goal is to send Gravity Forms submissions into an n8n workflow.

Conclusion

You now have a tested Gravity Forms Zoom integration that creates a Zoom meeting from a booking form submission.

The setup uses GravityWP API Connector, a Zoom Server-to-Server OAuth app, and the Zoom Meetings API. API Connector first gets a Zoom access token, then creates the Zoom meeting, then saves the returned meeting details back to Gravity Forms.

This workflow can reduce manual tasks when your team collects meeting requests in WordPress and needs Zoom meetings created automatically.

FAQ

Can Gravity Forms create a Zoom meeting?

Yes. In our test, Gravity Forms created a Zoom meeting through GravityWP API Connector and the Zoom API.

Does this Gravity Forms Zoom integration need Zapier?

No. This setup uses GravityWP API Connector and Zoom’s API. Zapier is not required.

Can I save the Zoom join link in Gravity Forms?

Yes. The tested workflow saved the returned join_url value in a Gravity Forms field.

Can I save the Zoom start URL?

Yes, but keep it hidden. The Zoom start URL is for the host and should not be shown on the public form.

Can this create a Zoom webinar registration?

No. This tutorial creates Zoom meetings. Zoom webinar registration may require different endpoints, scopes, fields, and Zoom plan access.

Can I email the Zoom join link to the booker?

Yes. After the join URL is saved in Gravity Forms, you can use it in a notification email. Test that as a separate step after confirming the meeting creation works.

Can I use this for booking forms?

Yes. This setup works well for booking forms, discovery calls, support appointments, onboarding sessions, and internal meetings.

Proudly powered by WordPress