FooEvents allows you to sell tickets on your own WordPress website to physical and/or virtual events by securely connecting to your Zoom account via the Zoom API and automatically pre-registering attendees for once-off or recurring Zoom meetings and webinars once the order has completed.
A webinar is a virtual, live streaming video event where a keynote speaker, or group of speakers, deliver a presentation to a large audience who participate using interactive tools (polls, Q&A etc). Zoom Video Webinars is an optional add-on to Zoom video conferencing functionality that allow you to host online events with up to 10,000 interactive video participants.
If you’ve already sold tickets to a physical event using FooEvents, you can still convert your event to a virtual event or give attendees access to a meeting/webinar. Click here to jump to the relevant section.
View examples of both free and commercial virtual events which demonstrate how you can use either the standard Zoom meeting or webinar add-on functionality depending on your use case.
Sections #
- Requirements
- Generating Server-to-Server OAuth Credentials
- Migrating from JWT to OAuth
- Scheduling Zoom Meetings and Webinars
- Linking an Event to a Zoom Meeting or Webinar
- Automatically Generate Zoom Meetings and Webinars
- Multi-day Events
- Bookable Events
- Order Status Requirements
- Stock Management
- Display Meeting/Webinar Details on Tickets
- Add Meeting/Webinar Details to Calendar
- Converting Physical into Virtual Events
- Add the Meeting/Webinar Details to Existing Tickets
Requirements
-
- FooEvents for WooCommerce (1.11.27+)
- FooEvents Multi-day (required for recurring events)
- FooEvents Bookings (required for bookable events)
- Zoom Account (paid plan required)
- Zoom video webinar add-on (required for webinars)
Generating Server-to-Server OAuth Credentials
After you have purchased a Zoom plan and added the optional webinar add-on (only required if you host webinars), you will need to generate Server-to-Server OAuth credentials in order to link your Zoom account to FooEvents. This once-off process is easy and should take you less than 5 minutes.
1. Login to the Zoom App Marketplace using the same account details that you use to access your Zoom account.
2. Click on the drop-down menu called Develop in the top right part of the screen and choose Build Server-to-Server App.
3. Enter a name for your new Zoom Server-to-Server app and click Create.
4. You will see a screen containing the newly created OAuth credentials for Account ID, Client ID and Client Secret. You will need these details later in order to finish setting up the Zoom integration with FooEvents.
5. Click on the Continue button to go to the Information tab and provide some basic information about your app. Note: These fields are required but the actual details are not displayed anywhere and they don’t need to be a specific value in order for the integration to work with FooEvents.
6. Click the Scope tab to specify which parts of the Zoom API the OAuth app should have access to.
Click the + Add Scopes button to add the following scopes to your OAuth app.
Tip: Since there could be quite a lot of scopes that need to be selected depending on your use case, an easy way to select them is to copy the scope value into the search bar and then just select the checkbox.
- Meeting
- Expand View all user meetings and select the following scopes for meetings on your own Zoom account:
Scope Description Scope Value View a user’s meetings meeting:read:list_meetings:admin View a meeting’s registrants meeting:read:list_registrants:admin View a meeting meeting:read:meeting:admin - Expand View and manage all user meetings and select the following scopes for meetings on your own Zoom account:
Scope Description Scope Value Update a meeting meeting:update:meeting:admin Update a meeting registrant’s registration status meeting:update:registrant_status:admin Create a meeting for a user meeting:write:meeting:admin Add a registrant to a meeting meeting:write:registrant:admin - If you have sub accounts on your Zoom account, expand View and manage sub account’s user meetings and select the following scopes for meetings on the sub accounts:
Scope Description Scope Value View a user’s meetings meeting:read:list_meetings:master View a meeting’s registrants meeting:read:list_registrants:master View a meeting meeting:read:meeting:master Update a meeting meeting:update:meeting:master Update a meeting registrant’s registration status meeting:update:registrant_status:master Create a meeting for a user meeting:write:meeting:master Add a registrant to a meeting meeting:write:registrant:master - Webinar
- Expand View all user Webinars and select the following scopes for webinars on your own Zoom account:
Scope Description Scope Value View a webinar’s registrants webinar:read:list_registrants:admin View a user’s webinars webinar:read:list_webinars:admin View a webinar webinar:read:webinar:admin - Expand View and manage all user webinars and select the following scopes for webinars on your own Zoom account:
Scope Description Scope Value Update a webinar registrant’s registration status webinar:update:registrant_status:admin Update a webinar webinar:update:webinar:admin Add a registrant to a webinar webinar:write:registrant:admin Create a webinar for a user webinar:write:webinar:admin - If you have sub accounts on your Zoom account, expand View and manage sub account’s user webinars and select the following scopes for webinars on the sub accounts:
Scope Description Scope Value View a webinar’s registrants webinar:read:list_registrants:master View a user’s webinars webinar:read:list_webinars:master View a webinar webinar:read:webinar:master Update a webinar registrant’s registration status webinar:update:registrant_status:master Update a webinar webinar:update:webinar:master Add a registrant to a webinar webinar:write:registrant:master Create a webinar for a user webinar:write:webinar:master - User
- Expand View all user information and select the following scopes:
Scope Description Scope Value View users user:read:list_users:admin View a user user:read:user:admin - If you have sub accounts on your Zoom account, expand View and manage sub account’s user information and select the following scopes:
Scope Description Scope Value View users user:read:list_users:master View a user user:read:user:master
Click the Done button to go back to the Scopes tab where you will see the newly added scopes. Note: You do not need to provide a description of how the app intends to use the scopes under the Scope Description section.
7. Click the Continue button to go to the Activation tab where you will activate the OAuth app.
Click the Activate your app button to activate your Server-to-Server OAuth app.
8. Navigate back to the App Credentials tab, copy the Account ID, Client ID and Client Secret and paste the values into the corresponding boxes in the Zoom Meetings and Webinars section which can be found in the Integration tab in FooEvents Settings.
9. Click the Test Access button to confirm that FooEvents is able to connect to your Zoom account. If everything is setup correctly, you should see a confirmation message indicating that FooEvents was able to connect to your Zoom account successfully.
10. In this optional step you can Fetch Users that are linked to your Zoom account in order to manage which meetings/webinars will be displayed on the Integration tab according to the users/hosts that created them. The default setting will only display meetings/webinars for the user that generated the Server-to-Server OAuth credentials. The second option is useful if you have multiple hosts on your Zoom account and you would like to restrict which meetings/webinars are visible in FooEvents.
Migrating from JWT to OAuth #
If you previously used a JWT API key and secret to integrate FooEvents with Zoom, please note that on June 1, 2023 Zoom will be deprecating (discontinuing) the JWT app type in favour of the Server-to-Server OAuth app type. On the FooEvents Integration Settings screen in your WordPress admin dashboard, you will still see settings for both the JWT API key and secret as well as the server-to-server OAuth credentials. After you have followed the steps above to generate server-to-server OAuth credentials and have tested that your site can successfully connect to Zoom using the OAuth credentials, you can safely delete the values entered for the JWT API key and secret.
Once you have cleared the values of the JWT API key and secret, those settings will no longer display on the Integration tab. If you were only using the JWT app for the FooEvents integration, you can now deactivate the JWT app in your Zoom App Marketplace by clicking Manage at the top of the screen.
Select the JWT app from the list and navigate to the Activation tab.
Click the Deactivate your app button to deactivate the JWT app. The app will no longer be able to invoke any Zoom APIs.
Scheduling Zoom Meetings and Webinars
If you already have an existing Zoom meeting or webinar that you created and scheduled in your Zoom account, you can link it to your event by following the instructions below on linking an event to an existing Zoom meeting or webinar. Alternatively, if you don’t have any existing Zoom meetings and webinars that you would like to link to your events, FooEvents can automatically generate these for you by following the instructions on automatically generating Zoom meetings and webinars.
You can either create a once-off meeting/webinar or a recurring meeting/webinar. If you created a recurring meeting/webinar, attendees will be automatically registered to attend all occurrences of the linked meeting or webinar when they purchase a ticket for your event. If you would like to use booking slots that have a unique Zoom meeting or webinar linked to each slot (consultations, tutoring, telemedicine etc.), you can read more about setting up Zoom integration with Bookable Events.
Linking an Event to an Existing Zoom Meeting or Webinar
Edit the WooCommerce product that you have setup as an event and navigate to the Event Integration tab. Meeting and webinar registration requires that at least the attendee’s first name, last name and email address are captured at checkout. If you want to link a meeting/webinar to your event and the capture attendee details option is not enabled, you will see a notification as well as a link that allows you to enable it without leaving the screen.
Once the capture attendee details option has been enabled, a confirmation notification will be displayed.
You can now link your event to one of your existing scheduled meetings/webinars by selecting it from the drop-down. Additional details about your meeting/webinar will be displayed so that you can confirm that you are linking your event to the correct meeting/webinar.
Automatic attendee registration is required for all your scheduled meetings and webinars. A notification will inform you if the selected meeting/webinar does not have automatic attendee registration enabled. You can enable this option by clicking on the provided link.
If you click on this link, you will see a confirmation message that says automatic attendee registration has been enabled for your meeting/webinar.
Click the Update button at the top right of the screen for the changes to take effect. Your event is now successfully linked to the selected Zoom meeting/webinar.
It’s very important to note is that if you decide to modify the event name, date or time, the currently selected Zoom meetings/webinars will automatically be updated accordingly. This applies to any Zoom meeting or webinar that is linked to your event, not just the ones that were automatically generated.
When attendees purchase tickets on your website using FooEvents, each attendee will automatically be pre-registered for the selected Zoom meeting or webinar. Shortly after checking out, each attendee will receive an email containing their event ticket as well as a confirmation email from Zoom containing the meeting/webinar ID, password and join link.
Automatically Generate Zoom Meetings and Webinars
If you don’t have any existing Zoom meetings or webinars scheduled in your Zoom account, FooEvents can automatically generate a meeting/webinar and link it to your event from the Event Integration tab.
Firstly, choose whether FooEvents should generate a Zoom meeting or webinar when automatically creating and linking a Zoom meeting/webinar to your event. You will then need to choose the user on your Zoom account who will be the host for automatically generated meetings/webinars.
Please note that the Zoom user whose API keys are being used for the integration will need to have scheduling privileges for the user you want to select as the host. If you have multiple users who you might want to auto-generate meetings for then you will need to update each of those user’s scheduling privileges settings to allow the main Zoom user whose API keys are being used to schedule meetings on their behalf. To view these settings, log in to your Zoom account, open the Settings page, open the Meetings tab and then scroll down to the Other section where you will see Schedule Privilege settings. Here you can either provide scheduling privileges to another user to schedule meetings on your behalf, or you can view which other users have granted you privileges to schedule meetings on their behalf.
Depending on your event type, you will be able to choose from various types of Zoom integrations when automatically generating meetings/webinars.
Similar to linking an existing Zoom meeting or webinar to your event, you are presented with a drop-down containing all your existing meetings/webinars. To have the meeting/webinar automatically generated for you, select the “Auto-generate” option in the drop-down. Depending on the type of your event as well as the selected Zoom integration type, example information is displayed from the Zoom meeting/webinar that will be automatically generated. The information that will be used to automatically generate the Zoom meeting/webinar is obtained from the event title, start date and time and end date and time. The duration of the Zoom meeting/webinar is calculated from the start and end time that you selected for your event. If you change any of these values, you can click on the Refresh Example Info button to reflect the changes.
If you’re setting up an event with booking slots, you will need to specify the default duration of auto-generated Zoom meetings/webinars.
To link booking slots to Zoom meetings/webinars, follow the instructions for Bookable Events.
When you’re ready for FooEvents to automatically generate Zoom meetings/webinars and link them to your event, click the Update button at the top right of the screen for the changes to take effect. Once the page has refreshed and you open the Event Integration tab again, you will see that in the drop-down your newly generated Zoom meeting/webinar will be selected in the place of “Auto-generate”.
It’s very important to note is that if you decide to modify the event name, date or time, the currently selected Zoom meetings/webinars will automatically be updated accordingly. This applies to any Zoom meeting or webinar that is linked to your event, not just the ones that were automatically generated.
Multi-day Events
If you have the FooEvents Multi-day plugin installed on your site, you will have the option to choose whether to link an event to a single Zoom meeting/webinar OR specify different Zoom meetings/webinars for each day of the event.
If you link your event to a single Zoom meeting/webinar, please note that the meeting/webinar should be a recurring meeting/webinar where the dates and times coincide with how you have setup your event in FooEvents.
Please note that if you link your multi-day event to a once-off meeting/webinar or the dates and times of a recurring meeting/webinar’s occurrences don’t match the dates and times of your event in FooEvents, the Zoom meeting/webinar won’t be available on all the days of your event.
If you choose to specify different Zoom meetings/webinars for each day of the event, you will have separate meeting/webinar drop-downs according to the number of days that you specified when configuring your multi-day event in FooEvents.
When completing an order that contains a multi-day event, attendees will be automatically registered for each linked Zoom meeting/webinar. Similarly, when canceling an order containing a multi-day event, attendee registrations will be canceled for each linked Zoom meeting/webinar.
Bookable Events
If you have the FooEvents Bookings plugin installed on your site, you will have the option to link unique Zoom meetings and webinars for each booking slot that you create. This allows customers to register for a specific date and time slot which is perfect for use cases such as consultations, tutoring, telemedicine etc. For each booking slot that you would like to link to a Zoom meeting/webinar, check the box next to “Zoom”. You will notice that the time checkbox will also be checked automatically, since Zoom meetings/webinars must have a specific start time.
Similar to linking Zoom meetings and webinars to your event, you can choose an existing Zoom meeting or webinar from the booking slot’s drop-down. Alternatively, you can choose “Auto-generate” which will automatically generate a Zoom meeting or webinar for that particular booking slot.
Click on the Save Changes button or the Update button at the top right of the screen to either link an existing Zoom meeting or webinar to the booking slot (if an existing one was selected in the drop-down) OR automatically generate a new Zoom meeting or webinar and link it to the booking slot (if “Auto-generate” was selected in the drop-down). When the changes have been saved successfully, the booking slot drop-down for the automatically generated Zoom meeting/webinar will be updated with all the information from the newly created meeting/webinar.
It’s very important to note is that if you decide to modify the event name, date or time, the currently selected Zoom meetings/webinars will automatically be updated accordingly. This applies to any Zoom meeting or webinar that is linked to your event, not just the ones that were automatically generated.
Order Status Requirements
Attendees who purchase tickets that are linked to a meeting/webinar will only be automatically pre-registered and receive the Zoom confirmation email if the order status is set to either completed or canceled in WooCommerce. For example, an order might have a status of processing or on hold if you allow attendees to pay later by check/direct deposit/cash on delivery etc., or if their payment is unsuccessful. In this scenario, the order will need to be manually set to completed in WooCommerce before they will be automatically pre-registered for the meeting/webinar and receive the Zoom confirmation email.
Completed Orders #
When an order status is set to completed, all the attendees associated with this particular order will be automatically pre-registered for any linked meetings/webinars. Attendees can only be registered once per meeting/webinar, where the attendee email address is used as the unique identifier. If an attendee’s registration was previously canceled for some reason, they will be registered again once another order has been completed.
Canceled Orders #
If you cancel a completed order that contains one or more events that are linked to a Zoom meeting/webinar, each attendee’s meeting/webinar registration will be automatically canceled too. Please note that if you don’t want to cancel the entire order and only want to cancel and refund a portion of it, you should rather manually cancel these attendees’ registrations by managing the meeting attendees in your Zoom meeting dashboard or the webinar attendees in your Zoom webinar dashboard.
Stock Management
The maximum number of meeting/webinar registrants will be limited according to the Zoom plan that you purchased. In the case of webinars, the number of registrants can be purchased in the following increments 100/500/1000/3000/5000/10000. You can specify a number that is lower than your account’s maximum allowed registrants for individual meetings/webinars if you wish. Please be sure to set your product stock quantities according to these limits, whether it be your account’s limit or the limit you specified for an individual meeting/webinar. This will ensure that ticket sales and meeting/webinar registrations don’t exceed the maximum allowed attendees, and as a result, are not disregarded.
Display Meeting/Webinar Details on Tickets
Attendees automatically receive a confirmation email from Zoom once they have been pre-registered for a meeting/webinar. If you want to display the meeting/webinar details on the event ticket, you can enable this option by editing the WooCommerce product that you have setup as an event and navigating to the Ticket Settings tab.
Enable the Display Zoom meeting/webinar details on ticket option to display the details of all the meetings/webinars linked to the event. These details include the meeting/webinar Topic, Start time, End time, Duration, Recurrence, Meeting ID, Password and Join link.
Add Meeting/Webinar Details to Calendar
If the Display Zoom meeting/webinar details on ticket option is enabled in the Ticket Settings tab, then the meeting/webinar details will also be added to the calendar entry when the add to calendar link (ICS file) is clicked in the ticket.
The same details will be added to the calendar event description as displayed on the ticket for easy reference when the meeting/webinar approaches. Calendar reminders are automatically scheduled for 1 week, 1 day and 1 hour prior to the starting time of the meeting/webinar. These can be modified in the attendee’s calendar application after they’ve added the event to their calendar.
Converting Physical into Virtual Events
If you have already sold tickets to your physical event and want to convert it to a virtual event or you decide to offer Zoom meetings/webinars at a later stage, it’s simple to import a CSV list of attendees into Zoom so that they can gain access to specific meetings/webinars.
Here are the steps for how to export your attendee information from FooEvents:
- Login to your WordPress Admin Area
- Browse to Products in the main menu
- Edit the relevant event product
- Scroll down to the Product Data tabs
- Select the Event Export tab
- Check the optional boxes if you would like to include unpaid tickets and billing details in the export
- Click the Download CSV of attendees button
Once you’ve completed the above steps, follow these instructions to import the attendees for pre-registration in Zoom.
Alternatively, you can turn off registration for the meeting/webinar instead of importing attendees for pre-registration in Zoom. The attendees will still be required to enter their names and email addresses upon joining the webinar. Please keep in mind that if you take this approach you can’t be certain that all attendees purchased access to the event as the webinar will essentially be public and open to anyone with the webinar link.
Add Meeting/Webinar Details to Existing Tickets
You may want to add the meeting/webinar details to your event tickets after they have already been sent out to attendees or you have converted a physical event into a virtual event. This information can be used to guide the attendee through pre-registration as well as the actual meeting/webinar.
In this scenario, we recommend that you first enable the Display Zoom meeting/webinar details on ticket option in the Ticket Settings for the event and then resend the tickets to the attendees as the tickets will now automatically include the Zoom meeting/webinar details.
It’s important to effectively communicate any changes to attendees who have already purchased tickets and provide them with all the necessary information to participate in your meeting/webinar.