GoToWebinar webhooks
Webhooks are methods an external developer can implement to subscribe to real-time events in GoToWebinar. Currently the webhooks are available only for GoToWebinar and can return registrant.added, registrant.joined, webinar.created, and webinar.changed events. This enables an integration to, for instance, update registration or calendar data in real time as organizers add webinars and as registrants enroll and join.
For instructions, see How to use webhooks.
Webhook scenarios
With webhooks, GoToWebinar organizers interested in available events (registrant.added, registrant.joined, webinar.created, or webinar.changed), can subscribe to those events. Each subscription includes a callback URL where event notifications are sent.
The integration developer would typically provide a portal - a page or notification, etc. - to inform the user of the data update or to display the data.
Webhook setup
The major phases of webhooks setup are:
Create a development app
Webhooks are associated with a standard GoTo developer account and product-specific developer app created in the GoToDev site. The developer app must be authenticated against a working GoToWebinar account and a token created.
Setup developer webhooks
Once the developer app is created, the integration developer can create a secret key for a webhook. The key enables the application receiving the data to validate that it came from a trusted source. The developer then creates the webhook and activates it, which makes the webhook persistent in the GoTo system.
Subscribe users
When a webhook is active, you can authenticate and subscribe users to available events in GoToWebinar. Users are subscribed to specific webhooks.
Webhook States
As developer you can manage two states to control whether a given webhook and / or subscription are active. Both webhookState and userSubscriptionState must be ACTIVE to enable webhook events to be captured and sent to user subscriptions; when both states for a given webhook are ACTIVE, the activationState is also ACTIVE. If either state is not ACTIVE, the activationState is INACTIVE.
webhookState
Webhooks are created in an INACTIVE state by default. You must change the webhookState to ACTIVE by sending the "state" argument as "ACTIVE" in the Update Webhook API in order to start the webhook. You can also use the Update Webhook API to set webhooks to INACTIVE as needed.
userSubscriptionState
User subscriptions are created in ACTIVE state. You can change user subscription states can be changed to INACTIVE by sending the "userSubscriptionState" argument as "INACTIVE" in the Create User Subscription API in order to deactivate or reactivate a specific subscription.
activationState
The activationState is ACTIVE only if both webhookState and userSubscriptionState are ACTIVE. It is INACTIVE otherwise.
Webhook Events
Each webhook event returns a specified data set.
registrant.added event
Organizer of webinar will receive this event, if a user registers for the webinar. This event will contain details about registrant.
field | datatype | description |
---|---|---|
eventName | string | registrant.added |
eventVersion | string | 1.0.0 |
product | string | g2w |
eventKey | string | unique alphanumeric identifier for event |
firstName | string | registrant's first name |
lastName | string | registrant's last name |
string | registrant's email | |
phone | string | registrant's phone number |
address | string | registrant's address |
city | string | registrant's city |
state | string | registrant's state or region |
country | string | registrant's country |
zipCode | string | registrant's postal code |
organization | string | registrant's company name |
jobTitle | string | registrant's role |
Industry | string | category of company |
comments | string | text field for notes |
registrationDate | string | timestamp of registration completion by registrant (ISO) |
numberOfEmployees | string | Number of employees in the registrant’s organization. Can be: ‘1-20’, ’21-50’, ’51-100’, ‘101-250’, ‘251-500’, ‘501-1,000’, ‘1,001-5,000’, ‘5,001-10,000’, ‘More than 10,000’ |
purchasingRole | string | Role of the registrant as a purchaser. Can be: ‘Decision Maker’, ‘Evaluator/Recommender’, ‘Influencer’, ‘Not involved’ |
purchasingTimeFrame | string | The anticipated purchasing timeframe. Can be: ‘Within a month’, ‘1-3 months’, ‘4-6 months’, ‘More than 6 months’, ‘No timeframe’ |
status | string | This can be "Waiting", "Approved", "Cancelled" or "Denied" |
webinarKey | long | unique numeric webinar identifier |
webinarTitle | string | name of the webinar |
experienceType | string | CLASSIC, "SIMULIVE" or "BROADCAST" |
recurrenceType | string | single_session, "series" or "sequence" |
webinarCreatorKey | long | unique nueric ID of organizer who created the webinar |
registrationSource | string | Source from where the registrants land on the registration page. Uses values set in Share Your Webinar in the GoToWebinar Dashboard. |
joinUrl | string | Webinar join URL. Available only if status is Approved. |
registrantKey | long | unique numeric identifier for registrant assigned by GoToWebinar. |
timestamp | string | event generation timestamp (ISO) |
responses | string | Value will be a list of custom questions asked by the organizer, the question type and the corresponding list of answers given by the registrants during registration in the following format - [questionText, questionType,[answerText]]. The questionType can be "MULTIPLE_CHOICE" ,"or "SHORT_ANSWER". |
registrant.joined event
The organizer of webinar will receive this event if webinar registrant joins the webinar.
field | datatype | description |
---|---|---|
eventName | string | registrant.joined |
eventVersion | string | 1.0.0 |
product | string | g2w |
eventKey | string | unique alphanumeric identifier for event |
firstName | string | registrant's first name |
lastName | string | registrant's last name |
string | registrant's email | |
webinarKey | long | unique numeric webinar identifier |
sessionKey | long | unique numeric session identifier |
webinarTitle | string | name of the webinar |
experienceType | string | CLASSIC, "SIMULIVE" or "BROADCAST" |
recurrenceType | string | single_session, "series" or "sequence" |
registrantKey | long | unique numeric identifier for registrant |
webinarCreatorKey | long | unique numeric identifier for organizer who created the webinar |
joinTime | string | timestamp of session join (ISO) |
timestamp | string | event generation timestamp (ISO) |
webinar.created
Organizer of the webinar will receive this event on creating a webinar.
field | datatype | description |
---|---|---|
eventName | string | webinar.created |
eventVersion | string | 1.0.0 |
accountKey | long | account to which the organizer who created the webinar belongs |
organizerKey | long | unique numeric ID of the organizer who created the webinar |
product | string | g2w |
eventKey | string | unique alphanumeric identifier for event |
webinarKey | long | unique numeric webinar identifier |
webinarTitle | string | name of the webinar |
description | string | description of the webinar |
experienceType | string | CLASSIC, "SIMULIVE" or "BROADCAST" |
recurrenceType | string | single_session, "series" or "sequence" |
recurrenceKey | long | Unique identifier which correlates series webinars, null for other types |
webinarCreationDate | string | timestamp of webinar create (ISO) |
status | string | NEW |
times: | array | Value will be a list of [start time, end time] of webinar sessions |
startTime | string | scheduled webinar start time (ISO) |
endTime | string | scheduled webinar end time (ISO) |
timeZone | string | webinar time zone |
webinar.changed
Organizer of webinar will receive this event on updating a existing webinar.
field | datatype | description |
---|---|---|
eventName | string | webinar.changed |
eventVersion | string | 1.0.0 |
accountKey | long | unique numeric identifier for the account to which the organizer belongs |
organizerKey | long | unique numeric identifier for the organizer who created the webinar |
product | string | g2w |
eventKey | string | unique alphanumeric identifier for event |
webinarKey | long | unique numeric webinar identifier |
webinarTitle | string | name of the webinar |
description | string | description of the webinar |
experienceType | string | CLASSIC, "SIMULIVE" or "BROADCAST" |
recurrenceType | string | single_session, "series" or "sequence" |
status | string | Value will be "UPDATED" or "DELETED" |
times: | array | Value will be a list of [start time, end time] of webinar sessions |
startTime | string | scheduled webinar start time (ISO) |
endTime | string | scheduled webinar end time (ISO) |
timeZone | string | webinar time zone |
- How do I get started?
- How to create a developer account
- How to create an OAuth client
- How to obtain an OAuth access token
- How to obtain an OAuth access token (in Node.js)
- How to Obtain and Use Refresh Tokens
- Migrating to New Token Retrieval with authentication.logmeininc.com
- How to use GoToConnect API to fetch account users and lines
- How to create, update and delete account users via Admin API
- Call Events Screen Pop Tutorial
- Send SMS tutorial
- How to use Voice Admin APIs
- How to create a channel and receiving notifications from GoTo services
- How to subscribe to and get call events
- Fetching Call Events Reports
- Make and Receive Calls using the Devices and Calls API
- GoTo Connect APIs Host Migration
- GoToWebinar webhooks
- How to use GoToWebinar webhooks
- What API information is available for GoToMyPC?
- How to Setup an Integration with Central
- How to Setup an Integration with Rescue
- Rescue iOS and Andriod SDK
- Introduction
- Java SDK
- .NET SDK
- Direct login migration
- How to use Postman API collections
- How much do the GoTo APIs cost?
- How do I get support for the APIs?
- Rate Limiting