# GoTo Webinar

> Schedule GoTo webinars, register attendees and panelists, and read attendance, polls and questions back.

App · Video Conferencing · 20 actions. Web page: https://docs.lodol.com/docs/integrations/gotowebinar

## Actions

### Cancel a webinar

Cancel a webinar, optionally emailing its registrants.

**Inputs**

- Webinar (`webinar_key`, text, required): The webinar to act on. Pick one, or paste a webinar key copied from its GoTo Webinar URL.
- Email registrants (`send_cancellation_emails`, true/false): Tell everyone registered that it is cancelled. Default: `false`.
- Cancel every session (`delete_all`, true/false): For a series, cancel all of its remaining sessions rather than just this one. Default: `true`.

**Outputs**

- `cancelled` (true/false)
- `webinar_key` (text)

**Example output**

```json
{
  "cancelled": true,
  "webinar_key": "9876543210987654321"
}
```

### Copy a webinar

Create a new webinar from an existing one, at a new date and time.

**Inputs**

- Webinar (`webinar_key`, text, required): The webinar to act on. Pick one, or paste a webinar key copied from its GoTo Webinar URL.
- New title (`subject`, text, required): The title of the copy.
- Starts at (`start_time`, date and time, required): When the webinar starts.
- Ends at (`end_time`, date and time, required): When the webinar ends.
- Description (`description`, text): A description for the copy.
- Extra sessions (`additional_sessions`, list): Extra dates for a series, each an object with 'start_time' and 'end_time'. Leave empty for a one-off webinar.
- Time zone (`time_zone`, text): The time zone the webinar is held in, such as America/New_York. Leave blank to use the organizer's own time zone.
- Webinar type (`webinar_type`, text): Whether this is a one-off webinar or a series. A series needs at least one extra session. One of: `single_session` (Single session — one date and time), `series` (Series — the same webinar on several dates). Default: `single_session`.
- Language (`locale`, text): The language of the registration and confirmation pages. One of: `en_US` (English (US)), `de_DE` (German), `es_ES` (Spanish), `fr_FR` (French), `it_IT` (Italian), `zh_CN` (Chinese (Simplified)).
- Available on demand (`is_ondemand`, true/false): Let people watch the recording after the event.

**Outputs**

- `source_webinar_key` (text)
- `subject` (text)
- `webinar_key` (text)

**Example output**

```json
{
  "source_webinar_key": "9876543210987654321",
  "subject": "Product launch (repeat)",
  "webinar_key": "1111111111111111111"
}
```

### Create a webinar

Schedule a new webinar and get back its registration key.

**Inputs**

- Title (`subject`, text, required): The webinar's title (up to 128 characters).
- Starts at (`start_time`, date and time, required): When the webinar starts.
- Ends at (`end_time`, date and time, required): When the webinar ends.
- Description (`description`, text): A short description (up to 2048 characters).
- Time zone (`time_zone`, text): The time zone the webinar is held in, such as America/New_York. Leave blank to use the organizer's own time zone.
- Webinar type (`webinar_type`, text): Whether this is a one-off webinar or a series. A series needs at least one extra session. One of: `single_session` (Single session — one date and time), `series` (Series — the same webinar on several dates). Default: `single_session`.
- Extra sessions (`additional_sessions`, list): Extra dates for a series, each an object with 'start_time' and 'end_time'. Leave empty for a one-off webinar.
- Language (`locale`, text): The language of the registration and confirmation pages. One of: `en_US` (English (US)), `de_DE` (German), `es_ES` (Spanish), `fr_FR` (French), `it_IT` (Italian), `zh_CN` (Chinese (Simplified)).
- Experience (`experience_type`, text): How attendees take part in the webinar. One of: `CLASSIC` (Classic — a standard webinar), `BROADCAST` (Broadcast — attendees watch in their browser), `SIMULIVE` (Simulive — play a recording as a live event). Default: `CLASSIC`.
- Require a password (`is_password_protected`, true/false): Ask attendees for a password before they join.
- Available on demand (`is_ondemand`, true/false): Let people watch the recording after the event.
- Send confirmation emails (`confirmation_email`, true/false): Email each registrant a confirmation when they sign up.
- Send reminder emails (`reminder_email`, true/false): Email registrants a reminder before the webinar starts.
- Send follow-up to absentees (`absentee_followup_email`, true/false): Email registrants who did not attend afterwards.

