# Triggers **App triggers** enable you to create event-driven workflows for your applications, allowing end users to receive timely notifications and automate tasks more effectively. Zoom supports two types of triggers: - **RESThook triggers** – These automatically subscribe Zoom to external event services through API calls when an end user configures a trigger. They include customizable subscribe, unsubscribe, and inbound event processing operations, allowing developers to define how Zoom handles and transforms incoming event data. - **Static webhook triggers** – These use a static URL that receives event data directly from third-party systems. Developers can configure inbound event processing for static webhooks, and optionally require a connection if the event handling needs to call a third-party endpoint ## Prerequisites - You have created a Zoom general app configured with at least one [connect endpoint](/docs/build-flow/connect/). This is required to integrate third-party data into the Zoom platform. - You have configured an incoming webhook in [Connect](/docs/build-flow/connect/). ## Add trigger To add a trigger, in your app's build page, select **Actions and Triggers** from the left navigation, and select the **Trigger** tab, and then click **New trigger**. Similar to app actions, the app trigger creation flow consists of five steps: 1. **Basic configuration** to define the trigger. 2. **Where can users access it?** to select the location in the Zoom client where users can use the trigger. 3. **Form Builder** to specify the input fields defined in connect parameters that are available to this trigger. 4. **Transformation** to map the incoming data and convert them from the API response values to the expected schema the Zoom application needs. 5. **Testing** to verify your configuration is successful. We explain each step further in the sections below. ## Basic configuration On the **Basic configuration** page, you define what should happen when this trigger is activated. Currently, only **built-in triggers** for Zoom Phone and Zoom Contact Center are supported. Build-in triggers are triggers defined by Zoom. Zoom has provided all the basic information, requiring developers only to select the trigger. We will update the information here when **custom triggers** are available. ## Where you can users access it In the **Where you can users access it** step, select the locations in the Zoom client you want the action to be available to users. This offers flexibility to display triggers only in locations where they make the most sense. > **Location clarification** > > The available locations depend on the product you are using. For example, available locations for Chat would differ from locations for Meeting or Revenue Accelerator. > > - Locations and Zoom products are not one-to-one; some Zoom products have multiple locations. > - Not all locations are compatible with each other, as context data is typically unique to each location. Once you select a location, some other locations may become unavailable. > - For built-in triggers, the location is predefined and cannot be changed unless you select a different built-in trigger. > - Currently, the only available locations are Zoom Phone - Voice and Zoom Contact Center - Voicebot. ## Form builder Similar to action input forms, you can define a custom input form for your trigger. The form allows you to capture necessary inputs from end users, which can then be used in the trigger subscription call or event payload transformation. The **trigger custom input form** is optional. Custom input forms are not supported in certain locations. In the **Form Builder** step, you can add and configure input fields. Click **Add field** and select or enter values for: - **Field ID** - Enter an ID to use values of this field as a dynamic variable. - **Field title** - Enter a name for the field. - **Description** - A clear explanation of the field. - **Data Type** - Select whether the type is a string, number, integer, password. - **Required** - By default, all input parameters are marked as required. You can change this by toggling off the required field. > **Zoom Phone Voice and Zoom Contact Center Voicebot** > > Custom input forms are not supported in Zoom Phone Voice and Zoom Contact Center Voicebot locations. ## Transformations In this step, you configure the trigger by combining the incoming webhook previously configured in Connect with any inputs collected through the custom form. You define the trigger type, the event subscription call to the external service, and how to transform the incoming data that Zoom processes. You can choose between two configuration modes: a user-friendly UI mode for simple setups or Script mode for advanced customization. Note that for RESThook triggers, both modes are available for subscribe and unsubscribe operations, while inbound event processing requires Script mode. The required configuration details vary based on the trigger type. ### RESThook trigger: - Subscribe - Defines how Zoom subscribes to external event services when an end user configures a new trigger. - Unsubscribe - Defines how Zoom unsubscribes from external events to remove a trigger configured by the end user. - Inbound processing of events - Defines how Zoom handles and transforms incoming event data. - Output definition - Defines the finalized output structure, including display names shown to end users and field specifications that conform to the expected object format. ![](/img/resthook-trigger.png) ### Static webhook trigger: - Inbound processing of events - Defines how Zoom handles and transforms incoming event data. - Output definition - Defines the finalized output structure, including display names shown to end users and field specifications that conform to the expected object format. For static webhook triggers, connections are optional. However, if processing inbound events requires calling a third-party Connect endpoint, developers can enable the 'Connection Required' checkbox. This ensures Zoom prompts end users to provide a connection when configuring the trigger. Like actions, triggers also support using custom form data in output mapping or output definitions using `{{ctx.inputData.}}`. In addition to trigger-specific custom form inputs, developers can access app-level or connection-level custom form values captured during app installation by using `{{ctx.customField.}}`. ![](/img/static-webhook-trigger.png) ## Test the trigger Once you've defined the trigger transformation, you can test it before completing the full trigger configuration. To use a test connection, you must first configure it in the **Connect** section. Both live and test connections are supported. To use a live connection, you must first install the app. To test a RESThook trigger, add a new connection or select an existing one to test subscribing and unsubscribing to the webhook event. For both RESThook and static webhook triggers, you can test the inbound event processing script by providing a sample payload. ![](/img/trigger-test.png)