> ## 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 8: Your first submission

> Assemble three taxonomies with per-taxonomy option filters, then run a campaign from a draft through to approved records with live short URLs.

<Info>
  **What you'll learn:** how a taxonomy turns fields into a form, how `filter_options` narrows a shared dropdown per taxonomy, how the Quick, Form, and Grid modes work, and how approving a submission produces records.

  **What you'll build:** three taxonomies (Email, Social, Ads), each with its own `utm_medium` filter, plus one approved submission whose rows land as campaign records with live short URLs.

  **Prerequisites:** [Part 7: Computed fields](/tutorial/07-computed-fields).
</Info>

## Why this matters

Up to this point the governance model has been a static set of definitions. A taxonomy is what turns those definitions into a live form a user can fill in. Three taxonomies, one each for email, social, and paid campaigns, let your team share almost all of the same rules (same fields, same computed chain, same picklists) while each channel surfaces only the UTM medium that applies to it. Once you approve a submission, every row becomes a record, every record has a live short URL, and the pipeline you sketched in Part 1 is doing real work.

## Concepts first

### Taxonomy

A **taxonomy** pulls a subset of the GM's fields into an ordered list and calls that combination a form. A field placed on a taxonomy can carry **per-taxonomy overrides**. The one you'll use here is `filter_options`, which narrows a Dropdown field's visible codes to just the subset that taxonomy cares about. A single field like `utm_medium` can appear on three taxonomies with three different filters while the underlying picklist stays whole. See the [taxonomies reference](/reference/taxonomies).

### Submission statuses

A submission moves through a small set of statuses: **Draft** while it is being edited, **Awaiting review** once it is submitted, **Approved** when accepted, **Rejected** when sent back, and **Cancelled** if withdrawn. Only an approved submission produces **records**, the permanent governed output. Whether a review step exists depends on the taxonomy: if review is not required (the default), anyone who can edit the submission finalizes it directly, with no "Awaiting review" step. The full state diagram is in the [submissions reference](/reference/submissions).

### Quick, Form, and Grid modes

The builder has three fill modes, switched in the header.

* **Quick** (the default): a compact, single-record form, good on a phone.
* **Form**: a single-record vertical form; computed fields appear in a sticky panel.
* **Grid**: a spreadsheet for many rows at once, with copy and paste, a fill handle, and row insert, duplicate, delete, and reorder.

Quick and Form are single-record modes. The moment a submission has more than one row they are disabled and the builder switches to Grid. The [fill modes](/concepts/form-vs-grid-mode) covers the switching rules.

## Step-by-step

<Steps>
  <Step title="Create the Email Campaigns taxonomy">
    Open the `Marketing` GM, click **Taxonomies**, then **Create new taxonomy**. Name: `Email Campaigns`. Add every GM field **except** `qr_code`: `campaign_name`, `goal`, `country`, `region`, `launch_date`, `destination_url`, `utm_medium`, `utm_source`, `utm_campaign`, `tagged_url`, `short_url`. Open the `utm_medium` field's options on this taxonomy and **include** only `email`. That filter means submissions here only ever see `email` in the medium dropdown.
  </Step>

  <Step title="Create the Social Campaigns taxonomy">
    Click **Create new taxonomy** again. Name: `Social Campaigns`. Add every GM field **including** `qr_code`, because social posts are the one place the QR code actually gets printed. Set `utm_medium` to **include** only `social`. Save.
  </Step>

  <Step title="Create the Ad Campaigns taxonomy">
    Click **Create new taxonomy** once more. Name: `Ad Campaigns`. Add every GM field **except** `qr_code`. Set `utm_medium` to **include** only `cpc`. Save.
  </Step>

  <Step title="Publish the governance model">
    A submission's form comes from the governance model's **published** revision, so publish before you can submit. Open the GM's revisions and publish the current version. If you change fields or picklists later, republish to roll the change out to new submissions. See the [publish a revision guide](/guides/publish-revision).
  </Step>

  <Step title="Assign the taxonomies to the workspace">
    Open the `2026 Campaigns` workspace (from Part 2). In **Taxonomies**, assign all three: `Email Campaigns`, `Social Campaigns`, `Ad Campaigns`. Save. The workspace can now take submissions for any of them.
  </Step>

  <Step title="Start a new submission">
    In the workspace, click **New submission** and pick `Email Campaigns`. The builder opens in **Quick** mode with a single blank row and a default name like `2026 Campaigns, Nov 15` that you can rename inline.
  </Step>

  <Step title="Fill in the first row">
    Enter `campaign_name = Black Friday 2026`, `goal = Awareness`, `country = United States`, `region = California`, `launch_date = 2026-11-15`, `destination_url = https://shop.acme.example/deals`, `utm_medium = Email` (notice it is the only medium offered, which is `filter_options` at work), `utm_source = Newsletter`. The computed fields fill in as you type.

    <Note>📸 Screenshot coming soon: part 08 quick mode</Note>
  </Step>

  <Step title="Watch the computed previews">
    `utm_campaign` shows `awareness-us-california-20261115-black_friday_2026`, `tagged_url` shows the full URL with query parameters, and `short_url` shows a reserved 8-character slug. None of these are live yet; they are previews of what will be stored on approval.
  </Step>

  <Step title="Save as draft and add rows">
    Click **Save as draft**. (Drafts save even if a row still has validation errors.) Add a couple more rows. As soon as there is more than one row, Quick and Form are disabled and the builder switches to **Grid**, with the same computed columns updating live.

    <Note>📸 Screenshot coming soon: part 08 grid mode</Note>
  </Step>

  <Step title="(Optional) Paste rows from a spreadsheet">
    Copy rows from a spreadsheet whose columns are in the taxonomy's field order and paste with **Ctrl/Cmd+V** into the grid. Cells map left to right by position; there is no header matching, so if your columns are in a different order, rearrange them first or values land in the wrong fields.
  </Step>

  <Step title="Finalize the submission">
    Click **Create Record(s)**. Because this taxonomy does not require review, the submission goes straight to **Approved** and each valid row becomes a record. (If your workspace requires review for this taxonomy, you instead click **Submit for review**, the status shows **Awaiting review**, and a reviewer who can manage the workspace clicks **Approve**.) Approval requires every row to be valid; an invalid row blocks it and the per-cell errors are shown.
  </Step>

  <Step title="Inspect the records">
    Open **Records** in the workspace. The new records appear with their final values, their short URLs marked active, and (for any Social row) a rendered QR code in the `qr_code` column.

    <Note>📸 Screenshot coming soon: part 08 record detail</Note>
  </Step>
