# Event subscriptions ## Event subscription The information in the `event_subscription` section of the manifest JSON represents the values on the **Access** > **Event Subscriptions** page of the app build flow. This feature allows you to subscribe to interested events and receive Webhook notifications. For more information, refer to the [webhooks](/docs/api/webhooks/) documentation for the specific product. > **Challenge-response** > > Zoom App Marketplace uses Challenge-response check to confirm the ownership and the security of the event notification endpoint URLs. For more information, see [Validating your webhook endpoint](/docs/api/webhooks/#validate-your-webhook-endpoint/) about building response to the challenge to validate your URLs. ## Manifest JSON ```json { "features": { // ...... "event_subscription": { "enable": true, "events": [ { "subscription_name": "subscription_name", "event_types": ["meeting.started", "meeting.ended"], "development_webhook_url": "", "production_webhook_url": "", "development_event_custom_header": { "custom_header_type": 0, // 0-DEFAULT, 1-BASE_AUTH, 2-OAUTH, 3-CUSTOM_kEY_VALUE "username": "", "password": "", "client_id": "", "client_secret": "", "token_url": "", "custom_header_key": "", "custom_header_value": "" }, "production_event_custom_header": { "custom_header_type": 0, // 0-DEFAULT, 1-BASE_AUTH, 2-OAUTH, 3-CUSTOM_kEY_VALUE "username": "", "password": "", "client_id": "", "client_secret": "", "token_url": "", "custom_header_key": "", "custom_header_value": "" } } ] } // ...... } } ``` ## Field Description | Field | Description | Required | | :--------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------- | | `enable` | This feature allows you to subscribe to interested events and receive Webhook notifications. | No | | `events[].subscription_id` | The primary key of subscription | Yes (when updating subscription) | | `events[].subscription_name` | Name this particular event subscription. | Yes (if `enable` = true) | | `events[].development_webhook_url` | Provide a URL to receive subscribed event notifications. This is for testing in your local environment. | Yes (if `enable` = true) | | `events[].production_webhook_url` | Provide a URL to receive subscribed event notifications. This is for testing in your local environment. | No | | `events[].event_types` | Add events for your app to subscribe. Any corresponding scopes related to specific events will be automatically selected. | Yes (if `enable` = true) | | `events[].event_usage` | Event notification receiver

This feature is only available for account level apps. | No | | `events[].communicate_type` | Event communicate type: `WEB_HOOK`, `WEB_SOCKET` | No

`WEB_HOOK` by default | | `events[].developmentEventCustomHeader.custom_header_type` | Use the custom authentication header method to validate Zoom webhook notifications.



0-DEFAULT, 1-BASE_AUTH, 2-OAUTH, 3-CUSTOM_KEY_VALUE | No | | `events[].developmentEventCustomHeader.username` | Basic Authentication



It can be used when customHeaderType is 1-BASE_AUTH | No

Required when customHeaderType = 1 | | `events[].developmentEventCustomHeader.password` | Basic Authentication



It can be used when customHeaderType is 1-BASE_AUTH | No

Required when customHeaderType = 1 | | `events[].developmentEventCustomHeader.client_id` | Token Authentication



It can be used when customHeaderType is 2-OAUTH | No

Required when customHeaderType = 2 | | `events[].developmentEventCustomHeader.client_secret` | Token Authentication



It can be used when customHeaderType is 1-BASE_AUTH | No

Required when customHeaderType = 2 | | `events[].developmentEventCustomHeader.custom_header_key` | Custom Header



It can be used when customHeaderType is 3-CUSTOM_KEY_VALUE | No

Required when customHeaderType = 3 | |