> ## 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 5: The UTM cascade

> Build the UTM Mediums and UTM Sources picklists and the UTM Medium and UTM Source dropdowns, so each medium offers only its own sources.

In this part you build a second cascade. At the end, `UTM Mediums` holds `email`, `social`, and `cpc`, `UTM Sources` holds the sources under each, and the `UTM Medium` and `UTM Source` dropdowns work as a pair. It takes four short steps.

You need the `Marketing` governance model from [Part 4: Hierarchical picklists](/tutorial/04-hierarchical-picklists).

## How it works

This cascade works the same way as `Countries` and `Regions` in Part 4. Pick `social` in `UTM Medium`, and `UTM Source` offers only Facebook, Instagram, LinkedIn, and X / Twitter.

```mermaid theme={null}
flowchart LR
  subgraph PL[UTM Mediums and UTM Sources picklists]
    M[UTM Mediums<br/>email, social, cpc]
    S[UTM Sources<br/>newsletter, drip, … → email<br/>facebook, instagram, … → social<br/>google, bing, … → cpc]
    M -.parent of.-> S
  end
  MF[UTM Medium field<br/>Dropdown → UTM Mediums] -->|cascade| SF[UTM Source field<br/>Dropdown → UTM Sources]
```

The lists are closed. A submitter can only pick what the published list offers, so every source gets one spelling. To add a source later, an admin edits the picklist and publishes the governance model. See [Publish a revision](/guides/publish-revision).

## Steps

<Steps>
  <Step title="Create the UTM Mediums / UTM Sources picklist">
    With the `Marketing` governance model open, click **Picklists** in the sidebar, then **Create new**, and choose **Static Picklist**.

    Rename the `Name` column header to `UTM Mediums`. Add three rows, each with a code and a label: `email` / `Email`, `social` / `Social`, and `cpc` / `Paid search and ads`. These are your mediums.

    Keep the codes lowercase and treat them as permanent. The code is what lands in the URL and in your analytics. The label can read however you like, as in `Paid search and ads`.
  </Step>

  <Step title="Add a second level for sources">
    Click **+ Level** to add a child level, and rename its `Level 2` header to `UTM Sources`.

    As in Part 4, each row holds one medium and one of its sources. Work one medium at a time. Type its first source on the medium's row. For each further source, right-click the medium's last row (the one with the source you just entered), choose **Duplicate row**, and change the copy's source. The copy lands right below, so each medium's rows stay together, in the order you add them.

    When you finish, the grid in **Flat** view looks like this, one row per source:

    | UTM Mediums: Code | UTM Mediums: Label | UTM Sources: Code | UTM Sources: Label |
    | - | - | - | - |
    | `email` | Email | `newsletter` | Newsletter |
    | `email` | Email | `drip` | Drip campaign |
    | `email` | Email | `transactional` | Transactional |
    | `social` | Social | `facebook` | Facebook |
    | `social` | Social | `instagram` | Instagram |
    | `social` | Social | `linkedin` | LinkedIn |
    | `social` | Social | `twitter` | X / Twitter |
    | `cpc` | Paid search and ads | `google` | Google Ads |
    | `cpc` | Paid search and ads | `bing` | Bing Ads |
    | `cpc` | Paid search and ads | `meta` | Meta Ads |

    Click **Save**. The editor saves two linked picklists, `UTM Mediums` and `UTM Sources`.

    <Warning>
      A static picklist always needs at least one option. Give every level at least one real option before you save, or the editor skips the empty level.
    </Warning>
  </Step>

  <Step title="Create the UTM Medium Dropdown field">
    Click **Fields** in the sidebar, then **Create new**, and pick **Dropdown**. Set **Name** to `UTM Medium`. In **Picklist**, select `UTM Mediums`. Click **Save to draft**.

    Leave option filtering alone. It is set per taxonomy, in Part 7, once the taxonomies exist. See [Filter options per taxonomy](/recipes/filter-options-per-taxonomy).
  </Step>

  <Step title="Create the UTM Source Dropdown field">
    Click **Create new** again and pick **Dropdown**. Set **Name** to `UTM Source`. In **Picklist**, select `UTM Sources`. Click **Save to draft**.

    The editor wires the cascade to `UTM Medium` for you.
  </Step>
</Steps>

## Check your work

* Two linked picklists exist: `UTM Mediums` with `email`, `social`, and `cpc`, and `UTM Sources` with the sources under each medium.
* `UTM Medium` exists as a Dropdown on `UTM Mediums`, with no filtering yet.
* `UTM Source` exists as a Dropdown on `UTM Sources`, cascading from `UTM Medium`.
* The governance model has eight fields: the six from Parts 2 to 4, plus `UTM Medium` and `UTM Source`.

## Next up

You have the `UTM Medium` and `UTM Source` cascade. In [Part 6: Computed fields](/tutorial/06-computed-fields), you build `UTM Campaign`, `Tagged URL`, `Short URL`, and `QR Code`. For this cascade on its own, see the [cascading dropdowns recipe](/recipes/cascading-dropdowns).


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