Field Types
Deep-dive on the 14 custom field types in PrimeTask - text, textarea, number, currency, date, datetime, dropdown, multi-select, checkbox, rating, progress, URL, email, phone, relationship - with what each stores, validation, display, and supported operations.
PrimeTask supports 14 custom field types, organised by purpose. Each type stores a specific kind of data, displays it in a way that matches the data type, and supports a specific set of operations (filtering, sorting, rollup aggregation). This article is the reference catalogue - pick the type that matches what you want to track.
For the broader system, see Custom Fields Overview.
Requires Pro
Custom field types are part of the Pro tier. Manage your license from License Settings.
At a glance
| Group | Types | Best for |
|---|---|---|
| Text | text, textarea, url, email, phone | Free-form text and contact details |
| Numbers | number, currency, rating, progress | Quantitative values with optional min/max |
| Dates | date, datetime | Time-based fields |
| Selection | dropdown, multi_select, checkbox | Picking from defined options |
| Relationships | relationship | Linking to other entities |
Operation support matrix
Different field types support different operations:
| Type | Filterable | Sortable | Rollup-eligible | Inline-editable |
|---|---|---|---|---|
| text, textarea, url, email, phone | Yes | Yes | No | No (opens panel) |
| number | Yes | Yes | sum, avg, min, max | Yes |
| currency | Yes | Yes | sum, avg, min, max | Yes |
| date, datetime | Yes | Yes | No | Yes |
| dropdown | Yes | Yes | No | Yes |
| multi_select | Yes | Yes | No | Yes |
| checkbox | Yes | Yes | count true | Yes |
| rating | Yes | Yes | sum, avg, min, max | Yes |
| progress | Yes | Yes | sum, avg, min, max | Yes |
| relationship | No | No | Via target field | No (opens picker) |
For filter/sort details, see Task Filters & Sorting.
Pick the field type by the job
Use number or currency for calculations, selection fields for consistent categories, and relationship fields when values need to connect entities.
Text group
Text
A single-line free-form text field.
- Stores: A string
- Validation: Optional required flag, optional placeholder
- Display: Plain text (truncated when narrow)
- Use for: Name extensions, codes, identifiers, short notes
- Example: External reference ID, Client account number
Textarea
A multi-line text field.
- Stores: A string with line breaks preserved
- Validation: Optional required flag, optional placeholder
- Display: Multi-line in the field panel; truncated single-line in compact contexts (badges, list cells)
- Use for: Notes, descriptions, longer-form details
- Example: Bug repro steps, Engagement scope
URL
A web address.
- Stores: A URL string
- Validation: URL format check (must look like a valid URL)
- Display: Clickable link that opens in your browser; the URL is shown truncated when long
- Use for: External references, project resources, dashboards
- Example: Repository URL, Live demo link
An email address.
- Stores: An email string
- Validation: Email format check
- Display: Clickable mailto: link that opens your email app
- Use for: Contact emails on tasks, secondary emails
- Example: Stakeholder email, Account manager email
Phone
A phone number.
- Stores: A phone string (any format - no strict validation)
- Validation: Optional required flag (no format check)
- Display: Click-to-call (
tel:link) on supported platforms - Use for: Contact phone numbers
- Example: Office line, On-call number
Numbers group
Number
A numeric value.
- Stores: A number (integer or decimal)
- Validation: Optional minimum and maximum value
- Display: Locale-formatted number
- Rollup operations: sum, avg, min, max
- Use for: Counts, quantities, scores, durations
- Example: Story Points, Estimated Hours, Headcount
Currency
A monetary value with an optional currency code.
- Stores: An object amount + currency code pair - each entity can use a different currency code
- Validation: Optional min/max
- Display: Symbol + amount (e.g.,
$1,234.56,€500.00,₿0.05) - Currencies supported (14): USD, EUR, GBP, JPY, CNY, CAD, AUD, CHF, INR, KRW, PLN, BRL, MXN, BTC
- Currency role: Optional tag - Budget, Estimate, Expense, Revenue, Payment, Value - drives Cost Summary and financial metrics
- Rollup operations: sum, avg, min, max
- Use for: Budgets, expenses, revenue, deal values, contracts, hourly rates
- Example: Project Budget (Budget role), Contract Value (Value role)
For the financial tracking system, see Rollups & Financial Tracking.
Rating
A 1–5 star rating (customisable min/max).
- Stores: A number, defaults 1–5
- Validation: Min and max are configurable (e.g., 1–10 if you need a wider scale)
- Display: Filled and empty stars (★☆)
- Rollup operations: sum, avg, min, max
- Use for: Feedback scores, priority signals, quality assessments
- Example: Customer Satisfaction, Lead Quality
Progress
A percentage 0–100 (customisable min/max).
- Stores: A number, defaults 0–100
- Validation: Min and max are configurable
- Display: Progress bar with percentage label
- Rollup operations: sum, avg, min, max
- Use for: Custom progress trackers (when the built-in task progress isn't enough)
- Example: Documentation Completion, Migration Progress
Dates group
Date
A calendar date.
- Stores: An ISO date string (no time)
- Validation: Optional required flag
- Display: Locale-formatted date (respects your Date & Time settings)
- Use for: Single-day events, deadlines, anniversaries
- Example: Contract Sign Date, Renewal Date
Datetime
A date and time.
- Stores: An ISO datetime string
- Validation: Optional required flag
- Display: Locale-formatted date + time
- Use for: Scheduled events, timestamps, appointment slots
- Example: Demo Slot, Client Meeting Time
Selection group
Dropdown
A single value chosen from a defined list.
- Stores: The chosen option's ID
- Validation: Options are required at field creation; the value must be one of them
- Options: Each option has an ID, label, colour, and order
- Colours available: 18 colours (slate, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, indigo, violet, purple, fuchsia, pink, rose)
- Display: A coloured badge with the option's label
- Use for: Status, severity, category, tier
- Example: Severity (Critical / High / Medium / Low), Sprint (Sprint 1 / Sprint 2 / Sprint 3)
Multi-Select
Multiple values from a defined list.
- Stores: An array of option IDs
- Validation: Minimum 0 selections (not required by default)
- Options: Same structure as Dropdown - id, label, colour, order
- Display: Multiple coloured badges side by side
- Use for: Tags, categories, channels, audiences
- Example: Tech Stack (React / Node / Postgres), Channels (Email / Slack / SMS)
Checkbox
A boolean toggle.
- Stores:
trueorfalse - Validation: Optional required flag
- Display: A checkmark or empty box
- Rollup operations: count (counts the number of
truevalues across linked entities) - Use for: Yes/no flags, completion markers, confirmations
- Example: Approved, Sent, Reviewed
Relationships
Relationship
Link to one or more other entities - tasks, projects, contacts, or companies.
Relationship fields unlock connections
Use relationship fields when tasks, projects, contacts, or companies need to point to each other.
- Stores: An array of entity IDs (or a single ID for single-link)
- Configuration:
- Target type - one of any, task, project, contact, company - Allow multiple - single-link or multi-link - Direction - directional (one-way) or bidirectional (reverse links automatic) - Rollup config - optional - aggregate a field from all linked entities (sum, avg, min, max, count)
- Display: Entity badges with name, avatar/logo, and (for tasks) status colour dot
- Use for: Linking related work, picking team members, linking to a client
- Examples: Linked Tasks, Client Company (single link), Tech Reviewers (multi-link), Linked Contractors (multi-link with rollup of Hourly Rate)
For the relationship system in depth (bidirectional sync, backlinks, the Connections zone), see Relationship Fields & Connections.
For rollup aggregations on relationship fields, see Rollups & Financial Tracking.
Type-specific configuration options
Some types have additional configuration options on the Field Editor:
Field type is set at creation
Choose the field type carefully. If the purpose changes later, create a new field with the right type.
| Option | Applies to |
|---|---|
| Min / Max value | number, currency, rating, progress |
| Currency code | currency |
| Currency role | currency |
| Options (id/label/colour/order) | dropdown, multi_select |
| Placeholder text | text, textarea, url, email, phone |
| Default value | most types (sets the initial value for new entities) |
| Relationship target | relationship |
| Allow multiple | relationship |
| Direction | relationship |
| Rollup config | relationship |
Things worth knowing
Field type is immutable after creation
You can change a field's name, options, visibility, scope, and most other settings at any time - but not its type. Once you create a Number field, it stays a Number field. To change a type, delete and recreate the field (you'll lose existing values on entities).
Currency stores both amount and currency code per entity
Unlike other field types, Currency stores a amount + currency code pair. This lets each entity use a different currency for the same field. Useful for multi-currency portfolios - Project A's Budget might be in USD, Project B's in EUR.
Dropdown and Multi-Select options have IDs, not just labels
When you remove an option from a Dropdown's options list, entities that had the removed option will silently ignore it (the orphaned ID stays in their data but doesn't render). To clean up, manually clear those entities' values. Renaming a label doesn't break anything since the ID stays the same.
Checkbox rollups count true values
When you put a rollup on a relationship field that targets a Checkbox field, the operation Count counts the number of true values across linked entities. Useful for "How many tasks are flagged as Approved?"
Use checkbox rollups for approvals
Checkbox fields are useful when a linked set needs a simple count of approved, done, or selected items.
Min/Max isn't enforced strictly during edit
When you set a Min/Max on a number-style field, the editor warns if your value falls outside the range - but the data still saves. This is intentional so existing data doesn't break when you change the range later.
URL, Email, and Phone get clickable display
These three field types render as clickable links with the appropriate protocol - https:// opens in your browser, mailto: opens your email app, tel: initiates a call (on supported platforms). The validation only checks format; it doesn't reach the URL/email to test if it's live.
Relationship fields don't appear in standard sort or filter
Relationship fields can be filtered by "is set / is not set" but not by individual linked entities (use the Connections zone or the relationship picker for that). Sorting by a relationship field isn't supported.
Rating and Progress are special number types
Rating and Progress are essentially numeric fields with custom display. Internally they store numbers - you can sort, filter, and roll them up like any number. The display (stars / progress bar) is what makes them feel different.
Each field has space for an optional description
Use the description to remind your team what the field is for and how to fill it. Descriptions show as help text below the field on edit forms.
Common questions
"Can I have a number field with decimals?"
Yes - Number accepts integer and decimal values. The Min/Max and display format respect locale settings.
"How many options can a Dropdown have?"
There's no hard cap, but practically you'll want fewer than ~50 to keep the picker usable. For long lists (countries, industries), consider using a multi-select with searchable options.
"Why doesn't my URL field validate before saving?"
URL validation only checks the format ("looks like a URL") - it doesn't reach out to verify the URL exists or is reachable. Mistyped URLs save successfully but fail when clicked.
"Can I use a Phone field as a number?"
No - Phone is a string field. PrimeTask doesn't validate or normalise the format, so any text saves. Use Number for actual numeric values.
"What's the difference between Date and Datetime?"
Date stores just the calendar day. Datetime adds a specific time of day. Use Datetime when the time matters (meetings, scheduled calls); use Date for day-only events (birthdays, deadlines without specific times).
"Can I roll up a Text field?"
No - text-type fields aren't rollup-eligible. Only numeric types (number, currency, rating, progress) and Checkbox (count of trues) support rollups.
"Can a relationship field point to multiple entity types?"
Yes - set the target type to any and the relationship picker lets you choose tasks, projects, contacts, or companies.
"How does Bidirectional differ from Directional?"
A directional relationship is one-way - A links to B, but B doesn't know about A. A bidirectional relationship maintains backlinks automatically - A links to B, and B's Connections zone shows A as an incoming link. See Relationship Fields & Connections.
"What happens to existing values when I change a field's options?"
Adding new options is safe - existing values stay. Removing options leaves orphaned IDs in entity data (those entities show no option). Renaming options updates the display label everywhere immediately.
Where to go next
| If you want to… | Read this |
|---|---|
| Pick a template instead of building from scratch | Field Templates |
| Set up relationship fields with rollups | Relationship Fields & Connections |
| Use rollup aggregations and currency roles | Rollups & Financial Tracking |
| Control where each field shows up | Field Visibility & Tabs |
| Filter and sort by custom field values | Task Filters & Sorting |
| Configure fields from Settings | Category Management Settings |
| Return to the Custom Fields hub | Custom Fields Overview |
