# Forms

Forms let you compose your organization's [user attributes](/product/audience/user-attributes.md) into a form that signed-in members fill out on your own site. Each field on a form points at one user attribute — the member's current value is prefilled when the form loads, and submitting the form updates that value on the member's profile in place.

A form is not a general-purpose form builder: you don't create free-form questions, you pick which existing user attributes a member can edit and how each one is presented. This makes forms the building block for a preference center, a profile-completion prompt, or a short survey that writes straight to the member record.

Forms only render for signed-in members

A form appears only to an authenticated member, because it reads and writes that member's profile. When no member is signed in, the embedded form stays empty. Pair it with a sign-in prompt on your site so visitors can authenticate first.

## Before you start[​](#before-you-start "Direct link to Before you start")

A form can only use attributes that already exist and are marked as editable by the member. Define those first under **Organization Settings → User Attributes**, and turn on **Allow field to be updated by the user** for each one you want to appear on a form. Attributes that members can't edit don't show up in the field picker. See [User Attributes](/product/audience/user-attributes.md).

## Finding your forms[​](#finding-your-forms "Direct link to Finding your forms")

Open **Forms** from the main navigation. The list shows every form in your organization with its **Title**, its **Slug**, and a count of how many **Fields** it contains. Click a form's title, or the edit icon, to open it.

## Creating a form[​](#creating-a-form "Direct link to Creating a form")

Click **Add Form** and give the form:

| Field     | Required | Description                                                                                   |
| --------- | -------- | --------------------------------------------------------------------------------------------- |
| **Title** | Yes      | A name for the form, used only in the admin — for example *Profile Basics*.                   |
| **Slug**  | Yes      | The identifier used to embed the form on your site. It auto-fills from the title as you type. |

The slug is permanent

The slug identifies the form wherever it's embedded, so it **cannot be changed after the form is created**. On the edit screen the slug field is locked. Pick it carefully — to change it you'd create a new form and update every place the old one is embedded.

Below the title and slug, you build the form's fields.

## Building the fields[​](#building-the-fields "Direct link to Building the fields")

The **Fields** section is where you compose the form. Click **Add field** to add a field, drag the handle to reorder fields, and use the remove icon to delete one. Once every editable attribute is already on the form, **Add field** is disabled — an attribute can appear at most once per form.

Each field is one user attribute, configured with:

| Setting                | Description                                                                                                                                                                                                                                       |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Attribute**          | The user attribute this field edits. Only member-editable attributes appear, and each one can be used once. The attribute's type (text, number, boolean, or enum) is shown beside the picker; the matching input control is chosen automatically. |
| **Required**           | Whether the member must provide a value before the form can be submitted.                                                                                                                                                                         |
| **Label override**     | A custom label for this field. Leave it blank to use the attribute's own name.                                                                                                                                                                    |
| **Placeholder**        | Placeholder text shown inside an empty input.                                                                                                                                                                                                     |
| **Tooltip**            | Help text shown alongside the field.                                                                                                                                                                                                              |
| **Error message**      | The message shown when the field's value fails validation. Leave it blank to use the attribute's default messages.                                                                                                                                |
| **Display conditions** | Rules that show the field only when other fields have certain values. See [Conditional fields](#conditional-fields).                                                                                                                              |

The input a member sees is derived from the attribute's type — a text box for a text attribute, a checkbox for a boolean, a dropdown for an enum, and so on — so you don't choose a control yourself. Validation follows the attribute too: each value must pass the attribute's type and any [validation rules](/product/audience/user-attributes.md#validation-rules) configured on it.

No user-editable attributes yet?

If your organization hasn't defined any member-editable attributes, the field builder tells you so. Define them under **Organization Settings → User Attributes** first, then come back to add fields.

A form holds up to 50 fields.

### Conditional fields[​](#conditional-fields "Direct link to Conditional fields")

Use **display conditions** to reveal a field only when it's relevant. Add a condition and it reads *When \[field] \[is] \[value]*, where the operators are:

| Operator           | Shows the field when…                      |
| ------------------ | ------------------------------------------ |
| **Is checked**     | The chosen field is checked.               |
| **Is not checked** | The chosen field is unchecked.             |
| **Has a value**    | The chosen field has any value.            |
| **Equals**         | The chosen field equals a value you enter. |

A field can have several conditions (up to 10), and it appears only when **every** condition is met. Conditions re-evaluate as the member fills out the form, and a hidden field is never submitted. A field can't reference itself, so add the field it depends on first.

## No draft or publish step[​](#no-draft-or-publish-step "Direct link to No draft or publish step")

A form is live as soon as it exists — there's no draft state, publish button, or enabled toggle. A form starts affecting your site the moment you embed it, and stops when you remove the embed or delete the form.

## Embedding a form on your site[​](#embedding-a-form-on-your-site "Direct link to Embedding a form on your site")

Open a form and click **Show Snippet** to get the embed code. Add the element anywhere on your site:

```html
<allegro-form slug="your-form-slug"></allegro-form>

```

The form renders for signed-in members only. Your developers can customize the submit button label, the confirmation message, and the styling — see the developer reference for [`<allegro-form>`](/developer/components/form.md).

## Styling a form[​](#styling-a-form "Direct link to Styling a form")

Forms are a branding scope, so you can style them without touching your site's CSS. In the branding editor you'll find a **Form** scope with variables for the inputs, labels, tooltips, submit button, error text, and success state. By default these inherit your organization's design tokens (colors, corner radius, fonts), so a form matches the rest of your branding out of the box; override any variable to fine-tune it.

Set branding org-wide under **Organization Settings → Branding**, or per property under **Properties → (property) → Branding**. See [Branding](/product/administration/branding.md) for how scopes and inheritance work.

## Who can manage forms[​](#who-can-manage-forms "Direct link to Who can manage forms")

| Action                | Who can do it                    |
| --------------------- | -------------------------------- |
| View forms            | Anyone in your organization.     |
| Create and edit forms | Organization admins and members. |
| Delete a form         | Organization admins only.        |

Deleting a form stops it rendering anywhere it's embedded. Members' saved attribute values are **not** affected — a form only edits values, it doesn't own them. Changes to forms are recorded in the [Activity Log](/product/administration/activity-log.md) under the Audience category.

## Related[​](#related "Direct link to Related")

* [User Attributes](/product/audience/user-attributes.md) — Define the attributes a form edits.
* [`<allegro-form>` component](/developer/components/form.md) — Embed and customize a form on your site.
* [Branding](/product/administration/branding.md) — Style the Form scope.
