# How to configure Custom Widgets Custom Forms

This article focuses on how to configure Custom Widgets Custom Forms, a specific step of the [***Custom Widget set-up***](/assets-library/widget-library/how-to-create-a-custom-widget.md).

This content is also available in our [developer documentation](/client-side/custom-widgets/widgets-getting-started.md)***.***<br>

## Definition <a href="#h_01ggawbap9zbzkcbvz723vrw88" id="h_01ggawbap9zbzkcbvz723vrw88"></a>

The custom widget form is a **custom configurator** your team has built when it has created a custom widget.

As a reminder, a custom widget is a piece of code developed in the AB Tasty platform.

Once created, this snippet can be used in every kind of campaign (test, personalization) and be customized to fit the campaign’s purpose.

**Example:**

You have created a custom widget named **Shop opening announcement pop-in** to have a custom pop-in already ready in AB Tasty, each time you need to announce the opening of a brand new shop on your company website.

You need to fix one part of the set-up of this custom widget (the way it is triggered, its general layout, the cross’s store, etc.), but you would like to let some fields be customizable to help your marketing team to customize it easily, without having to dig in the code.

To get an invitation, you should make the following items customizable: the name of the city, the date and time of the opening, and the label of the CTA. As a result, you will need to create a **custom form** to let your colleagues customize only this information.

## Configuration Step <a href="#h_01ggawbht992ft86zh1b1ctyb3" id="h_01ggawbht992ft86zh1b1ctyb3"></a>

Custom widget forms are an array of objects, displayed as a form.

The custom widget feature works as follows:

1. **A technical user of the account creates a custom widget** from scratch by configuring the JS, HTML, and CSS code;
2. At the end of the configuration, he chooses **what kind of fields should be customizable** and how to customize them (color, words, etc.);
3. He fills in the **Form** code box to create this custom form.

<img src="/files/MghdgPZGvp7OHgWdT0Ea" alt="" width="375">

## Properties[​](https://developers.abtasty.com/docs/components/components-form#properties) <a href="#h_01ggawbr3wb26kccdcd2mb6k25" id="h_01ggawbr3wb26kccdcd2mb6k25"></a>

Defined properties to display forms:

### **`type`** <a href="#h_01j880dj5k2kaqbdc42rqephe0" id="h_01j880dj5k2kaqbdc42rqephe0"></a>

Character string

Defines the type of form that will be displayed.\
Find the list of allowed types [***in this article***](https://docs.abtasty.com/web-experimentation-and-personalization/editors-and-widget/list-of-widgets/custom-widget/custom-widgets-list-of-propname-fields-and-their-specificities)

### **`propName`** <a href="#h_01j880fwfgpn837n9cmrsvyd0f" id="h_01j880fwfgpn837n9cmrsvyd0f"></a>

Character string

Key that will be used in the DATA object to get the value

### **`label`** <a href="#h_01j880geqcfz5en63beb48cgjk" id="h_01j880geqcfz5en63beb48cgjk"></a>

Character string or object

Defines the label of your form. It will be displayed to help the user understand the purpose of the form. It supports strings but also objects to translate into the following languages: English (en), French (fr), Spanish (sp), and German (de).

### **`value`** <a href="#h_01j880h48dt6ypzw9nbkbwrxhb" id="h_01j880h48dt6ypzw9nbkbwrxhb"></a>

Any - Form’s default value

Here is an example with a simple text input :

```
const buttonTextForm = {
   type: 'text',
   propName: 'buttonText',
   label: 'Button text',
   value: 'This is a simple text input',
};
```

## Specific properties to build your look and feel configurator <a href="#h_01ggawc1zgycpc55yjyrm3r2xf" id="h_01ggawc1zgycpc55yjyrm3r2xf"></a>

When you set up your form, you want to make it as easy as possible to be understood and used by your colleagues.

For example, you should add section titles, descriptions, and separators to make the customization of the custom widget more guided.

Here are the properties you should add to structure your final form:

### **Titles** <a href="#h_01j88043zevbqazjnp64xxvebg" id="h_01j88043zevbqazjnp64xxvebg"></a>

The **title** snippets should be added right above the first property of the section and right above the separator of the previous section.

### **Description** <a href="#h_01j88043ze2c0eqw38xygreq1h" id="h_01j88043ze2c0eqw38xygreq1h"></a>

The **description** snippets should be added right after the **title** snippet and right above the first property of the section.

### **Separator** <a href="#h_01j88043zenappajftgmedvska" id="h_01j88043zenappajftgmedvska"></a>

The **separator** snippets should be added right after the last property of the section and right before the **title** snippet of the next section.

{% hint style="success" %}
Find all Properties, condition management, propName fields and their specificities in [our developer documentation](/client-side/custom-widgets/widgets-getting-started/custom-widgets-form.md).
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.abtasty.com/assets-library/widget-library/how-to-create-a-custom-widget/how-to-configure-custom-widgets-custom-forms.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
