Custom fields
Custom fields are task fields your workspace makes for itself - "Points" (a number), "Client" (a choice), "Due to client" (a date), "Reviewer" (a person). You set them on tasks like any other property, see them in lists and on cards, and filter and sort by them in the query bar.
Status, priority, type and labels stay built in (see Statuses, priorities, types & labels). Custom fields are for everything else.
#Making a field
Admins make fields in Settings → Workspace Settings → Custom fields:
- Press + (Add a field).
- Type its name and pick its type. To keep it to some Spaces or task types, pick them with Where and Types on the same row - see Where a field applies.
- Press Enter.
Any name works, even one a built-in field has ("Status"), as long as no other
field in the workspace has it. Each row shows the field's name in the query
bar beside it, custom. and its name - see
Filtering and sorting.
| Type | Holds |
|---|---|
| Text | A line of text. |
| Number | A number - points, hours, a budget. |
| Select | One choice from a list you make. |
| Multi-select | Any number of choices from that list. |
| Date | A day. |
| Checkbox | Yes or no. |
| Person | People in the workspace. |
| URL | A link, starting https://, http:// or mailto:. |
These are the same types as a Database's columns, so a Select looks and works the same in both.
Each row shows where the field applies: Where ("Whole workspace", "Only in Client 2") and Types ("All types", "Bug"). Click either to change it - see Where a field applies.
Each field's ••• menu (or right-click the row) holds the rest:
- Edit choices… - for a Select or Multi-select: add a choice (admins can also add one right from a task: type it in the field's picker and choose Create choice "…"), rename it, pick its color, drag to reorder or remove it. The choices button on the row opens the same list.
- Type - change what kind of field it is.
- Where and Types - the same choices as the row's buttons.
- Hidden from guests - guests don't see the field or its values, like an internal task. See Access & permissions.
- Move to Trash - see Removing a field.
Drag a row by its grip to change the order fields show in on a task and in Display properties.
#Where a field applies
A field can be on every task, or only on some:
- Where - Every task in the workspace, or Only in one or more Spaces. A field for a client's portal can be only in that client's Space, or in each client's Space. With no Spaces yet, Where offers Make a Space….
- Types - Every type, or only tasks of some task types. A Bug can have "Environment" and "Steps to reproduce" without them cluttering a Feature.
Both lists are searchable and stay open, so you can tick several. With both set, a field is only on tasks in one of its Spaces and of one of its types. A task with no type gets only fields with no type limit.
Changing either never deletes a value. A task outside the field keeps its value, hidden, and shows it again if the field (or the task) changes back. Each list says how many tasks have a value it hides.
#Why a field's type gets fixed
You can change a field's type until a task has a value in it. After that its Type menu says how many tasks have one, and the type stays as it is: a number can't become a date without losing what people typed. To change it, clear those values first (filter on the field's Has a value to find them), or make a new field.
Tasks in the Trash count too, though the menu's number leaves them out. If the type still won't change, restore those tasks and clear their values, or delete them for good.
#Setting values on a task
Open a task: its custom fields come after the built-in properties, in the side panel or the row of chips under the title. A field with no value reads "No field". Click it to set it:
- Text, Number and URL - type the value and press Enter. Leave the box empty to clear it.
- Date - pick a day.
- Select, Multi-select and Person - a searchable list: type to narrow it, arrows and Enter to pick. No field at the top clears it. A Multi-select or Person list stays open, so you can pick several.
- Checkbox - a click ticks or unticks it.
A task shows the fields that apply to it: those for its Space (or every Space) and its type (or every type). If it moves to another Space or changes type, values for fields that don't apply any more are kept but hidden, and come back if it moves or changes back. Change the type and the fields follow at once.
Duplicate copies a task's values along with everything else. When a repeating task makes its next copy, the copy keeps them too, and each Date moves on by as much as the task's own dates do: a "Due to client" two days before the due date is two days before the next due date. A task with no dates of its own keeps its custom dates as they are.
Everyone who can edit tasks can set values. Guests see the values of fields that aren't hidden from them, but can't change them.
#Where fields show
- List - a column per field, edited in place. Sort by it from its header, and resize and move it like any other column. A field kept to some Spaces or types has a cell only on the tasks it applies to, and you set it there like any other. See List.
- Board and Canvas - a chip on each card that has a value, after the field's name. Click it to change it.
- Display → Display properties - each field has a toggle beside the built-in properties, to hide it in this view or show it again.
- Display → Ordering - sort by any field.
A field shows in a view only once a task there has a value (or the view filters or sorts by it), so a new field doesn't add an empty column to every list in the workspace. When a list is narrow, columns hide to make room: Progress and Relations first, then custom fields, then the other built-in ones. In Spreadsheet density nothing hides - the list scrolls sideways.
#Filtering and sorting
#The Filters menu
Filter → Custom fields lists each field:
- Select, Multi-select, Person and Checkbox fields offer their choices (or Yes / No) - pick one or several.
- Text and URL fields have a box: type what the value contains and press Enter. It ignores case.
- Number and Date fields have a box too: a value (5,
2026-11-01), or a comparison (>3,<=10,>2026-11-01). - Has a value and No value work on every field but a checkbox.
The filter shows as a chip beside the others. Click the chip to switch between is and is not (contains and doesn't contain for text), change its choices or value, or remove it - a field you're filtering on leaves the Filters menu until then. Search the Filters menu by a field's name to go straight to it.
#In the query bar
In the query language a custom
field is custom. and its name, field:value like every field. The name is
written in lowercase, with a hyphen for each run of spaces or punctuation:
"Due to client" is custom.due-to-client. Only the letters a-z and digits
are kept as they are: anything else, accented letters included, becomes a
hyphen too ("Résumé" is custom.r-sum, "Café notes" custom.caf-notes). A
name with none of a-z or digits is custom.value, and a name another field
already uses gets a number (custom.due-date-2). Settings → Workspace Settings →
Custom fields shows each one, and the query bar suggests them as you type
part of a name. A field's key works too: custom.cf-0003.
| Query | Matches tasks… |
|---|---|
custom.client:Acme | whose Client is Acme (a choice, by name) |
custom.client:Acme,Globex | whose Client is either |
-custom.client:Acme | whose Client isn't Acme |
custom.points:5 | whose Points are exactly 5 |
custom.points:>3 | whose Points are more than 3 (also >=, <, <=) |
custom.due-to-client:<2026-11-01 | with a Due to client day before November 1 |
custom.notes:legal | whose Notes contain "legal" (text and links, any case) |
custom.reviewer:me | where you're the Reviewer (a person by name, email or me) |
custom.approved:yes | with Approved ticked (no for not ticked) |
custom.points:unset | with no Points, of those Points applies to |
custom.points:any | with any Points (-custom.points:any is the same as custom.points:unset) |
sort:custom.points | sorted by Points, smallest first (sort:-custom.points for largest) |
hide:custom.points | hiding the Points column and chips |
For a field kept to some Spaces or task types, unset and any count only
the tasks it applies to: custom.environment:unset is the Bugs still missing
an Environment, not every Feature too. A value a task keeps from before it
changed type or moved doesn't count either.
Why custom.: a field can have any name, including one a built-in field
has, or one PTB adds later. The prefix keeps them apart: status:Done is
always the built-in status, and custom.status:Done always your own field.
For the same reason a field never works without it - points:5 isn't read
as custom.points:5.
#Renaming a field
Rename a field by typing over its name in Settings → Workspace Settings →
Custom fields. Every chip and column changes at once, and so does its query
name: saved views, project and milestone views, dashboard filters and calendar
feeds that use custom.<old name> are rewritten to the new one and keep
working. An old
query you kept somewhere else (a link, a note) still reads too, unless another
field has taken that name since.
Renaming or recoloring a choice works the same way: tasks and filters keep it. Dashboard charts that group by or add up the field keep working too.
#Removing a field
Move to Trash takes the field off every task and view at once. A dashboard chart that used it says the field was removed, until you edit it or restore the field. Its values are kept, so restoring it from the Trash brings everything back - unless the workspace is at its plan's field limit, which counts a restored field like a new one. Deleting it from the Trash for good can't be undone.
#Activity
Changes are recorded in Activity like any other:
- A value - "JR changed Points from 3 to 5". Revert puts the old value
back. Text is logged as changed, without its words, so it has no Revert.
Filter by it with
activity.field:custom. A template's set of values is logged as "changed" (activity.field:custom-fields). - A field itself - made, renamed, its type, choices, Spaces, task types or
guest setting changed, trashed or restored. Filter by it with
activity.kind:field.
Changes to a field show to whoever can see the field: guests don't see changes to fields hidden from them, and no one sees changes to a field kept to Spaces they're not in.
#Charts and dashboards
A dashboard chart can use your fields:
- Group by a Select, Multi-select or Person field - a bar or slice for each choice or person, in the field's order and colors, and "No field" for tasks with none. A task with several choices counts once in each.
- Measure the sum or average of a Number field, on a Bar, a Line or a KPI - "Points left: 34". An average ignores tasks with no value.
- Narrow a KPI to the tasks with one choice or person of a Select, Multi-select or Person field (Only tasks), or to those with none.
- Click a bar or slice to open the tasks behind it, as for any chart.
Charts follow a field's rename. If the field is removed (or stops being the right kind), its charts say so instead of drawing, until you edit them. A field restored from the Trash brings its charts back.
#Elsewhere
- The connector - Claude and other AI tools connected with an API key
(Settings → Account → API keys) can list fields with
list_fields, see a task's values inget_task, set them withfieldsoncreate_taskandupdate_task(by the field's name or key, nocustom.needed) - and oncreate_templateandupdate_templatefor a template's starting values - and filterlist_taskswith the query language above.create_fieldmakes a field (its name, type, choices,spaces, tasktypesand whether it's internal) andupdate_fieldrenames one, changes a select's choices, its Spaces or types, or toggles internal, as an owner or admin can in Settings. A type can't be changed, and a choice a rename or reorder keeps is the same choice, so tasks keep their values.update_taskssets a field on every task a query matches in one confirmed call, after showing which tasks it would change.create_dashboardandupdate_dashboardchart by a field, and narrow a KPI with ascopelikecustom.client:Acme(orcustom.client:unset). - Export - the toolbar's ••• menu exports a view as CSV or JSON with a column per field. A CSV column that shares a built-in column's name reads "Status (custom)". iCalendar files leave them out.
- Workspace templates - a workspace made from a template gets the
template's fields, and the values on its tasks. A workspace written out as
a template carries its fields and its tasks' values too. A template says
which Spaces and task types a field belongs to and whether guests can see it
in the field's brackets, repeating
space:ortype:for several:Points (number, space: Design, space: Client, type: Bug, guests: hidden). A workspace made from it gets the field in Spaces of those names (made if it has none) and on its task types of those names, hidden from guests if the template says so. - Task templates - a template in Templates can set values for any of the workspace's fields, beside its other properties. A task made from it starts with them, and New task says "custom fields" among what the template changed. A value for a Space's own field lands only when the new task ends up in that Space. Save as template and Update template from this task take the task's values along.
- Plans - your plan may limit how many fields a workspace has. Settings → Workspace Settings → Custom fields then shows how many you've used, and once you're at the limit it says so, with a way to upgrade, before you start on another. Fields in the Trash don't count.