> ## Documentation Index
> Fetch the complete documentation index at: https://docs.terminus.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Part 2: Fields basics

> Add three fields to the Marketing governance model: Campaign Name, Launch Date, and Destination URL, with their required, unique, date format, and text transform settings.

In this part you add the first three fields to `Marketing`: `Campaign Name` (Text), `Launch Date` (Date), and `Destination URL` (URL). By the end, "Black Friday 2026" is stored as `black_friday_2026` and November 15, 2026 shows as `2026_11_15`. It takes four short steps.

You need the empty `Marketing` governance model from [Part 1: Create your governance model](/tutorial/01-governance-model).

## How it works

A field is a definition on the governance model. Any taxonomy in the same model can reference it. In Part 7, `Campaign Name` appears on all three taxonomies without being defined again. For now nothing is connected to a taxonomy.

Text, URL, and Date are user-input fields: a person types or picks the value. Part 6 adds generated fields on top of these three. For every field type, see the [field reference](/reference/fields).

Each field has a **Name**, which is what people see on forms. When you save a new field, Terminus Hub generates its **Field handle** from the name, so `Campaign Name` becomes `campaign_name`. You can see it under **Additional options**. Renaming the field later does not change the handle.

Text fields can reshape what a person types before it is stored. The case transform runs first, then the spaces transform. Together they turn "Black Friday 2026" into `black friday 2026`, then `black_friday_2026`. The stored value is the transformed one, so fields built from it later get `black_friday_2026`.

## Steps

<Steps>
  <Step title="Open the new-field form">
    With the `Marketing` governance model open, click **Fields** in the sidebar. Click **Create new**, then pick the field type from the list. For the first field, pick **Text**.

    A field's type cannot change after you create it. If you pick the wrong one, delete the field and create it again.
  </Step>

  <Step title="Create Campaign Name (Text)">
    Type `Campaign Name` in **Name**.

    **Required** is already on for a new field. Leave it on. A submission with this field blank cannot be approved, and `Campaign Name` has no default, so the person filling in a row must type something.

    Turn on **Require unique values**. No two rows in the account can then share a campaign name. The check covers every record and every submission row, drafts included, in every taxonomy and workspace that uses the field. So `black_friday_2026` can exist in only one row. In Part 8 you give each row its own name.

    Set **Transform case** to **lowercase**. Set **Transform spaces** to **Replace with underscore (\_)**. Click **Save to draft**. The field appears in the governance model's field list.

    Here is what the transforms do. A user types `Black Friday 2026`. The case transform gives `black friday 2026`. The spaces transform gives `black_friday_2026`. That is the stored value.
  </Step>

  <Step title="Create Launch Date (Date)">
    Click **Create new** again and pick **Date**. Type `Launch Date` in **Name**.

    Under **Date format**, click the **+** button (**Add date part**) and choose Year. Click it again and choose Month. Click it once more and choose Day.

    New parts start as numeric. A numeric month and day would show March 5 as `2026_3_5`. Set the month and the day to **padded** (two digits) so it shows as `2026_03_05`. Leave the year as it is.

    Type `_` in the separator box (`sep`) so the parts are joined by underscores. The preview beside the box shows today's date in this format. With padded parts and the underscore, November 15 shows as `2026_11_15`.

    Set **Default value** to `today` and **Minimum date** to `today`. Click **Save to draft**. The new field appears in the field list.

    A required field with no default blocks approval until someone enters a value. `Launch Date` avoids that because its default is `today`.
  </Step>

  <Step title="Create Destination URL (URL)">
    Click **Create new** once more and pick **URL**. Type `Destination URL` in **Name**.

    Open **Allowed protocols** and remove `http`, keeping `https`. The field then rejects any `http://` address, so tagged URLs never fall back to an insecure destination. Leave **Default value** blank.

    Click **Save to draft**. The third field appears in the list.
  </Step>
</Steps>

## Check your work

* `Marketing` has three fields: `Campaign Name`, `Launch Date`, and `Destination URL`.
* `Campaign Name` is Text with **Required**, **Require unique values**, lowercase, and replace-spaces-with-underscore set.
* `Launch Date` is Date, formatted year, padded month, padded day joined by `_` (so `2026_11_15`), with `today` as both the default value and the minimum date.
* `Destination URL` is URL and accepts only `https` addresses.
* None of the fields are on a taxonomy yet.

## Next up

`Marketing` now has three fields, waiting to be used. In [Part 3: Static picklists](/tutorial/03-static-picklists), you create the `Goals` picklist and its `Goal` dropdown field.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.