Skip to main content
Custom fields extend Redmine’s built-in data model. They appear alongside standard fields on forms and are searchable, filterable, and exportable.

Supported entities

Custom fields can be added to the following entities:

Issues

The most common use case. Fields can be scoped to specific trackers and projects.

Projects

Extra metadata about a project, visible on the project overview page.

Users

Additional profile information for user accounts.

Groups

Extra attributes on groups.

Time entries

Extra data attached to time log records.

Versions

Extra metadata on project versions (milestones).

Documents

Extra metadata on documents uploaded to projects.

Issue priorities

Extra attributes on priority enumeration values.

Time entry activities

Extra attributes on time entry activity enumeration values.

Field formats

Each custom field has a Format that determines the type of data it stores and how it is displayed.
FormatInternal nameDescription
Text (single line)stringA single-line text input. Supports min/max length, regexp validation, and optional URL pattern. Searchable.
Long texttextA multi-line textarea. Supports full text formatting if enabled. Searchable.
IntegerintA whole number. Supports min/max length validation and can be summed in issue lists.
FloatfloatA decimal number. Supports totalling in issue lists.
DatedateA date picker. Stored as YYYY-MM-DD. Supports date filters.
BooleanboolA yes/no field. Rendered as a checkbox, radio button, or select list.
ListlistA dropdown list of predefined values you define. Supports multiple selection and is searchable.
Key/value listenumerationA list backed by a CustomFieldEnumeration record, similar to list but with additional metadata.
UseruserA dropdown that shows project members. Can be filtered by role. Supports multiple selection.
VersionversionA dropdown that shows project versions. Can be filtered by version status. Supports multiple selection.
LinklinkA URL field. Renders as a clickable link. Supports URL pattern templates.
AttachmentattachmentA file upload field. Files are attached to the record. Not filterable and not bulk-editable.

Common field options

All custom fields share these configuration options:
OptionFieldDescription
Requiredis_requiredUsers must fill in the field before saving the record.
For all projectsis_for_allIssue custom fields: the field appears in all projects. When unchecked, you choose which projects include the field.
Used as filteris_filterThe field appears as a filter option in the issue list and query builder.
SearchablesearchableThe field’s values are included in Redmine’s full-text search. Supported by string, text, and list formats.
Multiple valuesmultipleAllows the user to select or enter more than one value. Supported by list, user, version, and enumeration formats.
Default valuedefault_valuePre-fills the field when a new record is created.
DescriptiondescriptionExplanatory text displayed below the field on the form.
VisiblevisibleWhen unchecked, the field is only visible to users whose role is listed in the Roles section.
EditableeditableControls whether the field can be edited by users (as opposed to being read-only).
Minimum lengthmin_lengthFor text-based formats: the minimum number of characters required.
Maximum lengthmax_lengthFor text-based formats: the maximum number of characters allowed.
Regular expressionregexpFor text-based formats: validates the value against a regular expression. Maximum 255 characters.
URL patternurl_patternRenders the field value as a link. Use %value%, %id%, %project_id%, and %project_identifier% as substitution tokens.

Issue custom fields: tracker and project scoping

Issue custom fields have two additional scoping options:
When enabled, the field appears on issues in every project. When disabled, you select specific projects from a list on the custom field’s edit page (project_ids).
Select which trackers display the field. For example, a “Steps to reproduce” field might only apply to the Bug tracker. If no trackers are selected, the field does not appear on any issue form.
Issue custom fields that are not visible to all roles must have at least one role listed in the Roles section. This is enforced by a validation in IssueCustomField.

Creating a custom field

1

Open the Custom fields list

Go to Administration → Custom fields and click New custom field. Choose the entity type (Issues, Projects, Users, etc.).
2

Choose a format

Select the field format from the Format dropdown. The available options depend on the entity type.
3

Enter a name

Names must be unique within the same entity type. Maximum 30 characters.
4

Configure options

Fill in the relevant options — required, default value, validators, visibility, and (for issues) tracker and project scope.
5

Save

Click Create. The field immediately appears on forms for the selected entity type.

Visibility and role-based access

By default (visible = true), a custom field is visible to all users who can view the record. When you uncheck Visible, you must select which roles can see the field. Redmine uses a join table (custom_fields_roles) to store this mapping.
Use role-based visibility to show sensitive fields — such as internal cost estimates or confidential notes — only to managers while keeping the rest of the issue form visible to developers and reporters.