**Outputs**

- `recurrence_key` (text)
- `subject` (text)
- `webinar_key` (text)

**Example output**

```json
{
  "subject": "Product launch",
  "webinar_key": "9876543210987654321"
}
```

### Get a registrant

Read one registrant, including every field and custom answer they gave.

**Inputs**

- Webinar (`webinar_key`, text, required): The webinar to act on. Pick one, or paste a webinar key copied from its GoTo Webinar URL.
- Registrant key (`registrant_key`, text, required): The registrant to read. Use List registrants to find one.

**Outputs**

- `address` (text)
- `city` (text)
- `country` (text)
- `email` (text)
- `employee_count` (text)
- `first_name` (text)
- `implementation_time_frame` (text)
- `industry` (text)
- `job_title` (text)
- `join_url` (text)
- `last_name` (text)
- `number_of_employees` (text)
- `organization` (text)
- `phone` (text)
- `purchasing_role` (text)
- `purchasing_time_frame` (text)
- `questions_and_comments` (text)
- `registrant_key` (text)
- `registration_date` (text)
- `responses` (list)
- `source` (text)
- `state` (text)
- `status` (text)
- `time_zone` (text)
- `type` (text)
- `unsubscribed` (true/false)
- `webinar_key` (text)
- `zip_code` (text)

**Example output**

```json
{
  "email": "sam@example.com",
  "first_name": "Sam",
  "job_title": "Analyst",
  "join_url": "https://attendee.gotowebinar.com/join/1",
  "last_name": "Attendee",
  "organization": "Example Ltd",
  "registrant_key": "2222222222222222222",
  "registration_date": "2026-11-20T09:00:00Z",
  "responses": [
    {
      "answer": "A colleague",
      "question": "How did you hear about us?"
    }
  ],
  "status": "APPROVED",
  "time_zone": "America/New_York",
  "type": "REGULAR",
  "webinar_key": "9876543210987654321"
}
```

### Get a webinar

Read one webinar's details, including how many people have registered.

**Inputs**

- Webinar (`webinar_key`, text, required): The webinar to act on. Pick one, or paste a webinar key copied from its GoTo Webinar URL.

**Outputs**

- `account_key` (text)
- `description` (text)
- `experience_type` (text)
- `impromptu` (true/false)
- `in_session` (true/false)
- `is_password_protected` (true/false)
- `locale` (text)
- `number_of_registrants` (number)
- `organizer_email` (text)
- `organizer_key` (text)
- `organizer_name` (text)
- `recurrence_period` (text)
- `registration_limit` (number)
- `registration_url` (text)
- `subject` (text)
- `time_zone` (text)
- `times` (list)
- `type` (text)
- `webinar_id` (text)
- `webinar_key` (text)

**Example output**

```json
{
  "description": "A look at what is new.",
  "experience_type": "classic",
  "in_session": false,
  "is_password_protected": false,
  "locale": "en_US",
  "number_of_registrants": 12,
  "organizer_email": "organizer@example.com",
  "organizer_name": "Dana Organizer",
  "registration_limit": 500,
  "registration_url": "https://attendee.gotowebinar.com/register/1",
  "subject": "Product launch",
  "time_zone": "America/New_York",
  "times": [
    {
      "end_time": "2026-12-01T18:00:00Z",
      "start_time": "2026-12-01T17:00:00Z"
    }
  ],
  "type": "single_session",
  "webinar_id": "123456789",
  "webinar_key": "9876543210987654321"
}
```

### Get a webinar's start URL

Get the link that starts a webinar as its organizer, to send to a presenter.

**Inputs**

