Custom Forms and Custom Fields
Building forms
Custom forms attach to objects such as projects, tasks, issues, portfolios, programs, users, and companies. Each form contains sections and fields; field types include text, paragraph, dropdown, checkbox, radio button, date, typeahead, calculated, and external lookup. Field names used by the API must be unique across the instance, while labels can repeat. Forms can be shared with groups, teams, users, or system-wide, and multiple forms can attach to the same object. Display logic and skip logic change which sections appear based on earlier answers; they affect presentation, not data validation.
Calculated fields
Calculated fields use expressions with field references and functions such as IF, DATEDIFF, CONCAT, and ROUND. They are evaluated when the object is saved or the value is refreshed, not continuously in real time. A common trap is referencing a field that is not on the form or is not available on that object; the calculation may return blank or an error. Another trap is expecting a calculated field to change a status or trigger automation; it only returns a value.
Worked example
A team wants a 'Risk' field on projects that shows 'High' when percentComplete is below 50 and the planned completion date is within three days. Build a calculated field with IF(AND({percentComplete}<50, DATEDIFF({plannedCompletionDate}, NOW())<=3), 'High', 'Low'). Confirm that percentComplete and plannedCompletionDate are available on the project form. Rule of thumb: if a calculated field result looks stale, save the object or run a recalculation; do not assume the formula is wrong.