Overview
Custom Fields allow you to extend the standard data model with additional fields tailored to your specific business needs. You can add custom fields to the following entities:
Cases
Line Items
Products
Doctors
Offices
Customers
Billing Accounts
Exception Tasks
Exception Task Templates
Production Tasks
Production Task Templates
Users
Custom fields are fully integrated into the system and appear alongside standard fields in forms, detail views, and data tables.
Pilot is continually adding new entities and custom fields. If you'd like us to add another entity, simply email [email protected]
Field Types
Custom fields support a variety of data types to accommodate different kinds of information:
Text Fields
Single Line Text
Maximum 100 characters
Best for short text entries like names, codes, or identifiers
Example uses: Reference numbers, scanner IDs, account codes
Multi Line Text
Maximum 2,000 characters
Ideal for longer text entries like notes, descriptions, or comments
Example uses: Special instructions, detailed notes, custom requirements
Number
Numeric values with up to 5 decimal places
Supports both integers and decimals
Example uses: Measurements, quantities, pricing multipliers
Selection Fields
Dropdown Select
Single selection from a predefined list of options
Users can only choose one option from the list
Example uses: Scanner type, material preference, region
Multiple Checkboxes
Multiple selections from a predefined list of options
Users can select zero, one, or multiple options
Example uses: Available services, applicable features, supported materials
Single Checkbox
Simple yes/no or true/false value
Displays as a checkbox that can be checked or unchecked
Example uses: Rush order flag, priority customer, new patient
Date and Time Fields
Date Picker
Calendar-based date selection
Stores date only (no time component)
Example uses: Expected delivery date, contract renewal date
Time Picker
Time selection (hours and minutes)
Stores time only (no date component)
Example uses: Preferred delivery time, appointment time
Date & Time Picker
Combined date and time selection
Stores both date and time components
Example uses: Scheduled appointment, expected completion timestamp
User Field
Selection of a user from your organization
Displays user's name and profile picture
Stores reference to the selected user
Example uses: Account manager, assigned technician, sales representative
Automatically Calculated Fields
Formula - separate section below
Rollup - separate section below
Property Sync - separate section below
Formulas
Allow you to construct simple formulas using boolean logic and various Excel-like functions to automatically calculate a field.
Syntax
Use properties:
[properties.property_name]Operators:
+,-,*,/,<,>,<=,>=,=,!=,&&,||,!Numbers:
100,1.5Strings:
"text"or'text'Booleans:
true,false
Available Properties
You can only use the properties from the target entity. Cross-entity property reference is not allowed - use Rollup or Property Sync if you want to reference a property from another entity
Functions
Math:
abs(number)- Absolute valuemax(num1, num2)- Maximum of two numbersmin(num1, num2)- Minimum of two numberspower(base, exponent)- Raise number to poweradd(num1, num2)- Add two numberssubtract(num1, num2)- Subtractnum2fromnum1sqrt(number)- Square rootround_down(number, precision)- Round down to decimal placesround_nearest(number, precision)- Round to nearest decimal placesround_up(number, precision)- Round up to decimal places
String:
concatenate(str1, str2, ...)- Combine strings (up to 100)contains(text, substring)- Check if text contains substring (case-sensitive)starts_with(text, substring)- Check if text starts with substring (case-sensitive)lowercase(text)- Convert to lowercaseuppercase(text)- Convert to uppercasestring_length(text)- Get string length
Date:
add_days(date, days)- Add days to datesubtract_days(date, days)- Subtract days from datetime_between(date1, date2)- Time difference in millisecondsmonth(date)- Get month number (1-12)year(date)- Get year number
Conversion:
number_to_string(number)- Convert number to stringstring_to_number(string)- Convert string to number
Conditional:
if(condition, valueIfTrue, valueIfFalse?)- Conditional expressionis_known(property)- Check if property has a value
Examples
[properties.line_item_amount] * 1.08
if(is_known([properties.discount]), [properties.price] - [properties.discount], [properties.price])
Rollups
Rollup fields automatically calculate aggregated values from associated records (e.g., sum line item totals on a case, count cases for a doctor).
To create:
Select Association: Choose which related entity to aggregate (e.g., Case → Line Items)
Choose Rollup Type:
Count: Total number of records
Sum: Add up values from a numeric property
Average: Calculate mean of a numeric property
Min/Max: Find minimum or maximum value
Add Conditions (Optional): Filter which records to include (e.g., only line items > $100)
Example
Doctor field: "Total Revenue"
Association: Cases
Rollup Type: Sum
Property: Total Amount
Condition: Status = "Invoiced"
Result: Sums all invoiced case totals for each doctor
Auto-Calculation
Values recalculate automatically when associated records change
Cannot be manually edited (always computed)
Updates happen in real-time when dependencies change
Use Cases
Customer/Doctor metrics (total cases, revenue, remake rate)
Case aggregations (total line items, sum of costs)
Financial summaries (outstanding balance, payments received)
Property Sync
Property sync fields automatically display values from associated records, keeping data synchronized without manual updates.
To create:
Select Source Entity: Choose which related entity to pull data from (e.g., Billing Account on a Case)
Select Source Property: Choose which property to sync (e.g., Phone Number)
Set Sync Criteria:
First Created: Syncs from the oldest associated record
Most Recently Created: Syncs from the newest associated record
Example
Create a "Customer Phone" field on Cases that syncs the phone number from the associated Billing Account. When the Billing Account's phone changes, the Case automatically shows the updated value.
Key Features
Read-only: Values update automatically, cannot be edited directly
Real-time: Updates when source property changes or associations are modified
Requirements
An association must exist between the entities
Source property must be accessible on the related entity
Field Configuration
Required Flag
When a custom field is marked as Required, it must have a value before certain actions can be performed:
For Cases:
Cases cannot be scheduled if required custom fields are not filled out
Users will receive an error message indicating which required fields are missing
All required fields must be completed before the case can move to scheduled status
For everything else:
The entity cannot be created if required custom fields are not filled out
The creation form will validate and prevent submission until all required fields are completed
Users will see clear error messages indicating which required fields need values
Uniqueness Constraint
The Unique flag ensures that no two entities of the same type can have the same value for that field. This is useful for enforcing business rules around identifiers or reference numbers.
Applicable Field Types:
Single Line Text
Multi Line Text
Number
The uniqueness constraint is not applicable to other field types (dropdowns, checkboxes, dates, times, user fields, formulas, rollups, and property syncs).
Validation Rules:
The system checks for duplicate values across all entities of the same type
Empty or null values are not considered duplicates (multiple entities can have no value)
Validation occurs during creation and updates
For Cases:
Cases cannot be scheduled if they violate uniqueness constraints
An error message will indicate which field has a duplicate value and that it must be unique
For Products, Doctors, and Customers:
The entity cannot be created if uniqueness constraints are violated
An error message will specify which field value is already in use by another entity
Default Values
Default values are automatically populated when creating new entities, saving time and ensuring consistency.
Field Types with Default Values:
Single Line Text / Multi Line Text: Pre-filled text value
Number: Pre-set numeric value
Single Checkbox: Default checked (true) or unchecked (false) state
Dropdown Select: Pre-selected option from the available choices
Multiple Checkboxes: Pre-selected options (can be multiple)
User: Pre-selected user from your organization
Formula: Pre-filled text value
Field Types Without Default Values:
Date Picker
Time Picker
Date & Time Picker
Property Sync
Rollups
These temporal fields do not support default values as date/time values are typically specific to each entity instance.
Usage
Creating Custom Fields
Navigate to Settings > Custom Fields
Select the entity type
Click "Create New Field"
Configure the field:
Label: The display name for the field
Type: Select the appropriate field type
Required: Check if the field must have a value
Unique: Check if values must be unique (only for text and number fields)
Options: Add available choices (for dropdown and checkbox fields)
Formula: Add and validate formula (for formula type)
Property Sync: select an entity and its property, from which you want to sync the value (for property sync)
Rollup: select an entity, from which you want to aggregate a property (for rollup)
Default Value: Set a default value (if applicable)
Managing Custom Fields
Custom fields can be edited after creation, including changing labels, types, and constraints
Changing field types may require updating existing values to match the new type's validation rules
Deleting a custom field will remove all associated data for that field across all entities
The order of custom fields can be adjusted to control how they appear in forms and views
Best Practices
Use clear, descriptive labels that indicate what information should be entered
Mark fields as required only when the information is truly necessary for business processes
Use unique constraints for identifiers, reference numbers, or codes that should not be duplicated
Provide sensible default values to speed up data entry and ensure consistency
Choose the most appropriate field type for your data (e.g., use dropdowns instead of text fields when there are a limited number of valid options)
For dropdown and multi-select fields, order options logically (alphabetically, by frequency of use, or by business priority)