- Webinar (`webinar_key`, text, required): The webinar to act on. Pick one, or paste a webinar key copied from its GoTo Webinar URL.

**Outputs**

- `start_url` (text)
- `webinar_key` (text)

**Example output**

```json
{
  "start_url": "https://global.gotowebinar.com/mainstage/start/1",
  "webinar_key": "9876543210987654321"
}
```

### Get registration fields

Read a webinar's registration form: its custom questions, their answer keys, and the standard fields it asks for.

**Inputs**

- Webinar (`webinar_key`, text, required): The webinar to act on. Pick one, or paste a webinar key copied from its GoTo Webinar URL.

**Outputs**

- `count` (number)
- `fields` (list)
- `questions` (list)
- `webinar_key` (text)

**Example output**

```json
{
  "count": 2,
  "fields": [
    {
      "field": "organization",
      "max_size": 128,
      "required": false
    }
  ],
  "questions": [
    {
      "answers": [
        {
          "answer": "A colleague",
          "answer_key": "4444444444444444444"
        }
      ],
      "max_size": 1000,
      "question": "How did you hear about us?",
      "question_key": "3333333333333333333",
      "required": false,
      "type": "multipleChoice"
    }
  ],
  "webinar_key": "9876543210987654321"
}
```

### Get webinar performance

Read attendance, poll and survey figures for every session of a webinar that has been run.

**Inputs**

- Webinar (`webinar_key`, text, required): The webinar to act on. Pick one, or paste a webinar key copied from its GoTo Webinar URL.

**Outputs**

- `count` (number)
- `sessions` (list)
- `webinar_key` (text)

**Example output**

```json
{
  "count": 1,
  "sessions": [
    {
      "attendance": {
        "average_attendance_time_seconds": 2100.0,
        "average_attentiveness": 81.0,
        "average_interest_rating": 72.0,
        "percentage_attendance": 58.3,
        "registrant_count": 12
      },
      "polls_and_surveys": {
        "percentage_polls_completed": 66.0,
        "percentage_surveys_completed": 40.0,
        "poll_count": 2,
        "questions_asked": 4,
        "survey_count": 1.0
      },
      "session_info": {
        "end_time": "2026-12-01T18:00:00Z",
        "experience_type": "CLASSIC",
        "recurrence_period": "single_session",
        "registration_email_opened_count": "8",
        "registration_link_clicked_count": "5",
        "session_key": "1234567890123456789",
        "start_time": "2026-12-01T17:00:00Z",
        "time_zone": "America/New_York",
        "webinar_id": "123456789",
        "webinar_name": "Product launch"
      },
      "session_key": "1234567890123456789"
    }
  ],
  "webinar_key": "9876543210987654321"
}
```

### Invite panelists

Invite one or more panelists to a webinar and get back their join links.

**Inputs**

- Webinar (`webinar_key`, text, required): The webinar to act on. Pick one, or paste a webinar key copied from its GoTo Webinar URL.
- Panelists (`panelists`, list, required): The people to invite. Each entry needs a 'name' and an 'email'.

**Outputs**

- `count` (number)
- `panelists` (list)
- `webinar_key` (text)

**Example output**

```json
{
  "count": 1,
  "panelists": [
    {
      "email": "ada@example.com",
      "join_link": "https://global.gotowebinar.com/join/1",
      "name": "Ada Panelist",
      "panelist_key": "6666666666666666666"
    }
  ],
  "webinar_key": "9876543210987654321"
}
```

### List panelists

List a webinar's panelists and their join links.

**Inputs**

- Webinar (`webinar_key`, text, required): The webinar to act on. Pick one, or paste a webinar key copied from its GoTo Webinar URL.

**Outputs**

- `count` (number)
- `panelists` (list)
- `webinar_key` (text)

**Example output**

```json
{
  "count": 1,
  "panelists": [
    {
      "email": "ada@example.com",
      "join_link": "https://global.gotowebinar.com/join/1",
      "name": "Ada Panelist",
      "panelist_key": "6666666666666666666"
    }
  ],
  "webinar_key": "9876543210987654321"
}
```

