---
title: "Create a custom condition"
slug: "create-a-custom-condition"
abstract: "Explains how to create a JavaScript custom condition."
---
# Create a custom condition

If you're familiar with JavaScript, you can create a custom condition. A condition enables marketers to further filter the segment used in a full audience export.

After you publish the condition, marketers can apply it to an audience export as a filter. The output of the audience export will only include those guests from the segment that satisfy the condition.

Before you start, we recommend you familiarize yourself with the [types of parameters](https://doc.sitecore.com/cdp/en/users/sitecore-cdp/developer-center/conditions/create-a-custom-condition/types-of-parameters-for-conditions.html "Types of parameters for conditions"), [context parameters](https://doc.sitecore.com/cdp/en/users/sitecore-cdp/developer-center/conditions/create-a-custom-condition/context-parameters-for-conditions.html "Context parameters for conditions") and [elements](https://doc.sitecore.com/cdp/en/users/sitecore-cdp/developer-center/conditions/create-a-custom-condition/condition-elements.html "Condition elements") used in conditions, as well as [supported and unsupported JavaScript functions](https://doc.sitecore.com/cdp/en/users/sitecore-cdp/developer-center/conditions/supported-and-unsupported-javascript-entities.html "Supported and unsupported JavaScript entities").

To create a custom condition:

1. On the navigation pane, click **Developer center** > **Conditions**.
2. Click **Create**. Alternatively, you can [duplicate and edit an existing condition](https://doc.sitecore.com/cdp/en/users/sitecore-cdp/developer-center/conditions/manage-conditions.html "Manage conditions").
3. Enter a name for the new condition and click **Create**.
4. In the code editor, click **Edit** to configure the JavaScript. We recommended that you return an object in the response body. You can [copy code](https://doc.sitecore.com/cdp/en/users/sitecore-cdp/developer-center/conditions/manage-conditions.html "Manage conditions") from another condition to help get you started.

    > [!tip]
    > The value returned in the response can be accessed from the variant API response as 'filter'.

5. Click the **Data** tab on the coding pane to copy a guest data model attribute or path and paste into the JavaScript editor. Click the ![CDP_webtemp_pencilicon.png](https://doc.sitecore.com/api/markdown-image/cdp/en/users/sitecore-cdp/images/CDP_webtemp_pencilicon.png) icon and choose one of the following options:
    - To view a random guest's attributes based on guest type, click in the search box and choose **Quick Select Customer** or **Quick Select Visitor**. The system selects a guest who was recently active.
    - To select fields from a specific guest, enter their unique identifier into the search box. For example, if you want to use segment membership as dynamic data, search for a guest who is a member of the segment. You can search for a guest using, for example, an email address, other unique identifier or browser ID.

        > [!tip]
        > If there is a guest whose data you often use when configuring or testing code, click the **star** icon to bookmark the guest so you no longer have to search for them.

6. As you define input parameters in the JavaScript coding pane, the parameter names display in the **Configuration** tab on the right. You must define the condition output using the parameter names, as described in the next section.

## Define the condition output

The condition output is a combination of descriptive phrases and input parameters. This is what a user will see when they select a condition to apply in an audience export:

"The visit *has / has not* started on a page that *compares to* *page* during the current visit"

In this example, *has / has not*, *compares to*, and *page* are input parameters that the user will select values for when they apply the condition in an audience export. We recommend that you phrase the condition output in a way that's similar to how you would structure a sentence.

To define the output:

1. On the **Configuration** tab, select the **Output** option.
2. Enter the text and the parameters in the **Configure** text box. This is the what the user will see when they apply the condition in the audience export. As you type, the output displays in the **Preview** section. Valid parameters are bolded. To see the input parameter values that the user will be able to select from, click the **Input** option.

    Parameters are case-sensitive and must be wrapped in double square brackets, for example: `[[path.name]]`.

    > [!note]
    > You must include all the condition parameters in the **Configure** text box that are defined in the JavaScript coding editor. Parameters that are defined in the JavaScript but haven't been included in the **Configure** text box have a red exclamation mark. Click ![pers_copyParam.png](https://doc.sitecore.com/api/markdown-image/cdp/en/users/sitecore-cdp/images/pers_copyParam.png) to copy the parameter name and paste it into the **Configure** text box.
    >
    > Parameters that have been included in the **Configure** text box and are valid have a green checkmark.

    This image shows that the **has** input parameter is defined in the JavaScript and has been included in the **Configure** text box. The green checkmark displays to indicate the input parameter was successfully included. The **compares to** parameter and **page** parameter have red exclamation marks because although they are included in the **Configure** text box, they are not wrapped in double square brackets and have an invalid syntax. To make the syntax valid and have the green checkmark display, wrap the parameters in double square brackets.

    ![Configuring a condition](https://doc.sitecore.com/api/markdown-image/cdp/en/users/sitecore-cdp/images/condition_firstpg.png)

3. A preview of the condition output displays on the **Configuration** tab. This is useful to see how the user will view the condition when applying it in an audience export. Click the **Input** option to view the parameter values that a user can select for the condition.
4. Click **Test** to [test the condition](https://doc.sitecore.com/cdp/en/users/sitecore-cdp/developer-center/conditions/test-a-condition.html "Test a condition") using guest data. We recommend testing the condition before you [publish it](https://doc.sitecore.com/cdp/en/users/sitecore-cdp/developer-center/conditions/manage-conditions.html "Manage conditions"), to identify any errors and ensure optimal performance.