GoToWebinar · AsyncAPI Specification

Gotowebinar Webhooks

Version

View Spec View on GitHub AttendeesCollaborationCommunicationsEventMeetingsRegistrantsSessionsSurveysVideo ConferencingVirtual EventsWebhookWebinarsAsyncAPIEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-13'
method: searched
source: https://developer.goto.com/guides/GoToWebinar/07_HOW_WebHooksOverview/
docs:
- https://developer.goto.com/guides/GoToWebinar/07_HOW_WebHooksOverview/
- https://developer.goto.com/guides/GoToWebinar/08_HOW_webhooks/
spec_type: Webhooks
asyncapi:
  published: false
  note: >-
    GoTo publishes no AsyncAPI document for GoTo Webinar. The event surface is
    real and well documented in prose plus a management REST API, but there is
    no machine-readable event contract — no AsyncAPI, no JSON Schema per event,
    no CloudEvents envelope. This file captures the published webhook catalog
    verbatim from GoTo's own documentation; it is NOT an AsyncAPI and nothing
    here was authored on GoTo's behalf.
summary: >-
  Webhooks are GoTo Webinar's only push surface, and GoTo notes they are
  available for GoTo Webinar ONLY across the whole product portfolio. Five
  events are published. Delivery is to a developer-registered callback URL, with
  a shared secret key for origin validation, and end users are subscribed
  individually. Management is fully API-driven — the Webhooks tag of the
  GoToWebinarV2 OpenAPI carries 12 operations for creating, updating, listing
  and deleting both webhooks and per-user subscriptions.
transport:
  mechanism: HTTP callback
  callback_url: developer-supplied per webhook
  signing:
    supported: true
    mechanism: shared secret key
    operation: createSecretKey
    note: >-
      "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 docs do not publish the signature algorithm, the
      header name, or a verification example — an integrator cannot implement
      verification from the published material alone.
  retries:
    documented: false
  ordering:
    documented: false
state_model:
  fields: [webhookState, userSubscriptionState, activationState]
  rules:
  - webhookState defaults to INACTIVE on creation; must be set to ACTIVE via updateWebhooks before any event is delivered.
  - userSubscriptionState defaults to ACTIVE on creation; set to INACTIVE via createUserSubscriptions to pause a specific subscriber.
  - activationState is derived — ACTIVE only when webhookState AND userSubscriptionState are both ACTIVE, otherwise INACTIVE.
  gotcha: >-
    A newly created webhook delivers nothing until it is explicitly activated.
    This is the most common first-integration failure and it is a two-call
    sequence, not one.
events:
- name: registrant.added
  version: 1.0.0
  product: g2w
  description: Fired to the webinar organizer when a user registers for the webinar. Carries the full registrant record.
  key_fields: [eventName, eventVersion, product, eventKey, firstName, lastName, email, phone, address, city, state, country, zipCode, organization, jobTitle, Industry, comments, registrationDate, numberOfEmployees, purchasingRole, purchasingTimeFrame, status, webinarKey, webinarTitle, experienceType, recurrenceType, webinarCreatorKey, registrationSource, joinUrl, registrantKey, timestamp, responses]
  notes:
  - 'status is one of: Waiting, Approved, Cancelled, Denied.'
  - joinUrl is present only when status is Approved.
  - responses carries custom registration questions as [questionText, questionType, [answerText]] with questionType MULTIPLE_CHOICE or SHORT_ANSWER.
  - registrationSource reflects the Share Your Webinar values set in the GoTo Webinar dashboard — this is the lead-attribution field.
- name: registrant.joined
  version: 1.0.0
  product: g2w
  description: Fired to the organizer when a registrant actually joins the live session.
  key_fields: [eventName, eventVersion, product, eventKey, firstName, lastName, email, webinarKey, sessionKey, webinarTitle, experienceType, recurrenceType, registrantKey, webinarCreatorKey, joinTime, timestamp]
- name: webinar.created
  version: 1.0.0
  product: g2w
  description: Fired to the organizer when a webinar is created.
  key_fields: [eventName, eventVersion, accountKey, organizerKey, product, eventKey, webinarKey, webinarTitle, description, experienceType, recurrenceType, recurrenceKey, webinarCreationDate, status, times, startTime, endTime, timeZone]
  notes:
  - status is always NEW.
  - recurrenceKey correlates series webinars and is null for other types.
  - times is a list of [startTime, endTime] pairs, one per session.
- name: webinar.changed
  version: 1.0.0
  product: g2w
  description: Fired to the organizer when an existing webinar is updated or deleted.
  key_fields: [eventName, eventVersion, accountKey, organizerKey, product, eventKey, webinarKey, webinarTitle, description, experienceType, recurrenceType, status, times, startTime, endTime, timeZone]
  notes:
  - 'status is UPDATED or DELETED — deletion is delivered on the changed event, not a separate webinar.deleted event.'
- name: survey.submitted
  version: 1.0.0
  product: g2w
  added: '2026-06-09'
  description: Fired to the organizer when a webinar attendee submits a post-session survey.
  key_fields: [eventName, eventVersion, product, eventKey, timestamp, webinarKey, webinarTitle, webinarCreatorKey, experienceType, sessionKey, registrantKey, surveyName, responses]
  notes:
  - responses uses the same shape as registrant.added, with questionType one of MULTIPLE_CHOICE, MULTIPLE_ANSWER, RATING, SHORT_ANSWER.
  - The newest addition to the event surface — see changelog/goto-webinar-changelog.yml.
common_fields:
  eventName: string — the event type, matching the name above
  eventVersion: string — currently 1.0.0 on every event
  product: string — always "g2w" for GoTo Webinar
  eventKey: string — unique alphanumeric identifier for the event instance, usable for consumer-side deduplication
  timestamp: string — ISO 8601 event generation time
management_api:
  spec: openapi/goto-webinar-webhooks-api-openapi.yml
  operations:
  - createSecretKey
  - createWebhooks
  - updateWebhooks
  - getWebhooks
  - getWebhook
  - deleteWebhooks
  - createUserSubscriptions
  - updateUserSubscriptions
  - getUserSubscriptions
  - getUserSubscription
  - deleteUserSubscriptions
gaps:
- No AsyncAPI or JSON Schema for any of the five event payloads — field lists exist only as HTML tables in a guide.
- The signature/verification scheme for the secret key is not published (no algorithm, no header name, no example).
- No retry, backoff, ordering or at-least-once/at-most-once delivery semantics are documented.
- No replay or event-history endpoint; a missed delivery cannot be recovered from GoTo.
- eventVersion exists on every payload but no version-negotiation or evolution policy is published.

Work with this as data

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"
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.