</Steps>

## Check your work

* Three taxonomies exist on the `Marketing` GM, each with the right field set and the right `utm_medium` include filter.
* The governance model has a published revision, and the `2026 Campaigns` workspace has all three taxonomies assigned.
* One submission went from Draft to Approved (through Awaiting review if your taxonomy requires review), producing records from its rows.
* Each record carries a populated `utm_campaign`, `tagged_url`, `short_url`, and (for Social) a `qr_code`.
* Each short URL is marked active; visiting the slug on your account's shortener domain redirects to the tagged destination URL.

## What you just built

The end-to-end flow from Part 1 is now running. A user with no governance knowledge can open the `2026 Campaigns` workspace, pick a taxonomy, type a handful of values, and walk away with UTM-tagged, shortened, QR-coded links. The governance model enforces every rule you wired in Parts 2 to 7 without anyone having to remember them.

```mermaid theme={null}
flowchart LR
  subgraph GM[Marketing GM · published]
    Flds[Fields] --> Tx[Email / Social / Ads<br/>taxonomies]
  end
  Tx --> WS[2026 Campaigns workspace]
  WS --> Sub[Submission<br/>Draft → (Awaiting review)]
  Sub -->|Approve| Rec[Records<br/>live short URLs]
  Sub -.->|Reject / Cancel| X[discarded, no records]
```

## Gotchas

* **`filter_options` only narrows the entry form.** The underlying picklist still holds all three mediums; you are hiding the others for this taxonomy. Anyone reading the records or the picklist directly still sees the full list.
* **A short URL slug is frozen once the submission is approved.** The slug becomes part of the record; you cannot edit it afterward. If you need a different slug, create a new submission. You can still update a live link's destination URL, just not its slug or domain. See the [short URL reference](/reference/fields/short-url).
* **Grid paste matches the taxonomy's field order, not your column headers.** There is no header matching. If you added `destination_url` to the taxonomy before `launch_date` but your sheet has them the other way around, the paste lands the URL in the date cell and validation fails. Arrange the sheet to match.
* **An option filter on `utm_medium` does not cascade to `utm_source`.** Filtering the medium to `email` does not also filter the sources; `utm_source` keeps showing every child of whichever medium was picked. If "Allow new values" ever added an off-topic source under `email`, it would still appear. Use reviewer discretion.
* **Approved submissions are locked.** Once approved, a submission cannot be edited or re-approved, and editing the rows of a not-yet-approved submission resets it to Draft. See [review and approve submissions](/guides/review-and-approve-submissions).

## You did it

The eight parts cover one complete, real-world workflow. Everything else in Terminus Hub (automated picklists, the other computed field types, sharing and embedding, analytics) is a variation on what you've already built. A few places to go next:

<CardGroup cols={2}>
  <Card title="Automated picklists" icon="database" href="/recipes/automated-picklist">
    Source dropdown options from another taxonomy's records.
  </Card>

  <Card title="Short URL slug modes" icon="link" href="/recipes/short-url-slug-modes">
    The two alternatives to auto-editable and when to use them.
  </Card>

  <Card title="Other computed fields" icon="function-square" href="/recipes/other-computed-fields">
    Auto Number, Random, Constant, Terminus ID.
  </Card>

  <Card title="Share and embed" icon="share-2" href="/guides/share-embed">
    Put a governance form in front of people outside your account.
  </Card>

  <Card title="Analytics" icon="bar-chart-3" href="/guides/analytics">
    See clicks and scans roll up by any field you defined.
  </Card>

  <Card title="Field reference" icon="book" href="/reference/fields">
    Every field type, picklist type, and taxonomy setting in isolation.
  </Card>
</CardGroup>
