---
sourceDocument: Zurich Conversational Interfaces
sourceDocumentLink: https://www.servicenow.com/docs/r/zurich/conversational-interfaces

 Release :

    - zurich

ft:locale :

    - en-US

ft:publication_title :

    - Zurich Conversational Interfaces

ft:clusterId :

    - convint

bundleId :

    - convint

workflow :

    - Platform


---

# Create a custom control

# Create a Virtual Agent custom control {#ariaid-title1}

* Release version: Zurich
* 
* Updated July 31, 2025
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 3 minutes to read

Build a custom input or response control that topic authors can use in topics or
topic blocks. In Virtual Agent conversations, an input control gathers
information from end users, while a response control displays information to end
users.

## Before you begin

[Create the custom control
definition](https://www.servicenow.com/docs/FOPQzHD5z9xHo~mD1ZFGRw "Define a custom input or response control definition that maps to a custom component.").  
Important:  
To implement secure (password2) inputs in your Virtual Agent custom control, you must adhere to the scoped application requirements in Workflow Studio. For details, see [Workflow Studio scoped application requirements for secure inputs](https://www.servicenow.com/docs/T7bxSx5qZcPF1K2d2JZSMA "Adhere to the following scoped application requirements to implement secure (password2) inputs in your Virtual Agent topics.").  
Tip:  
Developers and topic authors may need to access custom controls created in other application scopes. To give them access, see [Configure cross-scope access privileges for topic blocks and custom controls](https://www.servicenow.com/docs/c7JhwD4cz1Z7777Roqe5oQ "Enable topic authors and developers to access Virtual Agent topic blocks and custom controls from other scoped applications.").

Role required: virtual_agent_admin or admin

## Procedure

1. Navigate to AllConversational InterfacesAssistant Designer.
2. Select the Asset library tab.
3. Set the topic discovery type toggle switch to LLM or NLU/Keyword, depending on the type you want to create.
4. Select Create asset or Create topic, depending on your topic discovery type.
5. On the form, fill in the fields.  
   {#create-custom-control__table_dzy_15h_cmb__entry__2}

   | Field | Description |
   |-|-|
   | Type | List of assets that you can create in Assistant Designer Asset library. Choose the type of custom control: * Custom Input Control * Custom Response Control {#create-custom-control__ul_yly_pfg_dmb} |
   | Name | Unique name for the custom control that reflects its purpose. |
   | Description | Brief explanation of the purpose and functionality of the control. |
   | Advanced properties (optional) ||
   | Make inputs secure \[Custom input controls only\] ||
   | Enable | Toggle switch that lets a custom input control pass secure inputs, such as passwords. |
   | Available on the palette ||
   | Enable | Toggle switch that determines whether the custom control appears as its own icon in the Utilities section of the palette on the Flow tab. This provides easy access to the control for other authors. |
   | Additional ||
   | Categories | List of categories. Categories identify and group related topics, topic blocks, or custom controls. If applicable, choose a category for your control. |
   [Table 1. Properties form]

   {#create-custom-control__table_dzy_15h_cmb}
6. Select Create.  
   The Flow tab opens and displays an initial flow that contains a custom control node.
7. Select the Start node and define the input parameters to the control.  
   Topic authors will provide these input parameters and values from the calling topic.
   1. Select + Add.
   2. On the form, fill in the fields.  
      {#create-custom-control__id_n4c_4sz_gpb__entry__2}

      | Field | Description |
      |-|-|
      | Name | Name of the input variable that stores the input value. |
      | Type | Type of data being passed to the topic block. For example, String, Boolean, and so on. The fields change according to your choice. For more information, see [Input data types in Virtual Agent topics](https://www.servicenow.com/docs/DVQclOrgfECH7FR6cq30~g "You can define inputs of commonly used Glide Virtual Agent (com.glide.cs.chatbot) data types in Assistant Designer Asset library without writing a script. Define the input data type on the Start node of a custom control or topic block."). |
      | Required | Option to set the parameter as required. |
      | Hint | Tooltip that is visible when authoring a calling topic. See the following example: |
      | Table | ServiceNow table that is used to query for input. This field is available only when Reference or Array.Reference is selected from the Type field. |
      | Max Number of Rows | Maximum number of rows that the topic block is allowed to define. This field is available only when Array is selected from the Type field. |
      | Default Value | Default value for the variable. This value can be used when previewing the block. Duplicate default values are not allowed for array data types. |
      [Table 2. Add input dialog box]

      {#create-custom-control__id_n4c_4sz_gpb}
   3. Select Save.
   4. Repeat these steps for additional parameters.
   {#create-custom-control__substeps_j5d_fbw_3mb}
8. Select the End node and define the output parameters and values returned from the custom control.  
   Topic authors can use the output value in the calling topic.
   1. Select + Add New.
   2. Enter the name and value of the parameter.
   3. Repeat these steps for additional parameters.
   4. Select Save.
   {#create-custom-control__substeps_v3h_mmc_bpb}
9. Select the custom control node and complete the property sheet as follows:
   * For a custom input control, fill in the [Custom input properties sheet](https://www.servicenow.com/docs/CF0fWiCOB_yxgfKKmx47qQ "Use this sheet to define a custom input control in Virtual Agent.").
   * For a secure custom input control, fill in the [Secure custom input properties sheet](https://www.servicenow.com/docs/Xynwqb7FhxQre2EAbypP~Q "Use this sheet to specify secure inputs, such as a password, in a custom input control in Virtual Agent.").
   * For a custom response control, fill in the [Custom output properties sheet](https://www.servicenow.com/docs/gZTRlU3MYP9TPjB7OY4NXA "Use this sheet to define a custom response control in Virtual Agent.").
10. To create the control, select Save and then Publish.
{#create-custom-control__steps_egn_xm2_dmb}

## Result

If you selected Available on the palette in the Properties
page, the Custom Control icon displays as its own icon in the Utilities section of
the palette. The control is listed on the Topics page, and you can use the Type menu
to show only custom controls.

## What to do next

[Add a custom control to a Virtual Agent topic or topic block](https://www.servicenow.com/docs/cbSHLIPRqom2uByVM1nuSA "Add a custom control to a Virtual Agent topic or topic block. During the conversation, you can gather inputs from the user or display outputs to the user.").

*[\>]: and then