### List registrants

List everyone registered for a webinar.

**Inputs**

- Webinar (`webinar_key`, text, required): The webinar to act on. Pick one, or paste a webinar key copied from its GoTo Webinar URL.
- Page (`page`, number): Which page of results to read. The first page is 0. From 0 to 10000.
- Results per page (`limit`, number): How many results to read at once (up to 200). From 1 to 200.

**Outputs**

- `count` (number)
- `limit` (number)
- `page` (number)
- `page_size` (number)
- `registrants` (list)
- `total` (number)
- `webinar_key` (text)

**Example output**

```json
{
  "count": 1,
  "limit": 20,
  "page": 0,
  "page_size": 1,
  "registrants": [
    {
      "email": "sam@example.com",
      "first_name": "Sam",
      "join_url": "https://attendee.gotowebinar.com/join/1",
      "last_name": "Attendee",
      "registrant_key": "2222222222222222222",
      "registration_date": "2026-11-20T09:00:00Z",
      "status": "APPROVED",
      "time_zone": "America/New_York"
    }
  ],
  "total": 1,
  "webinar_key": "9876543210987654321"
}
```

### List session attendees

List everyone who attended one past session.

**Inputs**

- Webinar (`webinar_key`, text, required): The webinar to act on. Pick one, or paste a webinar key copied from its GoTo Webinar URL.
- Session key (`session_key`, text, required): A past session of that webinar. Sessions only exist once a webinar has been run: use List webinar sessions to find one.

**Outputs**

- `attendees` (list)
- `count` (number)
- `session_key` (text)
- `webinar_key` (text)

**Example output**

```json
{
  "attendees": [
    {
      "attendance": [
        {
          "join_time": "2026-12-01T17:01:00Z",
          "leave_time": "2026-12-01T17:41:00Z"
        }
      ],
      "attendance_time_in_seconds": 2400,
      "email": "attendee@example.com",
      "first_name": "Sam",
      "last_name": "Attendee",
      "registrant_key": "2222222222222222222",
      "session_key": "1234567890123456789"
    }
  ],
  "count": 1,
  "session_key": "1234567890123456789",
  "webinar_key": "9876543210987654321"
}
```

### List session polls

Read the poll answers collected during a past session.

**Inputs**

- Webinar (`webinar_key`, text, required): The webinar to act on. Pick one, or paste a webinar key copied from its GoTo Webinar URL.
- Session key (`session_key`, text, required): A past session of that webinar. Sessions only exist once a webinar has been run: use List webinar sessions to find one.

**Outputs**

- `count` (number)
- `polls` (list)
- `session_key` (text)
- `webinar_key` (text)

**Example output**

```json
{
  "count": 1,
  "polls": [
    {
      "number_of_responses": 6,
      "question": "How did you hear about us?",
      "responses": [
        {
          "percentage": 50.0,
          "text": "A colleague"
        },
        {
          "percentage": 50.0,
          "text": "Search"
        }
      ]
    }
  ],
  "session_key": "1234567890123456789",
  "webinar_key": "9876543210987654321"
}
```

### List session questions

Read the questions attendees asked during a past session, and the answers they were given.

**Inputs**

- Webinar (`webinar_key`, text, required): The webinar to act on. Pick one, or paste a webinar key copied from its GoTo Webinar URL.
- Session key (`session_key`, text, required): A past session of that webinar. Sessions only exist once a webinar has been run: use List webinar sessions to find one.

**Outputs**

- `count` (number)
- `questions` (list)
- `session_key` (text)
- `webinar_key` (text)

**Example output**

```json
{
  "count": 1,
  "questions": [
    {
      "answers": [
        {
          "answer": "Yes, by email tomorrow.",
          "answer_time": "2026-12-01T17:23:00Z",
          "answered_by": "Dana Organizer",
          "answerer_email": "organizer@example.com",
          "answerer_role": "ORGANIZER"
        }
      ],
      "asked_by": "attendee@example.com",
      "asker_key": "5555555555555555555",
      "date_asked": "2026-12-01T17:22:00Z",
      "question": "Will the slides be shared?"
    }
  ],
  "session_key": "1234567890123456789",
  "webinar_key": "9876543210987654321"
}
```

