Skip to main content

Custom Fields

Add custom data fields to any NetSuite record type.


Field Categories

CUSTOM FIELD CATEGORIES
═══════════════════════════════════════════════════════════════════════════════

NAVIGATION: Customization → Lists, Records, & Fields

┌─────────────────────────────────────────────────────────────────────────────┐
│ Entity Fields │ Fields on Customer, Vendor, Employee, etc. │
│ Item Fields │ Fields on all item types │
│ CRM Fields │ Fields on Cases, Tasks, Events, Campaigns │
│ Transaction Body │ Header fields on transactions │
│ Transaction Line │ Line-level fields on transactions │
│ Transaction Column │ Sublist columns on transactions │
│ Other Record Fields │ Fields on other standard records │
└─────────────────────────────────────────────────────────────────────────────┘

Creating a Custom Field

Step-by-Step Process

CUSTOM FIELD CREATION
═══════════════════════════════════════════════════════════════════════════════

Step 1: Navigate to field type
Customization → Lists, Records, & Fields → [Field Type] → New

Step 2: Configure Basic Information
┌─────────────────────────────────────────────────────────────────────────────┐
│ Label: Project Code │
│ ID: custbody_project_code (auto-prefixed) │
│ Type: Free-Form Text │
│ Description: Reference code for project tracking │
│ │
│ Store Value: ☑ (saves to database) │
│ Show in List: ☐ (appears in list views) │
└─────────────────────────────────────────────────────────────────────────────┘

Step 3: Set Applies To (Transaction Body example)
┌─────────────────────────────────────────────────────────────────────────────┐
│ Transaction Types: │
│ ☑ Sales Order │
│ ☑ Invoice │
│ ☐ Purchase Order │
│ ☐ Bill │
│ ☐ Journal Entry │
│ ☐ All transaction types │
└─────────────────────────────────────────────────────────────────────────────┘

Step 4: Configure Display
┌─────────────────────────────────────────────────────────────────────────────┐
│ Subtab: Custom │
│ Display Type: Normal │
│ Display Width: 30 │
│ Display Height: 1 │
│ Help Text: Enter the project code for this transaction │
└─────────────────────────────────────────────────────────────────────────────┘

Step 5: Set Validation
┌─────────────────────────────────────────────────────────────────────────────┐
│ ☐ Mandatory │
│ ☐ Check Spelling │
│ ☐ Unique │
│ Max Length: 50 │
└─────────────────────────────────────────────────────────────────────────────┘

Field Display Types

DISPLAY TYPE OPTIONS
═══════════════════════════════════════════════════════════════════════════════

┌────────────────────┬────────────────────────────────────────────────────────┐
│ Normal │ Editable field, standard display │
├────────────────────┼────────────────────────────────────────────────────────┤
│ Hidden │ Not visible on form (scripting use only) │
├────────────────────┼────────────────────────────────────────────────────────┤
│ Inline Text │ Display-only, no edit capability │
├────────────────────┼────────────────────────────────────────────────────────┤
│ Disabled │ Visible but grayed out (cannot edit) │
├────────────────────┼────────────────────────────────────────────────────────┤
│ Locked │ Visible, editable only via script │
└────────────────────┴────────────────────────────────────────────────────────┘

Role-Based Display:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Different display type per role: │
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │ Role │ Display Type │ │
│ ├───────────────────┼───────────────────────────────────────────────────┤ │
│ │ Administrator │ Normal │ │
│ │ Sales Rep │ Inline Text │ │
│ │ A/R Clerk │ Hidden │ │
│ └───────────────────┴───────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘

Sourcing and Filtering

Sourcing Field Values

Automatically populate field based on related record.

SOURCING CONFIGURATION
═══════════════════════════════════════════════════════════════════════════════

Example: Source customer's email to Sales Order

Field Setup:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Field Label: Customer Email │
│ Type: Email Address │
│ Applies To: Sales Order (Body Field) │
│ │
│ Sourcing Tab: │
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │ Source List: Customer │ │
│ │ Source From: Customer (entity field on SO) │ │
│ │ Source Field: Email │ │
│ │ │ │
│ │ When customer is selected, email auto-populates │ │
│ └───────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘

How it works:
1. User selects customer on Sales Order
2. System looks up customer's email
3. Field auto-populates with email value

Filtering Field Options

Limit dropdown selections based on context.

FILTERING CONFIGURATION
═══════════════════════════════════════════════════════════════════════════════

Example: Filter contacts by selected customer

Field Setup:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Field Label: Primary Contact │
│ Type: List/Record (Contact) │
│ Applies To: Sales Order (Body Field) │
│ │
│ Sourcing Tab - Filter By: │
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │ Filter Using: Customer │ │
│ │ Compare Field: Company (on Contact record) │ │
│ │ Compare To: Customer (entity on Sales Order) │ │
│ │ │ │
│ │ Only contacts linked to selected customer appear in dropdown │ │
│ └───────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘

Default Values

DEFAULT VALUE OPTIONS
═══════════════════════════════════════════════════════════════════════════════

Static Default:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Default Value: "Pending Review" │
│ Always starts with this value │
└─────────────────────────────────────────────────────────────────────────────┘

Formula Default:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Default: {today} │
│ Current date when record created │
│ │
│ Available formulas: │
│ • {today} │
│ • {now} │
│ • {user} │
│ • {subsidiary} │
│ • {role} │
└─────────────────────────────────────────────────────────────────────────────┘

Checkbox Default:
┌─────────────────────────────────────────────────────────────────────────────┐
│ Default Checked: ☑ │
│ Checkbox starts as checked │
└─────────────────────────────────────────────────────────────────────────────┘

Accessing Custom Fields

In Scripts

// Read custom field
const projectCode = record.getValue({
fieldId: 'custbody_project_code'
});

// Set custom field
record.setValue({
fieldId: 'custbody_project_code',
value: 'PROJ-001'
});

// Line-level custom field
const lineValue = record.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_delivery_date',
line: 0
});

In SuiteQL

-- Transaction body field
SELECT
t.tranid,
t.custbody_project_code AS project_code
FROM
transaction t
WHERE
t.custbody_project_code IS NOT NULL

-- Entity field
SELECT
c.companyname,
c.custentity_industry AS industry
FROM
customer c
WHERE
c.custentity_industry = 1

-- Transaction line field
SELECT
t.tranid,
tl.item,
tl.custcol_delivery_date AS delivery_date
FROM
transactionline tl
JOIN
transaction t ON tl.transaction = t.id

Field ID Prefixes

FIELD ID NAMING
═══════════════════════════════════════════════════════════════════════════════

System-assigned prefixes:
┌─────────────────────────────────────────────────────────────────────────────┐
│ custbody_ │ Transaction body (header) fields │
│ custcol_ │ Transaction column (line) fields │
│ custentity_ │ Entity fields (customer, vendor, employee) │
│ custitem_ │ Item fields │
│ custevent_ │ CRM event fields │
│ custrecord_ │ Custom record fields │
│ custpage_ │ Suitelet page elements │
└─────────────────────────────────────────────────────────────────────────────┘

Example IDs:
custbody_project_code → SO header field
custcol_delivery_instructions → SO line field
custentity_vip_customer → Customer field
custitem_country_origin → Item field

Next Steps

GoalGo To
Form customizationCustom Forms →
Return to Suite BuilderSuite Builder →
Build workflowsWorkflows →