Beginner May 3, 2026 · 2 min read

Loom has 20 field types in total (see the Field Type Catalogue for the full table). In practice, five carry most of the weight. Learn these and you can model 80% of real applications.

1. text — short strings

The default for anything that fits in 255 characters: names, codes, slugs, single-line descriptions.

- name: company_name
  type: text
  required: true
  searchable: true

Generates VARCHAR(255) in MySQL, string in Go, <input type="text"> in HTML.

2. select — fixed enums

Anything from a small list. Frappe's pattern of using strings (not integers) for enum values keeps SQL queries readable.

- name: status
  type: select
  default: "draft"
  options:
    - label: Draft
      value: draft
    - label: Sent
      value: sent
    - label: Paid
      value: paid
      color: green

The optional color per-option drives badge colours in the generated UI.

The Loom equivalent of a foreign key. Stored as CHAR(36) (UUID) in MySQL, *uuid.UUID in Go.

- name: customer_id
  type: link
  target: Customer        # required: PascalCase model name
  required: true

The target Thread must exist. The generated UI renders an autocomplete picker; the API accepts the linked record's UUID.

4. decimal — money and measurements

Anything where floating-point representation errors would matter. Loom's default precision is DECIMAL(15,4) — fifteen total digits, four after the point — which covers prices up to ~10 trillion with sub-cent precision.

- name: amount
  type: decimal
  required: true
  min: 0

The min and max constraints validate at API time and become validate:"min=N,max=N" tags on the generated Go struct.

5. markdown — long-form content

When you need formatting (notes, blog posts, internal documentation). Stored as LONGTEXT; the UI renders an editor with preview.

- name: notes
  type: markdown

Choose markdown over textarea whenever the content might benefit from formatting; choose textarea for plain multi-line text without expectations.

What about the other fifteen?

If you need… Use
Email addresses (with format validation) email
Phone numbers phone
URLs url
Whole numbers integer
True/false boolean
Calendar dates without time date
Date + time datetime
Single-pick from a small set, rendered as radios radio
Multi-pick from a list multiselect
File uploads (any format) attach
Image uploads (with thumbnail rendering) image
Arbitrary structured data json
Code / config snippets with syntax highlight code
Auto-generated UUID (in addition to the implicit id column) uuid

The full reference is at Reference → Field Type Catalogue, which includes the exact Go and SQL types for each.

Was this article helpful?