### List webinar attendees

List everyone who attended any session of a webinar, with how long they stayed.

**Inputs**

- Webinar (`webinar_key`, text, required): The webinar to act on. Pick one, or paste a webinar key copied from its GoTo Webinar URL.
- Page (`page`, number): Which page of results to read. The first page is 0. From 0 to 10000.
- Results per page (`size`, number): How many results to read at once (up to 200). From 1 to 200.

**Outputs**

- `attendees` (list)
- `count` (number)
- `page` (object)
- `webinar_key` (text)

**Example output**

```json
{
  "attendees": [
    {
      "attendance": [
        {
          "join_time": "2026-12-01T17:01:00Z",
          "leave_time": "2026-12-01T17:41:00Z"
        }
      ],
      "attendance_time_in_seconds": 2400,
      "email": "attendee@example.com",
      "first_name": "Sam",
      "last_name": "Attendee",
      "registrant_key": "2222222222222222222",
      "session_key": "1234567890123456789"
    }
  ],
  "count": 1,
  "page": {
    "number": 0,
    "size": 20,
    "total_elements": 1,
    "total_pages": 1
  },
  "webinar_key": "9876543210987654321"
}
```

### List webinar sessions

List the past sessions of a webinar, with their attendance counts and session keys.

**Inputs**

- Webinar (`webinar_key`, text, required): The webinar to act on. Pick one, or paste a webinar key copied from its GoTo Webinar URL.
- Page (`page`, number): Which page of results to read. The first page is 0. From 0 to 10000.
- Results per page (`size`, number): How many results to read at once (up to 200). From 1 to 200.

**Outputs**

- `count` (number)
- `page` (object)
- `sessions` (list)
- `webinar_key` (text)

**Example output**

```json
{
  "count": 1,
  "page": {
    "number": 0,
    "size": 20,
    "total_elements": 1,
    "total_pages": 1
  },
  "sessions": [
    {
      "end_time": "2026-12-01T18:00:00Z",
      "experience_type": "CLASSIC",
      "registrant_count": 12,
      "registrants_attended": 7,
      "session_key": "1234567890123456789",
      "start_time": "2026-12-01T17:00:00Z",
      "time_zone": "America/New_York",
      "total_poll_count": 2,
      "webinar_id": "123456789",
      "webinar_key": "9876543210987654321",
      "webinar_name": "Product launch"
    }
  ],
  "webinar_key": "9876543210987654321"
}
```

### List webinars

List the webinars scheduled between two dates, upcoming or past.

**Inputs**

- From (`from_time`, date and time, required): The start of the date range to search.
- To (`to_time`, date and time, required): The end of the date range to search.
- Page (`page`, number): Which page of results to read. The first page is 0. From 0 to 10000.
- Results per page (`size`, number): How many results to read at once (up to 200). From 1 to 200.

**Outputs**

- `count` (number)
- `page` (object)
- `webinars` (list)

**Example output**

```json
{
  "count": 1,
  "page": {
    "number": 0,
    "size": 20,
    "total_elements": 1,
    "total_pages": 1
  },
  "webinars": [
    {
      "approval_type": "AUTOMATIC",
      "description": "A look at what is new.",
      "experience_type": "classic",
      "locale": "en_US",
      "recurrence_type": "single_session",
      "registration_url": "https://attendee.gotowebinar.com/register/1",
      "subject": "Product launch",
      "time_zone": "America/New_York",
      "times": [
        {
          "end_time": "2026-12-01T18:00:00Z",
          "start_time": "2026-12-01T17:00:00Z"
        }
      ],
      "webinar_id": "123456789",
      "webinar_key": "9876543210987654321"
    }
  ]
}
```

### Register someone for a webinar

Register a person for a webinar and get back their personal join link.

**Inputs**

