Home
GoToWebinar
GoToWebinar Webhook Events
GoToWebinar Webhook Events
Version 1.0.0
Outbound webhook events delivered by the GoToWebinar webhook infrastructure to a developer-supplied callback URL. All events are HTTP POSTs signed via the `X-Webhook-Signature` header so receivers can validate that the event was sent by LogMeIn webhook infrastructure and not a third party.
View Spec
View on GitHub
Attendees Collaboration Communications Event Meetings Registrants Sessions Surveys Video Conferencing Virtual Events Webhook Webinars AsyncAPI Events Webhooks
Channels
registrant.added
subscribe onRegistrantAdded
Receive a registrant.added event.
Triggered when a user registers for a webinar.
registrant.joined
subscribe onRegistrantJoined
Receive a registrant.joined event.
Triggered when a registrant joins a webinar session.
webinar.created
subscribe onWebinarCreated
Receive a webinar.created event.
Triggered when an organizer creates a new webinar.
webinar.changed
subscribe onWebinarChanged
Receive a webinar.changed event.
Triggered when an organizer updates or deletes an existing webinar.
Messages
✉
RegistrantAdded
Registrant Added
✉
RegistrantJoined
Registrant Joined
✉
WebinarCreated
Webinar Created
✉
WebinarChanged
Webinar Changed
Servers
https
callback
https://your-domain.example.com/gotowebinar/callback
Developer-supplied callback URL registered on the webhook.
AsyncAPI Specification
asyncapi: 2.6.0
info:
title: GoToWebinar Webhook Events
version: '1.0.0'
description: |
Outbound webhook events delivered by the GoToWebinar webhook infrastructure
to a developer-supplied callback URL. All events are HTTP POSTs signed via
the `X-Webhook-Signature` header so receivers can validate that the event
was sent by LogMeIn webhook infrastructure and not a third party.
contact:
name: GoTo Developer Support
email: developer-support@goto.com
url: https://developer.goto.com/support
servers:
callback:
url: https://your-domain.example.com/gotowebinar/callback
protocol: https
description: Developer-supplied callback URL registered on the webhook.
defaultContentType: application/json
channels:
registrant.added:
description: Triggered when a user registers for a webinar.
subscribe:
operationId: onRegistrantAdded
summary: Receive a registrant.added event.
message:
$ref: '#/components/messages/RegistrantAdded'
registrant.joined:
description: Triggered when a registrant joins a webinar session.
subscribe:
operationId: onRegistrantJoined
summary: Receive a registrant.joined event.
message:
$ref: '#/components/messages/RegistrantJoined'
webinar.created:
description: Triggered when an organizer creates a new webinar.
subscribe:
operationId: onWebinarCreated
summary: Receive a webinar.created event.
message:
$ref: '#/components/messages/WebinarCreated'
webinar.changed:
description: Triggered when an organizer updates or deletes an existing webinar.
subscribe:
operationId: onWebinarChanged
summary: Receive a webinar.changed event.
message:
$ref: '#/components/messages/WebinarChanged'
components:
messageTraits:
SignedWebhook:
headers:
type: object
properties:
X-Webhook-Signature:
type: string
description: HMAC signature for the payload, computed with the webhook secretKey.
Content-Type:
type: string
enum: [application/json]
messages:
RegistrantAdded:
name: registrant.added
title: Registrant Added
traits:
- $ref: '#/components/messageTraits/SignedWebhook'
payload:
type: object
required: [eventName, eventVersion, product, eventKey, webinarKey, registrantKey, email]
properties:
eventName: { type: string, enum: [registrant.added] }
eventVersion: { type: string, example: '1.0.0' }
product: { type: string, enum: [g2w] }
eventKey: { type: string }
firstName: { type: string }
lastName: { type: string }
email: { type: string, format: email }
phone: { type: string }
organization: { type: string }
jobTitle: { type: string }
industry: { type: string }
comments: { type: string }
registrationDate: { type: string, format: date-time }
status: { type: string }
webinarKey: { type: string }
webinarTitle: { type: string }
experienceType: { type: string }
recurrenceType: { type: string }
webinarCreatorKey: { type: string }
registrationSource: { type: string }
joinUrl: { type: string, format: uri }
registrantKey: { type: string }
timestamp: { type: string, format: date-time }
responses:
type: array
items:
type: object
properties:
question: { type: string }
answer: { type: string }
RegistrantJoined:
name: registrant.joined
title: Registrant Joined
traits:
- $ref: '#/components/messageTraits/SignedWebhook'
payload:
type: object
required: [eventName, eventVersion, product, eventKey, webinarKey, sessionKey, registrantKey]
properties:
eventName: { type: string, enum: [registrant.joined] }
eventVersion: { type: string, example: '1.0.0' }
product: { type: string, enum: [g2w] }
eventKey: { type: string }
firstName: { type: string }
lastName: { type: string }
email: { type: string, format: email }
webinarKey: { type: string }
sessionKey: { type: string }
webinarTitle: { type: string }
experienceType: { type: string }
recurrenceType: { type: string }
registrantKey: { type: string }
webinarCreatorKey: { type: string }
joinTime: { type: integer, description: Unix millisecond timestamp. }
timestamp: { type: string, format: date-time }
WebinarCreated:
name: webinar.created
title: Webinar Created
traits:
- $ref: '#/components/messageTraits/SignedWebhook'
payload:
type: object
required: [eventName, eventVersion, product, eventKey, webinarKey]
properties:
eventName: { type: string, enum: [webinar.created] }
eventVersion: { type: string, example: '1.0.0' }
accountKey: { type: string }
organizerKey: { type: string }
product: { type: string, enum: [g2w] }
eventKey: { type: string }
webinarKey: { type: string }
webinarTitle: { type: string }
description: { type: string }
experienceType: { type: string }
recurrenceType: { type: string }
recurrenceKey: { type: string }
webinarCreationDate: { type: string, format: date-time }
status: { type: string, enum: [NEW] }
times:
type: array
items:
type: object
properties:
startTime: { type: string, format: date-time }
endTime: { type: string, format: date-time }
timeZone: { type: string }
WebinarChanged:
name: webinar.changed
title: Webinar Changed
traits:
- $ref: '#/components/messageTraits/SignedWebhook'
payload:
type: object
required: [eventName, eventVersion, product, eventKey, webinarKey]
properties:
eventName: { type: string, enum: [webinar.changed] }
eventVersion: { type: string, example: '1.0.0' }
accountKey: { type: string }
organizerKey: { type: string }
product: { type: string, enum: [g2w] }
eventKey: { type: string }
webinarKey: { type: string }
webinarTitle: { type: string }
description: { type: string }
experienceType: { type: string }
recurrenceType: { type: string }
status: { type: string, enum: [UPDATED, DELETED] }
times:
type: array
items:
type: object
properties:
startTime: { type: string, format: date-time }
endTime: { type: string, format: date-time }
timeZone: { type: string }
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/gotowebinar-webhooks-asyncapi"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms .
A second provider on the same verified email joins the account you already have.