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.

Webhooks setup and run scenarios

Webhooks are created and setup through the GoTo Developer site.

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 LogMeIn 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 LogMeIn 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
email 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.
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
email 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