- Webinar (`webinar_key`, text, required): The webinar to act on. Pick one, or paste a webinar key copied from its GoTo Webinar URL.
- First name (`first_name`, text, required): The registrant's first name.
- Last name (`last_name`, text, required): The registrant's last name.
- Email (`email`, text, required): The registrant's email address.
- Resend confirmation (`resend_confirmation`, true/false): Email the confirmation again if this person is already registered. Default: `false`.
- Organization (`organization`, text): The registrant's company or organisation.
- Job title (`job_title`, text): The registrant's job title.
- Phone (`phone`, text): The registrant's phone number.
- Address (`address`, text): Street address.
- City (`city`, text): City.
- State (`state`, text): State or province (GoTo only validates US states).
- Postal code (`zip_code`, text): Postal or ZIP code.
- Country (`country`, text): Country.
- Industry (`industry`, text): The registrant's industry, as free text.
- Number of employees (`number_of_employees`, text): How many people the registrant's organisation employs.
- Purchasing time frame (`purchasing_time_frame`, text): When the registrant expects to buy, as free text.
- Purchasing role (`purchasing_role`, text): The registrant's role in a purchase, as free text.
- Source (`source`, text): Where the registration came from, for your own reporting.
- Questions and comments (`questions_and_comments`, text): Anything the registrant wants to ask in advance.
- Answers to custom questions (`responses`, list): Answers to the webinar's own registration questions. Each entry needs a 'question_key' and either an 'answer_key' (multiple choice) or a 'response_text'. Get both keys from Get registration fields.

**Outputs**

- `email` (text)
- `join_url` (text)
- `registrant_key` (text)
- `webinar_key` (text)

**Example output**

```json
{
  "email": "sam@example.com",
  "join_url": "https://attendee.gotowebinar.com/join/1",
  "registrant_key": "2222222222222222222",
  "webinar_key": "9876543210987654321"
}
```

### Remove a registrant

Remove someone's registration from a webinar that has not happened yet.

**Inputs**

- Webinar (`webinar_key`, text, required): The webinar to act on. Pick one, or paste a webinar key copied from its GoTo Webinar URL.
- Registrant key (`registrant_key`, text, required): The registration to remove.

**Outputs**

- `deleted` (true/false)
- `registrant_key` (text)
- `webinar_key` (text)

**Example output**

```json
{
  "deleted": true,
  "registrant_key": "2222222222222222222",
  "webinar_key": "9876543210987654321"
}
```

### Update a webinar

Change a scheduled webinar's title, description, times or language.

**Inputs**

- Webinar (`webinar_key`, text, required): The webinar to act on. Pick one, or paste a webinar key copied from its GoTo Webinar URL.
- Title (`subject`, text): A new title. Leave blank to keep the current one.
- Description (`description`, text): A new description.
- Starts at (`start_time`, date and time): When the webinar starts.
- Ends at (`end_time`, date and time): When the webinar ends.
- Extra sessions (`additional_sessions`, list): Extra dates for a series, each an object with 'start_time' and 'end_time'. Leave empty for a one-off webinar.
- Time zone (`time_zone`, text): The time zone the webinar is held in, such as America/New_York. Leave blank to use the organizer's own time zone.
- Language (`locale`, text): The language of the registration and confirmation pages. One of: `en_US` (English (US)), `de_DE` (German), `es_ES` (Spanish), `fr_FR` (French), `it_IT` (Italian), `zh_CN` (Chinese (Simplified)).
- Notify participants (`notify_participants`, true/false): Email everyone registered about the change.
- Send confirmation emails (`confirmation_email`, true/false): Email each registrant a confirmation when they sign up.
- Send reminder emails (`reminder_email`, true/false): Email registrants a reminder before the webinar starts.
- Send follow-up to absentees (`absentee_followup_email`, true/false): Email registrants who did not attend afterwards.

**Outputs**

- `updated` (true/false)
- `webinar_key` (text)

**Example output**

```json
{
  "updated": true,
  "webinar_key": "9876543210987654321"
}
```
