Registrant_id Missing in participant_role_changed Webhook Payload

According to the Zoom API documentation, the meeting.participant_role_changed webhook event should include a registrant_id field in the participant object. However, in our testing, the registrant_id is missing from the webhook payload, even though it is present in other participant-related webhooks (e.g., participant_joined and participant_left).

This creates an issue because registrant_id is the only stable identifier we can use to track participants across different Zoom webhook events. Other identifiers such as participant_uuid and user_id change if a user leaves and rejoins the meeting, making it difficult to maintain consistent tracking.

Observed Behavior:
Webhook event payload received for participant_role_changed (Missing registrant_id):

{
  "applicationId": "ZWViTKlzTjyLtBnYMTjVnA",
  "monitorTime": 1738182229934,
  "traceId": "EventService_b4bbd938-c82f-4d84-a864-e8faa73cb60b",
  "accountId": "vExNbhTISm6eoGh0BK6Wqg",
  "event": "meeting.participant_role_changed",
  "status": "200",
  "userId": "BXE0adSxQRqGSP5fg1rkcA",
  "url": "https://veritext4.a.pinggy.link/api/webhook/participantRoleChanged",
  "subscriptionId": "5Wt4hoS1RBydKao3e_mJgA",
  "requestBody": {
    "event": "meeting.participant_role_changed",
    "payload": {
      "account_id": "vExNbhTISm6eoGh0BK6Wqg",
      "object": {
        "uuid": "gsqg0HKxTQ2TxSVAxE9+0w==",
        "participant": {
          "new_role": "host",
          "date_time": "2025-01-29T20:23:00Z",
          "user_id": "16790528",
          "user_name": "Ji Park",
          "old_role": "attendee",
          "participant_user_id": "",
          "email": "jhp0621@gmail.com",
          "participant_uuid": "67C1A429-1476-BE1C-7324-EDCA76B69406"
        },
        "id": "84712639219",
        "type": 2,
        "topic": "My Meeting",
        "host_id": "BXE0adSxQRqGSP5fg1rkcA",
        "duration": 60,
        "start_time": "2025-01-29T19:37:35Z",
        "timezone": "America/Los_Angeles"
      }
    },
    "event_ts": 1738182229511
  },
  "responseHeaders": {
    "Date": "Wed, 29 Jan 2025 20:23:50 GMT",
    "Content-Type": "application/json"
  },
  "runTime": "188",
  "ttl": 1739391830
}

Expected Behavior:
The participant object should include a registrant_id field, as documented.

For reference, here is a participant_joined webhook payload, where registrant_id is present:

{
  "applicationId": "ZWViTKlzTjyLtBnYMTjVnA",
  "monitorTime": 1738182058931,
  "traceId": "EventService_fd3f58c8-0055-455a-aece-dcff8c9eaea2",
  "accountId": "vExNbhTISm6eoGh0BK6Wqg",
  "event": "meeting.participant_joined",
  "status": "200",
  "userId": "BXE0adSxQRqGSP5fg1rkcA",
  "url": "https://veritext4.a.pinggy.link/api/webhook/participantJoined",
  "subscriptionId": "I1thL9k_R9ujYZ1wTXasUA",
  "requestBody": {
    "payload": {
      "account_id": "vExNbhTISm6eoGh0BK6Wqg",
      "object": {
        "uuid": "gsqg0HKxTQ2TxSVAxE9+0w==",
        "participant": {
          "public_ip": "156.45.39.127",
          "user_id": "16790528",
          "user_name": "Ji Park", 
          "registrant_id": "knAbXX5uTci97I83X3ARfg",
          "participant_user_id": "",
          "id": "",
          "join_time": "2025-01-29T20:20:56Z",
          "email": "jhp0621@gmail.com",
          "participant_uuid": "67C1A429-1476-BE1C-7324-EDCA76B69406"
        },
        "id": "84712639219",
        "type": 2,
        "topic": "My Meeting",
        "host_id": "BXE0adSxQRqGSP5fg1rkcA",
        "duration": 60,
        "start_time": "2025-01-29T19:37:35Z",
        "timezone": "America/Los_Angeles"
      }
    },
    "event_ts": 1738182057535,
    "event": "meeting.participant_joined"
  },
  "responseHeaders": {
    "Date": "Wed, 29 Jan 2025 20:21:00 GMT",
    "Content-Type": "application/json"
  },
  "runTime": "1589",
  "ttl": 1739391660
}

(The participant’s name & email have been altered for privacy.)

Hi @jhp0621
Thanks for reaching out to us
I will send you a DM to follow up on this issue