Phase 6 of 14

Forms & UI

Design effective user interfaces with custom forms, optimized sublists, professional PDF templates, and insightful dashboards.

Chapter 6.1

Transaction Forms

Customize transaction entry forms to streamline data entry, enforce business rules, and improve user experience across all transaction types.

Transaction Form Overview

Transaction forms control how users enter and view transactions in NetSuite. Custom forms allow you to show only relevant fields, arrange them logically, and enforce data standards through required fields and defaults.

Why Custom Transaction Forms?

User Efficiency:

  • Show only fields users need, hiding irrelevant options
  • Logical field arrangement reduces data entry time
  • Pre-populated defaults minimize repetitive entry

Data Quality:

  • Required fields ensure critical data is captured
  • Field-level help guides users on proper entry
  • Restricted fields prevent unauthorized changes

Process Control:

  • Different forms for different roles or scenarios
  • Form assignment by role, customer, or subsidiary
  • Approval routing tied to form selection

Creating Custom Transaction Forms

Start by copying an existing standard form, then customize it to meet your requirements. Never modify the standard form directly—always create custom versions.

Form Creation Process
1
Navigate to transaction forms

Customization → Forms → Transaction Forms → Select transaction type

2
Copy standard form

Click Customize on Standard form or copy existing custom form

3
Name and configure

Give meaningful name, set as preferred if appropriate

4
Customize fields and layout

Show/hide fields, set required, arrange tabs and sections

5
Configure sublists

Show/hide columns, set column order, configure line defaults

6
Set access and assignment

Restrict by role, assign to subsidiaries or customers

Form Naming Convention

Use a consistent naming convention: [Transaction Type] - [Purpose/Role]. For example: "Sales Order - Wholesale", "Invoice - Retail POS", "Purchase Order - Services". This makes forms easy to identify and manage.

Form Layout and Tabs

NetSuite transaction forms organize fields into tabs and subtabs. Customize which tabs appear and their order to create an intuitive flow.

Standard Transaction Tabs

  • Primary Information: Main header fields (customer, date, status)
  • Items: Line item sublist
  • Shipping: Ship-to address and shipping method
  • Billing: Bill-to address and payment terms
  • Accounting: GL impact, posting period
  • Communication: Notes, messages, attached files
  • Custom: Custom fields grouped into custom tabs
Tab Visibility

Hide tabs that aren't relevant to the transaction type or user role. For example, hide the Shipping tab on service-only invoices, or hide Accounting details from sales users who don't need GL visibility.

Screen Layout Options

  • Screen Fields (Show): Field appears on form
  • Screen Fields (Hide): Field hidden but available via customization
  • Disabled: Field visible but not editable
  • Mandatory: Field required before save

Field Configuration

Each field on a transaction form has multiple configuration options that control its behavior and appearance.

Field Display Options

  • Label: Change the field label displayed to users
  • Help: Add field-level help text (appears on hover)
  • Default Value: Pre-populate field with specified value
  • Display Type: Normal, Inline Text, Hidden
  • Break Before: Start new column before this field
Required vs. Mandatory

NetSuite distinguishes between system-required fields (cannot be changed) and form-level mandatory fields (you can configure). Be thoughtful about making fields mandatory—too many required fields frustrate users and slow data entry.

Field Sourcing and Defaults

Fields can be sourced from related records or set with defaults:

  • Sourced Fields: Auto-populated from parent record (customer defaults to sales rep)
  • Static Defaults: Fixed value for all new transactions
  • Dynamic Defaults: Value based on user, date, or formula (requires scripting)
Consultant Tip

Document your default values in a form specification document. When defaults change due to business requirements, having documentation makes it easy to update the correct forms without missing any.

Form Assignment

Control which forms are available to which users through role restrictions and preferred form settings.

Form Assignment Methods

Role-Based Assignment:

  • Restrict form availability by role
  • Set preferred form per role
  • Users see only forms assigned to their role

Customer/Vendor Assignment:

  • Assign specific forms to customers or vendors
  • Form auto-selects when entity is chosen
  • Useful for different billing requirements

Subsidiary Assignment:

  • Different forms per subsidiary
  • Supports regional requirements
  • Different languages or compliance needs
Preferred vs. Restricted

Set a preferred form for each role to control the default. If you want to prevent users from selecting other forms, check "Restrict Forms" on the role. Otherwise, users can switch between available forms.

Print and Email Templates

Transaction forms include settings for printing and emailing. Link custom PDF templates to forms for professional document output.

Print Settings

  • Linked Form: Associate Advanced PDF template for printing
  • Print Button: Show/hide print button on form
  • Email Button: Show/hide email button on form
  • PDF Format: Portrait or landscape orientation
Multiple Print Templates

A single transaction form can link to multiple print templates. Users select which template when printing. Common examples: standard invoice, commercial invoice, pro forma invoice—all from the same transaction form.

Transaction Form Best Practices

Design Principles

  • Less is More: Show only fields users actually need
  • Logical Flow: Arrange fields in the order users think about them
  • Group Related Fields: Use tabs and sections to organize
  • Consistent Layout: Similar transactions should have similar layouts
  • Meaningful Defaults: Pre-populate wherever possible

Common Mistakes to Avoid

  • Making too many fields mandatory (slows data entry)
  • Creating too many forms (maintenance burden)
  • Not testing forms with actual users
  • Forgetting to assign forms to roles
  • Not documenting customizations
Manufacturing
Create separate sales order forms for standard orders vs. configure-to-order. CTO forms need additional fields for specifications, while standard orders can be streamlined for quick entry.
Wholesale
Wholesale sales orders benefit from showing inventory availability on the form. Consider forms optimized for phone order entry with quick item lookup and quantity entry.
Services
Service invoices may not need shipping tabs or inventory columns. Create streamlined forms focused on service items, billing rates, and project references.

Transaction Forms Checklist

Configuration Checklist
Identify forms needed per transaction type and role
Create custom forms from standard templates
Configure field visibility and requirements
Set appropriate default values
Organize tabs and hide unused sections
Link print templates to forms
Assign forms to roles with preferences
Test forms with representative users
Document form specifications and defaults
Chapter 6.2

Entity Forms

Customizing customer, vendor, employee, and other entity record forms for optimal data capture and user experience.

Entity Form Overview

Entity forms control how users interact with master records—customers, vendors, employees, contacts, partners, and other entities. Unlike transaction forms that capture point-in-time events, entity forms manage ongoing relationships and must accommodate evolving data needs while maintaining historical integrity.

ℹ️ Entity Form Types

Standard Entity Forms:

  • Customer — Sales relationships, credit terms, shipping preferences
  • Vendor — Purchasing relationships, payment terms, 1099 settings
  • Employee — HR data, expense settings, time tracking
  • Contact — Individual people linked to entities
  • Partner — Referral and commission tracking
  • Lead/Prospect — Pre-customer sales pipeline
  • Project — Project-based entity records

Creating Custom Entity Forms

Custom entity forms allow you to tailor the user experience for different roles, customer segments, or business processes.

1

Access Entity Forms

Navigate to the Entry Forms list and filter by entity type (Customer, Vendor, Employee, etc.).

2

Customize or Create New

Click "Customize" on an existing form or "New" to create from scratch. Starting from a standard form preserves default functionality.

3

Configure Form Properties

Set form name, link to roles, configure preferences for this form type.

4

Organize Tabs and Fields

Add/remove tabs, position fields, configure field properties for this form.

Customer Form Configuration

Customer forms are typically the most heavily customized entity forms, supporting sales, credit, fulfillment, and financial processes.

Essential Customer Tabs

Tab Purpose Key Fields
General Basic identification and classification Company Name, Customer ID, Category, Status, Sales Rep
Address Shipping and billing locations Default Billing, Default Shipping, Address Book sublist
Financial Credit and payment settings Credit Limit, Terms, Price Level, Currency, Tax Settings
Preferences Communication and fulfillment preferences Email Preference, Shipping Method, Print Statements
Sales Territory and commission settings Territory, Partner, Sales Rep, Commission Plan
Relationships Related records and hierarchy Parent Company, Contacts sublist, Subcustomers
💼 Consultant Insight: Customer Segmentation

Create different customer forms for different segments:

  • B2B Customer Form — Credit terms, PO required, multiple ship-to addresses
  • B2C Customer Form — Simplified view, loyalty program fields, preferences
  • Wholesale Customer Form — Price levels, volume discounts, EDI settings
  • International Customer Form — VAT fields, incoterms, export documentation

Assign forms by customer category or sales channel to ensure users see only relevant fields.

Vendor Form Configuration

Vendor forms support procurement, accounts payable, and compliance requirements.

Vendor Form Considerations

Tab Purpose Key Fields
General Vendor identification Legal Name, Vendor ID, Category, Currency
Address Remit-to and ordering addresses Address Book, Default addresses
Financial Payment and accounting settings Terms, Credit Limit, Expense Account, 1099 Eligible
Tax Information Tax compliance Tax ID, W-9 Status, 1099 Type, Withholding
Purchasing Order preferences Incoterm, Lead Time, Min Order Qty
⚠️ 1099 Compliance

For US companies, ensure vendor forms capture:

  • Tax ID Number — Required for 1099 reporting
  • 1099 Eligible checkbox — Flags vendor for year-end reporting
  • Legal Name — Must match W-9 exactly
  • Default 1099 Expense Account — For accurate category reporting

Consider requiring these fields for certain vendor categories to ensure compliance data is captured upfront.

Employee Form Configuration

Employee forms balance HR requirements, self-service needs, and manager visibility while maintaining data security.

Employee Form Security Considerations

🔒

Employee Data Access Strategy

Challenge: Employee records contain sensitive data (SSN, salary, performance) that must be restricted while still providing self-service access.

Multiple Employee Forms

Approach: Create separate forms for different access levels

  • HR Admin Form — All fields visible and editable
  • Manager Form — Team view with limited sensitive data
  • Employee Self-Service — Personal info only

Best for: Clear role separation

Field-Level Permissions

Approach: Single form with field-level role restrictions

  • Configure field display types per role
  • Use "Disabled" or "Hidden" for sensitive fields
  • Maintain single form for consistency

Best for: Simpler maintenance

Common Employee Form Tabs

Tab Content Typical Access
General Name, title, department, supervisor All roles
Human Resources Hire date, employment status, job history HR, Managers
Compensation Salary, pay frequency, pay rate HR only
Tax Information SSN, W-4 status, state withholding HR only (PII)
Time & Expenses Expense approval, time tracking settings Employee, Managers
Direct Deposit Bank account information Employee (own), HR

Contact Form Configuration

Contacts represent individual people associated with customers, vendors, or other entities. Well-designed contact forms capture relationship context.

💡 Contact Role Strategy

Define contact roles that support your business processes:

  • Primary Contact — Main point of communication
  • Billing Contact — Receives invoices, handles payment inquiries
  • Shipping Contact — Coordinates deliveries
  • Technical Contact — For support and implementation
  • Executive Sponsor — Decision maker for strategic accounts
  • Purchasing Agent — Places orders on behalf of company

Roles can trigger automation (e.g., billing contacts receive invoice emails).

Field Configuration on Entity Forms

Entity forms support various field configuration options to control data capture and display.

Field Display Options

Option Effect Use Case
Show Field visible and editable Standard fields users need to enter
Mandatory Required for save Critical classification or compliance fields
Disabled Visible but read-only System-calculated or reference fields
Hidden Not visible on form Internal fields not needed for this form
Inline Text Display only (no edit) Static labels or calculated display values

Mandatory Field Strategy

⚠️ Mandatory Field Balance

Common mistake: Making too many fields mandatory, which frustrates users and leads to garbage data ("TBD", "N/A", etc.).

Better approach:

  • Only make fields mandatory if truly required for business process
  • Use workflows to require fields at specific lifecycle stages
  • Consider "soft requirements" via saved search reports on incomplete records
  • Train users on data quality rather than forcing through form design

Address Book Configuration

The Address Book sublist on entity forms manages multiple addresses per record. Proper configuration supports complex shipping and billing scenarios.

Address Configuration Options

  • Default Shipping — Pre-selected on transactions
  • Default Billing — Pre-selected for invoices
  • Residential Flag — Affects shipping carrier rates
  • Address Label — User-friendly identifier ("Main Office", "Warehouse 2")
  • Attention — Contact name for deliveries
💼 Multi-Location Customers

For customers with many ship-to locations, consider:

  • Subcustomer structure — Create subcustomer per location with its own address
  • Address naming convention — Require consistent labels (e.g., "City - Street" format)
  • Custom fields on address — Add location code, dock hours, delivery instructions
  • Address validation — Integrate with USPS or address validation service

Form Assignment for Entities

Entity forms can be assigned based on multiple criteria to ensure users see appropriate forms.

Assignment Methods

Method Configuration Use Case
Role-Based Roles subtab on form Different views for Sales vs. AR vs. Admin
Record-Specific Custom Form field on record Special form for specific high-value customers
Category-Based Scripted assignment based on category Different forms for B2B vs. B2C customers
Subsidiary-Based Different forms per subsidiary Regional compliance variations

Industry-Specific Entity Form Patterns

🏭 Manufacturing

Vendor forms should capture:

  • Supplier certifications (ISO, quality standards)
  • Lead time and minimum order quantities
  • Approved manufacturer lists (AML) linkage
  • Quality rating/scorecard fields

Customer forms should include:

  • EDI trading partner settings
  • Customer-supplied material handling
  • Inspection requirements
💻 Software/SaaS

Customer forms should capture:

  • Subscription tier and contract dates
  • Technical contact for implementation
  • Integration requirements
  • Support level (standard, premium, enterprise)
  • Usage metrics or user count
👔 Professional Services

Customer forms should include:

  • Billing arrangement (T&M, Fixed Fee, Retainer)
  • Rate card assignment
  • Project manager assignment
  • MSA/contract reference
  • Billing contact with invoice delivery preferences

Employee forms should capture:

  • Billable rate tiers
  • Skills and certifications
  • Utilization targets

Entity Form Best Practices

🎯
Purpose

Define clear purpose for each form

👥
Audience

Identify who uses the form

📋
Fields

Include only necessary fields

🔒
Security

Apply appropriate restrictions

Entity Form Configuration Checklist

Chapter 6.3

Sublists & Line Items

Configuring transaction line items, custom sublists, and related record displays for efficient data entry and visibility.

Understanding Sublists

Sublists are tabular data structures within NetSuite records that display multiple related line items. They're fundamental to transaction processing, entity management, and custom record relationships.

ℹ️ Sublist Types in NetSuite

Standard Sublists:

  • Item Sublist — Line items on transactions (SO, PO, Invoice)
  • Expense Sublist — Non-item expenses on transactions
  • Address Book — Multiple addresses on entities
  • Contacts — Related contacts on customer/vendor
  • Currency — Multi-currency settings
  • Partners — Sales partner relationships
  • Apply Sublist — Payment application lines

Static vs. Editor Sublists:

  • Editor — User can add/edit/remove lines (e.g., Items)
  • Static/List — Read-only display (e.g., Related Records)
  • Inline Editor — Edit directly in grid without popup

Item Sublist Configuration

The Item sublist is the most critical sublist on transaction forms, controlling how users enter line items for sales orders, purchase orders, invoices, and other transactions.

Common Item Sublist Fields

Field Purpose Configuration Notes
Item Item selection Always required; configure filtering options
Quantity Order quantity Default display; can be made mandatory
Units Unit of measure Show if using multiple UOMs
Rate Unit price Can be hidden for non-pricing roles
Amount Line total Usually calculated/disabled
Description Line description Override item description per line
Tax Code Tax treatment Show for tax-configurable lines
Location Inventory location Show for inventory transactions
Department/Class Segment classification Per company classification setup
💡 Column Width Optimization

Sublist columns have limited horizontal space. Optimize by:

  • Hide unused columns — Every hidden column gives space to others
  • Use abbreviations — Rename column headers to shorter labels
  • Prioritize visible columns — Most-used fields should be visible without scrolling
  • Consider separate forms — Different roles may need different column sets

Custom Columns on Sublists

Custom fields can be added to sublists to capture additional line-level data beyond standard fields.

Creating Transaction Line Fields

1

Define Field Properties

Set label, ID, field type (text, list, date, etc.), and description.

2

Select Sublist

Choose which sublist (Items, Expenses, etc.) this field appears on.

3

Apply to Transaction Types

Select which transaction types should include this field.

4

Configure Display

Set display type (Normal, Hidden, Disabled) per form if needed.

Transaction Line Field Types

Field Type Use Case Example
Free-Form Text Short text entry Customer PO Line Number
Text Area Longer descriptions Line-level special instructions
List/Record Reference another record Project Task assignment per line
Checkbox Boolean flags Taxable override
Date Line-level dates Requested delivery date
Currency Money amounts Commission amount per line
Decimal Number Numeric values Discount percentage
⚠️ Line Field Limitations

Be aware of these constraints:

  • Performance — Too many custom columns slows form loading
  • Sourcing — Line-level sourcing has limitations compared to body fields
  • Reporting — Some line fields may not be available in all report types
  • Imports — Custom line fields require specific CSV column mapping

Expense Sublist Configuration

The Expense sublist handles non-item costs on transactions—freight, handling, miscellaneous charges that don't flow through inventory.

Common Expense Sublist Fields

Field Purpose Notes
Category/Account Expense classification Links to expense category or GL account
Amount Expense amount Can be positive or negative
Memo Description Appears on GL posting
Department/Class/Location Segment allocation Per company settings
Tax Code Tax treatment For taxable expenses
Customer Billable customer For expense rebilling
💼 Items vs. Expenses Decision

Use Items when:

  • Tracking inventory quantities
  • Need item-specific pricing rules
  • Require item-level reporting
  • Using service items with billing schedules

Use Expenses when:

  • One-off charges without item master
  • Pass-through costs (freight, duties)
  • Need direct GL account posting
  • Rebillable expenses to customers

Sublist Filtering and Sourcing

Control what items or records appear in sublist dropdowns and how values populate automatically.

Item Filtering Options

  • By Subsidiary — Show only items available in transaction's subsidiary
  • By Location — Show only items stocked at selected location
  • By Customer — Show customer-specific items or pricing
  • By Item Type — Limit to certain item types (inventory only, services only)
  • Custom Filter — Script-based filtering for complex rules
🎯

Sublist Population Strategy

Scenario: Users need to quickly add multiple lines without repetitive data entry.

Default Values

Approach: Set field defaults at item or form level

  • Configure default location, class, department on items
  • Set form-level defaults for common values
  • Use "Copy Previous" for repeating values

Best for: Consistent, predictable defaults

Sourced Values

Approach: Auto-populate from related records

  • Source from item record (description, price, tax code)
  • Source from customer (price level, terms)
  • Source from header fields (department, class)

Best for: Dynamic, context-sensitive values

Scripted Population

Approach: Client Script populates lines

  • Complex calculations or lookups
  • Conditional logic based on multiple factors
  • Bulk line creation from templates

Best for: Complex business rules

Related Records Sublists

Related Records subtabs show connected transactions or records for reference and navigation.

Common Related Records

Record Type Related Records Shown Use Case
Sales Order Invoices, Item Fulfillments, Returns Track order fulfillment status
Purchase Order Item Receipts, Vendor Bills Track procurement completion
Customer Transactions, Cases, Contacts 360-degree customer view
Item Transactions, Price History, Stock Item activity analysis
Project Tasks, Time, Expenses, Transactions Project profitability tracking

Customizing Related Records Display

  • Show/Hide Subtabs — Remove irrelevant related record tabs per form
  • Saved Search Subtabs — Add custom searches as subtabs for specific data views
  • Custom Sublists — Create scripted sublists for non-standard relationships

Inline Editing Configuration

Inline editing allows users to modify sublist data directly in the grid without opening popup editors.

ℹ️ Inline Editing Modes

Form-Level Setting: Enable/disable inline editing per form

List-Level Setting: Enable for saved search results (Setup → Company → General Preferences)

Field-Level: Some fields support inline edit, others require popup

Inline Editing Best Practices

  • Enable for data entry forms — Speeds up line item entry significantly
  • Test field behavior — Some fields don't support inline editing
  • Consider validation — Inline editing may bypass some client-side validations
  • Train users — Tab/Enter key navigation differs from popup editing

Industry-Specific Sublist Patterns

🏭 Manufacturing

Item Sublist additions:

  • Lot/Serial number fields for traceability
  • Inspection status or quality hold flags
  • Customer PO line reference
  • Requested ship date per line
  • Work order linkage for MTO items
📦 Wholesale Distribution

Item Sublist additions:

  • Bin location for pick tickets
  • Catch weight fields for variable-weight items
  • Unit conversion display (cases vs. eaches)
  • Backorder quantity tracking
  • Commission rate per line for sales reps
👔 Professional Services

Item Sublist additions:

  • Project/Task assignment per line
  • Service date range (from/to)
  • Billing status (billable, non-billable, written-off)
  • Employee assignment for resource tracking
  • Rate source (rate card, contract, override)

Performance Optimization

⚠️ Sublist Performance Considerations

Large sublists can impact form performance:

  • Line Limit — Transactions with 500+ lines may experience slowness
  • Custom Fields — Each custom column adds load time
  • Sourcing — Complex sourcing calculations slow line entry
  • Client Scripts — Line-level scripts run on every line change

Mitigation strategies:

  • Limit visible custom columns to essential fields
  • Use stored/calculated values instead of real-time lookups
  • Implement pagination for read-only sublists
  • Consider CSV import for high-volume line entry

Sublist Configuration Checklist

Chapter 6.4

Saved Searches as Data Sources

Leveraging saved searches to power dashboards, portlets, forms, and dynamic data displays throughout NetSuite.

Saved Searches as UI Foundation

Saved searches are far more than reporting tools—they're the foundation for dynamic UI elements throughout NetSuite. Understanding how to design searches for UI consumption unlocks powerful customization possibilities.

ℹ️ UI Uses for Saved Searches

Dashboard Elements:

  • List Portlets — Display search results as dashboard lists
  • KPI Scorecards — Show summary metrics from searches
  • Trend Graphs — Visualize search data as charts
  • Reminders — Alert-style portlets based on searches

Form Elements:

  • Custom Subtabs — Show related data on records
  • Suitelet Data Sources — Populate custom pages
  • Field Sourcing — Dynamic dropdowns and lookups

Designing Searches for Portlets

Searches displayed as dashboard portlets need specific design considerations for optimal user experience.

Portlet Search Design Principles

Principle Implementation Rationale
Limit Columns 3-5 result columns maximum Portlets have limited width; too many columns cause horizontal scrolling
Limit Rows Use "Max Results" setting Dashboard performance degrades with large result sets
Include Links First column should link to record Users need to navigate to details easily
Sort Meaningfully Most urgent/recent first Top items should be most actionable
Use Formulas Sparingly Avoid complex calculations Portlets refresh frequently; complex formulas slow loading
1

Create Search

Build search with appropriate filters and results columns. Mark as "Available as List Portlet."

2

Configure Audience

Set which roles/users can access via Audience tab. Consider "Available for All Roles" or specific roles.

3

Add to Dashboard

Users add via Personalize Dashboard → Custom Search portlet, or publish via role center.

KPI Scorecard Searches

KPI portlets display single metrics or comparison values. The search design differs from list portlets.

KPI Search Structure

💡 KPI Search Design

For KPI scorecards, the search must:

  • Return exactly ONE row (use Summary type)
  • Include the metric as a formula or summary field
  • Optionally include comparison value (prior period)
  • Be marked "Available as KPI Scorecard"

Example - Open Sales Orders Value:

  • Record Type: Transaction
  • Criteria: Type = Sales Order, Status = Pending Fulfillment
  • Results: SUM(Amount) with Summary Type

Common KPI Searches

KPI Record Type Key Formula/Summary
Open AR Balance Transaction SUM(Amount Remaining) where Type = Invoice
Orders This Month Transaction COUNT(*) where Type = Sales Order, Date = This Month
Inventory Value Item SUM(Total Value) for Inventory Items
Overdue Tasks Task COUNT(*) where Due Date < Today, Status ≠ Completed
Revenue YTD Transaction SUM(Amount) where Type = Invoice, Date = This Year

Trend Graph Searches

Trend graphs visualize data over time. The search must be structured to support chart rendering.

Trend Search Requirements

  • Time Dimension — Include date field grouped by period (day, week, month)
  • Measure Column — Numeric value to plot (amount, count, quantity)
  • Optional Dimension — Category for multi-series charts (product line, region)
  • Sorting — Sort by date ascending for proper chart rendering
💼 Chart Type Selection

Match chart type to data characteristics:

  • Line Chart — Continuous trends over time (sales by month)
  • Bar Chart — Comparison across categories (sales by region)
  • Pie Chart — Proportion of whole (expense breakdown)
  • Area Chart — Cumulative values over time (running balance)

Configure chart options when adding to dashboard via "Chart Options" button.

Searches as Form Subtabs

Saved searches can appear as subtabs on record forms, showing related data without custom scripting.

Adding Search Subtabs

1

Create the Search

Build search that filters by the parent record (e.g., transactions for a customer). Use relative filters like "Customer : Internal ID = {ID}".

2

Mark for Subtabs

Enable "Available as Sublist View" option. This exposes the search for form integration.

3

Add to Form

Edit the form, go to Subtabs section, add new subtab with source = saved search.

⚠️ Subtab Performance

Search subtabs execute when the form loads. Considerations:

  • Filter tightly — Only show records related to current record
  • Limit results — Use max results to prevent slow loading
  • Avoid on high-traffic forms — Don't add complex searches to frequently accessed forms
  • Consider load type — Some subtabs can be set to load on-demand (click to load)

Dynamic Dropdown Sources

Saved searches can power dropdown fields, providing filtered or calculated options.

Use Cases for Search-Driven Dropdowns

Scenario Standard Approach Search-Driven Approach
Active items only All items shown Search filters to Is Inactive = False
Items by category Full item list Search filters by selected category
Customers with open balance All customers Search for balance > 0
Available employees All employees Search excludes terminated, on leave

Implementation Methods

🎯

Dynamic Field Population

Scenario: A field needs to show only a subset of records based on criteria or context.

Field Sourcing (Native)

Method: Configure field to source from parent record

  • Limited to direct field relationships
  • No custom logic or calculations
  • Best for simple parent-child sourcing

Best for: Standard relationships

List-Based Custom Field

Method: Create field with custom list source

  • Create custom list with needed values
  • Static values, not dynamic
  • Good for controlled value sets

Best for: Static option lists

Scripted Search Lookup

Method: Client script populates from search

  • Execute saved search on field change
  • Populate dependent field with results
  • Most flexible but requires scripting

Best for: Complex dynamic filtering

Inline Editing with Searches

Saved search results can support inline editing, allowing users to modify data directly from search results.

Inline Editing Considerations

  • Field Support — Not all fields support inline editing; test each column
  • Permissions — User must have edit permission on underlying records
  • Validation — Field validations still apply; errors shown inline
  • Performance — Each edit triggers save; batch edits via CSV may be faster for bulk changes
💡 Bulk Update via Inline Edit

For controlled bulk updates, create a search that:

  • Shows records needing update (e.g., items needing price change)
  • Includes the editable field as a column
  • Enables inline editing
  • Users can tab through and update multiple records efficiently

This is faster than opening each record individually but slower than CSV import for large volumes.

Search Performance Optimization

Searches driving UI elements need to be highly optimized since they run frequently.

Performance Best Practices

Technique Implementation Impact
Index-Friendly Filters Filter on indexed fields first (ID, Date, Status) Dramatically reduces scan time
Limit Results Set maximum rows returned Caps worst-case performance
Avoid Formula Filters Filter before calculating, not with formulas Formulas in filters prevent index use
Minimize Joins Avoid deep joins (3+ levels) Each join multiplies query complexity
Summary vs. Detail Use Summary searches for aggregations Database aggregation faster than formula

Search Security and Sharing

Control who can access searches and what data they see.

Audience Configuration

  • Public — All users can see (use cautiously)
  • Role-Based — Specific roles have access
  • Employee-Based — Specific employees only
  • Owner Only — Private to creator
⚠️ Search vs. Role Permissions

Search access ≠ data access:

  • Users can only see search results for records they have permission to view
  • A public search doesn't expose data to unauthorized users
  • However, search existence and column structure are visible
  • For sensitive reports, restrict search access to appropriate roles

Industry Applications

🏭 Manufacturing

Dashboard searches:

  • Work orders by status (Released, In Progress, Completed)
  • Components below reorder point
  • Production schedule for the week
  • Quality holds awaiting disposition
📦 Wholesale Distribution

Dashboard searches:

  • Orders ready to ship today
  • Backorder report with expected dates
  • Top customers by month-to-date sales
  • Inventory aging by location
👔 Professional Services

Dashboard searches:

  • Unbilled time and expenses
  • Projects by percent complete
  • Resource utilization this month
  • Expiring contracts (next 90 days)

Saved Search UI Integration Checklist

Chapter 6.5

PDF Templates

Creating professional transaction documents with Advanced PDF/HTML templates using BFO syntax and FreeMarker.

Advanced PDF/HTML Templates Overview

NetSuite's Advanced PDF/HTML templates transform transaction data into professionally formatted documents for printing, emailing, and archiving. Understanding the underlying technologies—BFO (Big Faceless Organization) rendering engine and FreeMarker templating—is essential for effective customization.

ℹ️ Template Technologies

BFO Report Generator:

  • Converts HTML/CSS to PDF format
  • Supports subset of CSS (not full CSS3)
  • Proprietary CSS extensions for PDF features
  • Page layout, headers, footers, page breaks

FreeMarker:

  • Template language for dynamic content
  • Access record fields via ${record.fieldname}
  • Conditionals, loops, formatting functions
  • Include files and macros

Template Types and Navigation

Standard Template Categories

Category Common Templates Typical Use
Transaction Invoice, Sales Order, Purchase Order, Quote Customer/vendor-facing documents
Statement Customer Statement, Dunning Letters AR communications
Shipping Packing Slip, Pick Ticket, Bill of Lading Warehouse operations
Payment Check, Voucher Check, Payment Stub AP disbursements
Label Shipping Labels, Item Labels Barcode/address labels

Template Structure

Advanced PDF templates follow a standard HTML structure with special BFO and FreeMarker elements.

💡 Basic Template Anatomy
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//BFO//DTD HTML 4.0//EN">
<html>
<head>
    <style type="text/css">
        /* CSS styles here */
        @page { size: letter; margin: 0.5in; }
        body { font-family: Arial, sans-serif; }
    </style>
</head>
<body>
    <!-- Header section -->
    <div class="header">
        ${record.entity}
    </div>

    <!-- Line items loop -->
    <#list record.item as item>
        ${item.item} - ${item.quantity}
    </#list>

    <!-- Footer -->
    <div class="footer">
        ${record.total}
    </div>
</body>
</html>

Accessing Record Data

FreeMarker provides access to all record fields through the ${record} object.

Common Field Access Patterns

Data Type Syntax Example
Body Field ${record.fieldid} ${record.tranid}, ${record.total}
Entity Reference ${record.entity} ${record.entity} (customer name)
Address ${record.billaddress} Full formatted address block
Line Items <#list record.item as item> Loop through item sublist
Custom Fields ${record.custbody_fieldid} ${record.custbody_ponumber}
Company Info ${companyinformation.fieldid} ${companyinformation.companyname}

Line Item Access

💼 Line Item Loop Pattern
<table>
    <tr>
        <th>Item</th>
        <th>Description</th>
        <th>Qty</th>
        <th>Rate</th>
        <th>Amount</th>
    </tr>
    <#list record.item as item>
    <tr>
        <td>${item.item}</td>
        <td>${item.description}</td>
        <td>${item.quantity}</td>
        <td>${item.rate}</td>
        <td>${item.amount}</td>
    </tr>
    </#list>
</table>

Conditional Logic

FreeMarker conditionals control what content appears based on field values.

Common Conditional Patterns

Pattern Syntax Use Case
If/Else <#if condition>...<#else>...</#if> Show different content based on value
Has Value <#if record.field?has_content> Only show if field has data
Equals <#if record.status == "Pending"> Match specific value
Contains <#if record.memo?contains("Rush")> Text search within field
Numeric Compare <#if record.total > 1000> Amount thresholds
⚠️ Null Value Handling

Always handle potentially null values to prevent template errors:

  • Default value: ${record.memo!"No memo"}
  • Empty string default: ${record.memo!""}
  • Has content check: <#if record.memo?has_content>
  • Null check: <#if record.memo??>

Page Layout and CSS

BFO supports a subset of CSS with special extensions for PDF features.

Essential BFO CSS

Feature CSS Syntax Notes
Page Size @page { size: letter; } letter, legal, A4, or custom dimensions
Margins @page { margin: 0.5in; } Individual sides: margin-top, etc.
Page Break page-break-before: always; Force new page
Avoid Break page-break-inside: avoid; Keep element together
Running Header position: running(header); Repeat on every page
Page Counter content: "Page " counter(page); Page X of Y pagination

Running Headers and Footers

💡 Multi-Page Header/Footer Pattern
<style>
@page {
    @top-center {
        content: element(header);
    }
    @bottom-center {
        content: element(footer);
    }
}

#header { position: running(header); }
#footer { position: running(footer); }
</style>

<div id="header">
    Invoice: ${record.tranid}
</div>

<div id="footer">
    Page <span class="pageNumber"/> of <span class="totalPages"/>
</div>

Images and Logos

Include company logos, product images, and other graphics in templates.

Image Sources

  • File Cabinet: Reference uploaded images via URL
  • Company Logo: ${companyinformation.logourl}
  • Item Images: ${item.imageurl} in line item loop
  • External URLs: Full https:// paths (not recommended)
⚠️ Image Best Practices
  • File size: Keep images under 100KB for performance
  • Format: PNG or JPG preferred; avoid SVG
  • Dimensions: Size images before upload; don't rely on CSS scaling
  • File Cabinet location: Use "Available Without Login" for email templates

Tables and Line Items

Proper table formatting is critical for professional-looking documents.

Table CSS Tips

Requirement CSS Property Value
Fixed column widths table-layout: fixed; Prevents column resizing
Cell borders border-collapse: collapse; Single borders between cells
Header repeat -fs-table-paginate: paginate; Repeats thead on each page
Row banding tr:nth-child(even) Alternating row colors
Text alignment text-align: right; Right-align numbers

Number and Date Formatting

Control how numbers, currencies, and dates display in templates.

Formatting Functions

Type Syntax Result
Currency ${record.total?string.currency} $1,234.56
Number ${record.quantity?string["0.00"]} 123.45
Percentage ${record.rate?string.percent} 15%
Date ${record.trandate?string["MM/dd/yyyy"]} 12/09/2025
Long Date ${record.trandate?string["MMMM d, yyyy"]} December 9, 2025

Template Assignment

Control which templates are used for different scenarios.

Assignment Methods

  • Transaction Form: Link template to specific transaction form
  • Print/Email Actions: Different templates for print vs. email
  • Subsidiary: Different templates per subsidiary (multi-subsidiary)
  • Language: Localized templates for multi-language
  • Scripted: Dynamically select template via SuiteScript

Industry-Specific Template Patterns

🏭 Manufacturing

Template considerations:

  • Include lot/serial numbers on packing slips
  • Certificates of conformance with spec data
  • Material safety data sheets (MSDS) references
  • Country of origin for export documentation
📦 Wholesale Distribution

Template considerations:

  • Case/unit quantity display with conversions
  • Barcode fields for scanning
  • Customer item numbers alongside internal SKUs
  • Bin locations on pick tickets
👔 Professional Services

Template considerations:

  • Detailed time entries with dates and descriptions
  • Project/task grouping on invoices
  • Rate cards and billing arrangements shown
  • Expense reimbursement detail with receipts

Testing and Debugging

💼 Template Development Workflow

Recommended process:

  1. Start by customizing existing standard template (don't start from scratch)
  2. Use "Preview" function to test with sample transaction
  3. Check PDF output, not just HTML preview
  4. Test with transactions having many line items (page breaks)
  5. Test with minimum data (null handling)
  6. Verify in different browsers if email HTML version used

PDF Template Configuration Checklist

Chapter 6.6

Email Templates

Create professional, dynamic email communications using NetSuite's email template system with merge fields, conditional content, and automated delivery.

Email Template Overview

NetSuite email templates automate customer and vendor communications with dynamically merged data. Unlike PDF templates that use FreeMarker, email templates use a simpler merge field syntax, making them more accessible to non-technical users while still providing powerful personalization capabilities.

ℹ️ Email Template Types
  • Transaction Email Templates — Attached to transaction forms for sending invoices, POs, quotes
  • Marketing Email Templates — Campaign-based emails with unsubscribe links
  • Workflow Email Templates — Triggered by workflow actions
  • Case Email Templates — Support case communications
  • Employee Notification Templates — Internal HR communications

Template Structure

Email templates consist of several components that work together to create personalized communications:

Component Purpose Notes
Subject Line Email subject with merge fields Keep under 50 characters; can include ${entity.firstname}
Body (Rich Text) HTML formatted content WYSIWYG editor with merge field insertion
Body (Plain Text) Fallback for non-HTML clients Auto-generated or manual override
Attachments PDF of transaction, File Cabinet files Check "Attach Transaction PDF" checkbox
From Address Sender email (must be configured) Requires domain authentication for deliverability

Merge Field Syntax

Email templates use a simple merge field syntax to insert dynamic data from records:

Basic Merge Field Syntax
<!-- Entity fields -->
${entity.firstname}           <!-- Customer/vendor first name -->
${entity.companyname}         <!-- Company name -->
${entity.email}               <!-- Primary email -->

<!-- Transaction fields -->
${transaction.tranid}         <!-- Transaction number -->
${transaction.total}          <!-- Total amount -->
${transaction.trandate}       <!-- Transaction date -->
${transaction.status}         <!-- Status display value -->

<!-- User/employee fields -->
${user.firstname}             <!-- Current user sending email -->
${user.email}                 <!-- User's email -->
${user.phone}                 <!-- User's phone -->

<!-- Company fields -->
${company.companyname}        <!-- Your company name -->
${company.mainaddress}        <!-- Company address -->
💡 Finding Available Merge Fields

When editing an email template, use the Insert Field dropdown in the WYSIWYG editor. This shows all available merge fields for the selected record type, organized by category. The field IDs shown are exactly what you need in the ${...} syntax.

Creating Transaction Email Templates

1
Select Record Type

Choose the transaction type (Invoice, Sales Order, etc.) to determine available merge fields

2
Configure Template Settings

Name, description, and set as preferred template for record type

3
Build Subject Line

Include transaction number: "Invoice ${transaction.tranid} from ${company.companyname}"

4
Design Body Content

Use WYSIWYG editor, insert merge fields, apply formatting

5
Configure Attachments

Check "Attach Transaction PDF" to include invoice/PO as attachment

Sample Email Template

Invoice Email Template Example
<!-- Subject: Invoice ${transaction.tranid} from ${company.companyname} -->

<div style="font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto;">
    <!-- Header with logo -->
    <div style="background-color: #f8f9fa; padding: 20px; text-align: center;">
        <img src="${company.logo}" alt="${company.companyname}" style="max-height: 60px;">
    </div>

    <!-- Main content -->
    <div style="padding: 30px;">
        <p>Dear ${entity.firstname},</p>

        <p>Please find attached Invoice <strong>${transaction.tranid}</strong>
           dated ${transaction.trandate}.</p>

        <!-- Invoice summary box -->
        <div style="background-color: #f0f7ff; padding: 15px; border-radius: 5px; margin: 20px 0;">
            <p style="margin: 5px 0;"><strong>Amount Due:</strong> ${transaction.total}</p>
            <p style="margin: 5px 0;"><strong>Due Date:</strong> ${transaction.duedate}</p>
            <p style="margin: 5px 0;"><strong>Terms:</strong> ${transaction.terms}</p>
        </div>

        <p>If you have any questions, please contact us at ${company.email}
           or ${company.phone}.</p>

        <p>Thank you for your business!</p>

        <p>Best regards,<br>
        ${user.firstname} ${user.lastname}<br>
        ${company.companyname}</p>
    </div>

    <!-- Footer -->
    <div style="background-color: #333; color: #fff; padding: 15px; text-align: center; font-size: 12px;">
        <p>${company.mainaddress}</p>
    </div>
</div>

Advanced Merge Features

Accessing Related Records

Related Record Fields
<!-- Primary contact on entity -->
${entity.contact.firstname}
${entity.contact.email}

<!-- Sales rep on transaction -->
${transaction.salesrep.firstname}
${transaction.salesrep.email}
${transaction.salesrep.phone}

<!-- Subsidiary information -->
${transaction.subsidiary.name}
${transaction.subsidiary.mainaddress}

<!-- Custom fields -->
${transaction.custbody_field_id}
${entity.custentity_field_id}

Conditional Content (Using SuiteScript)

⚠️ Standard Templates Have No Conditionals

Native email templates don't support if/else logic. For conditional content:

  • Option 1: Create multiple templates, assign via workflow based on conditions
  • Option 2: Use SuiteScript to dynamically build email content
  • Option 3: Use Marketing Templates (campaign) which support some dynamic content

Marketing Email Templates

Marketing templates are designed for campaigns and include special features for tracking and compliance:

Feature Transaction Template Marketing Template
Primary use Invoices, POs, quotes Campaigns, newsletters
Unsubscribe link Not included Required (auto-inserted)
Open/click tracking Not available Built-in analytics
A/B testing No Yes (with campaigns)
Drag-drop editor No Yes
Dynamic content blocks No Yes (based on segments)
💡 CAN-SPAM Compliance

Marketing templates automatically include compliance requirements:

  • Unsubscribe link (use ${unsubscribe} merge field)
  • Physical mailing address (required)
  • Clear identification of sender

Workflow Email Actions

Workflows can send emails using templates at any point in the process:

1
Add Send Email Action

In workflow state, add action type "Send Email"

2
Configure Recipients

Dynamic: field on record (e.g., Sales Rep), static email, or role

3
Select Template

Choose from existing templates or build inline

4
Set Conditions (Optional)

Add conditions to control when email sends

Common Workflow Email Scenarios
Scenario                          Trigger                      Template
-------------------------------------------------------------------------------
Sales order confirmation          SO saved, status Pending     Order Confirmation
Approval request                  Pending Approval state       Approval Request
Approval granted                  Approved state               Approval Notification
Past due reminder                 Scheduled, daysoverdue > 0   Past Due Reminder
Quote follow-up                   Scheduled, 3 days after      Quote Follow-up
Welcome new customer              Customer created             Welcome Email

Email Delivery Configuration

Domain Authentication

🚨 SPF/DKIM Required for Deliverability

Without proper domain authentication, emails may be marked as spam or rejected. Required DNS records:

  • SPF Record: Authorizes NetSuite to send on your behalf
  • DKIM Record: Cryptographically signs emails
  • DMARC Policy: Tells receiving servers how to handle failures

Path: Setup → Company → Email → Domain Keys

Send From Configuration

Send From Option Configuration Use Case
Current User User's email address Personalized communications
Default Email Company-wide default Generic notifications
Specific Address Hard-coded email Department-specific (ar@company.com)
Record Field Dynamic from record Sales rep for their customers

Case Management Templates

Support cases have specialized template features:

Case-Specific Merge Fields
<!-- Case information -->
${case.casenumber}            <!-- Case number -->
${case.title}                 <!-- Case subject -->
${case.status}                <!-- Current status -->
${case.priority}              <!-- Priority level -->
${case.createddate}           <!-- Date opened -->

<!-- Assigned employee -->
${case.assigned.firstname}    <!-- Assigned rep name -->
${case.assigned.email}        <!-- Rep email -->

<!-- Customer self-service link -->
${case.externalcaseurl}       <!-- Link to customer portal -->

<!-- Conversation history -->
${case.messages}              <!-- Full message thread -->

Auto-Response Templates

Template Type Trigger Common Content
Case Acknowledgment New case created Case number, expected response time, portal link
Case Update Status change New status, next steps, rep contact
Case Closure Case closed Resolution summary, satisfaction survey link
Escalation Notice Priority increased New priority, escalation contact

Best Practices

💼 Email Template Strategy

Design principles:

  • Mobile-first: 60%+ of emails read on mobile—use single-column layouts, large fonts
  • Keep it short: Get to the point quickly; link to details rather than including everything
  • Clear CTAs: One primary action per email, make buttons obvious
  • Consistent branding: Use company colors, logo, standard footer across all templates
  • Test across clients: Check rendering in Gmail, Outlook, Apple Mail
⚠️ Common Email Template Mistakes
  • Missing null handling: ${entity.firstname} shows blank if not set—use fallbacks where possible
  • Broken images: Use absolute URLs for images; relative paths fail in email
  • Wrong "From" address: Sending from unauthenticated domain = spam folder
  • No plain text version: Some clients/filters require plain text alternative
  • Overly complex HTML: Email HTML support is limited—avoid CSS grid, flex, advanced features
  • Large attachments: Keep under 10MB; prefer links to File Cabinet for large files

Industry-Specific Patterns

🏭 Manufacturing

Template considerations:

  • Shipping confirmations with tracking numbers
  • Quality documentation/COA attachments
  • Production schedule updates
  • RMA authorization emails with return instructions
📦 Wholesale/Distribution

Template considerations:

  • Order confirmations with estimated ship date
  • Backorder notifications
  • Price change announcements
  • Credit limit warnings/increases
💻 Software/SaaS

Template considerations:

  • Subscription renewal reminders
  • Usage threshold alerts
  • License key delivery
  • Onboarding sequences (multiple templates)
👔 Professional Services

Template considerations:

  • Project milestone notifications
  • Timesheet approval requests
  • Retainer balance notifications
  • Statement of Work delivery

Testing and Troubleshooting

1
Preview with Sample Record

Use "Preview" button, select actual record to see merged content

2
Send Test Email

Send to yourself to verify formatting and attachments

3
Check Email Log

Setup → Company → Email → Email Log to verify delivery

4
Test Multiple Clients

Verify rendering in Gmail, Outlook, Apple Mail

Email Template Configuration Checklist

Chapter 6.7

Dashboard Design

Design effective role-based dashboards that surface the right information to the right users, utilizing portlets, KPIs, reminders, and shortcuts for maximum productivity.

Dashboard Architecture Overview

NetSuite dashboards serve as the primary workspace for users, displaying real-time information tailored to their role. Well-designed dashboards reduce clicks, surface actionable insights, and drive user adoption. Each dashboard is a combination of portlets organized into a customizable layout.

ℹ️ Dashboard Hierarchy
  • Published Dashboards — Admin-created, assigned to roles, users cannot modify
  • Role-Based Defaults — Default dashboard for role, users can customize
  • Personal Dashboards — User-created dashboards (if permissions allow)

Users see published dashboards first (in tabs), then their personal dashboards.

Portlet Types

Portlets are the building blocks of dashboards. Each portlet type serves a different purpose:

Portlet Type Purpose Data Source
Key Performance Indicators (KPI) Scorecard-style metrics KPI Scorecard saved search or standard KPIs
Search Results List view of saved search data Any saved search marked "Available as List Portlet"
Report Snapshots Financial reports as charts Built-in or custom financial reports
Trend Graph Time-series visualization Saved search with date grouping
Reminders Action-required notifications Built-in or custom reminder searches
Shortcuts Quick links to frequent tasks User or admin defined
Quick Search Record lookup Global search by record type
Recent Records Recently viewed items User's browsing history
Custom Portlet SuiteScript-powered content Portlet script (Suitelet)
Calendar Schedule visualization Events, tasks, transactions

Published Dashboards

Published dashboards are administrator-controlled layouts that cannot be modified by users. Use them for:

  • Standardized role-based views
  • Compliance-required metrics visibility
  • Executive dashboards with consistent KPIs
  • Onboarding dashboards for new users
1
Create Dashboard

Name dashboard, add description, select subsidiary (OneWorld)

2
Configure Layout

Choose column structure (1, 2, or 3 columns)

3
Add Portlets

Select portlet types and configure each one

4
Assign Roles

Choose which roles see this dashboard

5
Publish

Activate dashboard; appears as tab for assigned roles

💡 Dashboard Tab Naming

Published dashboard names become tab names. Keep them short and descriptive: "Sales Dashboard," "AR Overview," "Inventory Status." Avoid generic names like "Dashboard 1."

KPI Portlets

KPI portlets display key metrics in a scorecard format with comparison values, trends, and conditional highlighting.

Standard vs. Custom KPIs

Feature Standard KPIs Custom KPIs (Saved Search)
Source Built-in NetSuite metrics Custom saved search
Flexibility Limited configuration Full control over calculation
Comparison periods Built-in (prior period, same period last year) Requires formula fields
Highlighting Automatic (green/red based on trend) Requires highlighting conditions
Use when Standard metrics meet needs Custom calculations required
Common KPI Metrics by Role
Role                    KPIs to Display
-------------------------------------------------------------------------------
Sales Rep               Open Opportunities, Pipeline Value, MTD Sales,
                        Quote Conversion Rate, Overdue Activities

Sales Manager           Team Pipeline, Forecast vs. Actual, Win Rate,
                        Average Deal Size, Sales by Rep

AR Clerk                Open AR Balance, Overdue Invoices, DSO,
                        Collections Pending, Unapplied Payments

AP Clerk                Open AP Balance, Bills Due This Week,
                        Unapproved Bills, Early Payment Discounts Available

Controller              Cash Position, AR Aging, AP Aging, Working Capital,
                        Revenue vs. Budget, EBITDA

Warehouse Manager       Open Orders to Ship, Backorders, Inventory Value,
                        Items Below Reorder Point, Receipts Pending

Purchasing              Open POs, Overdue Deliveries, Vendor Performance,
                        Requisitions Pending

Creating KPI Scorecards

💼 KPI Scorecard Design Tips

Best practices:

  • Limit to 6-8 KPIs per portlet—too many reduces impact
  • Use consistent date ranges (MTD, QTD, YTD, Rolling 30)
  • Add comparison column (prior period or same period last year)
  • Configure highlighting: green for good, red for bad, yellow for warning
  • Link KPIs to detail saved searches (drill-down capability)

Reminder Portlets

Reminders alert users to items requiring action. NetSuite includes built-in reminders plus custom reminder searches.

Built-in Reminders

Reminder Trigger Target Roles
Approve Sales Orders Pending approval status Sales managers, approvers
Approve Purchase Orders Pending approval status Purchasing managers
Orders to Fulfill Approved, not shipped Warehouse, fulfillment
Items to Receive POs with pending receipts Receiving, warehouse
Bills to Pay Approved bills due AP clerk, treasury
Overdue Tasks Task due date passed All users
Expense Reports to Approve Pending approval Managers

Custom Reminders

Create custom reminders using saved searches with the "Available as Reminder" option:

Custom Reminder Examples
Reminder                    Saved Search Criteria
-------------------------------------------------------------------------------
Quotes Expiring Soon        Estimate: Status=Open, Valid Through within 7 days
Contracts Expiring          Customer: Contract End Date within 30 days
Low Stock Items             Item: Available < Reorder Point
Invoices Over 60 Days       Invoice: Days Overdue > 60
Projects Over Budget        Project: Actual Hours > Estimated Hours
Unapplied Payments          Payment: Unapplied Amount > 0
Pending Time Approval       Time Entry: Approval Status = Pending

Shortcuts Portlet

Shortcuts provide one-click access to frequently used transactions, records, and reports. Effective shortcuts reduce navigation time significantly.

Shortcut Types

Type Example How to Add
New Record New Sales Order, New Invoice Drag from menu or type URL
Saved Search Open Quotes, My Tasks Select from search dropdown
Report AR Aging, P&L Select from reports dropdown
Record Page Specific customer, setup page Paste URL
External Link Carrier tracking, external tool Enter external URL
💡 Shortcut Organization

Group shortcuts logically using separator lines or multiple shortcut portlets:

  • Daily Tasks: New records, approvals, time entry
  • Reports: Most-used reports for the role
  • Searches: Key lists and lookups

Role-Based Dashboard Strategy

Different roles have different information needs. Design dashboards that answer "What do I need to do?" and "How am I performing?"

💼 Dashboard Design by Role Type

Transactional Roles (AR/AP Clerks, Warehouse):

  • Heavy on reminders and work queues
  • Shortcuts to frequent transactions
  • Simple metrics (counts, totals)

Management Roles (Controllers, Managers):

  • KPI-focused with comparisons
  • Trend graphs for performance over time
  • Drill-down capability to details

Executive Roles (CEO, CFO):

  • High-level KPIs only
  • Report snapshots for financial position
  • Minimal clutter, maximum insight

Sample Dashboard Layouts

AR Clerk Dashboard
┌─────────────────────────────────┬─────────────────────────────────┐
│  REMINDERS                      │  SHORTCUTS                      │
│  • Invoices to Create (12)      │  • New Invoice                  │
│  • Payments to Apply (8)        │  • New Payment                  │
│  • Deposits to Make (3)         │  • Customer Lookup              │
│  • Customers to Call (5)        │  • AR Aging Report              │
├─────────────────────────────────┴─────────────────────────────────┤
│  KPIs                                                             │
│  ┌──────────┬──────────┬──────────┬──────────┐                   │
│  │ Open AR  │ Overdue  │  DSO     │ MTD Cash │                   │
│  │ $1.2M    │ $245K    │ 38 days  │ $156K    │                   │
│  │ ▲ 5%     │ ▼ 12%    │ ▼ 2 days │ ▲ 8%     │                   │
│  └──────────┴──────────┴──────────┴──────────┘                   │
├─────────────────────────────────┬─────────────────────────────────┤
│  OVERDUE INVOICES               │  RECENT PAYMENTS                │
│  [Saved search results]         │  [Saved search results]         │
│  Customer | Amount | Days       │  Customer | Amount | Date       │
│  ABC Co   | $45K   | 45 days    │  XYZ Inc  | $12K   | Today      │
│  ...                            │  ...                            │
└─────────────────────────────────┴─────────────────────────────────┘
Sales Manager Dashboard
┌───────────────────────────────────────────────────────────────────┐
│  KPI SCORECARD                                                    │
│  ┌──────────┬──────────┬──────────┬──────────┬──────────┐        │
│  │ Pipeline │ MTD Rev  │ Win Rate │ Avg Deal │ Forecast │        │
│  │ $4.5M    │ $890K    │ 32%      │ $45K     │ $1.2M    │        │
│  │ vs $4.1M │ vs $750K │ vs 28%   │ vs $42K  │ vs $1.1M │        │
│  └──────────┴──────────┴──────────┴──────────┴──────────┘        │
├─────────────────────────────────┬─────────────────────────────────┤
│  PIPELINE BY STAGE              │  REVENUE TREND                  │
│  [Trend Graph]                  │  [Trend Graph]                  │
│  ████████████████               │        ▄▄▄                      │
│  ████████████                   │      ▄████▄                     │
│  ████████                       │    ▄████████▄                   │
│  ████                           │  ▄████████████                  │
│  Prospecting→Negotiation→Close  │  Jan Feb Mar Apr May Jun        │
├─────────────────────────────────┼─────────────────────────────────┤
│  TEAM PERFORMANCE               │  APPROVALS NEEDED               │
│  Rep     | Pipeline | MTD       │  • Sales Orders (3)             │
│  Jones   | $1.2M    | $245K     │  • Discounts > 20% (2)          │
│  Smith   | $980K    | $312K     │  • New Customer Credits (1)     │
│  ...                            │                                 │
└─────────────────────────────────┴─────────────────────────────────┘

Dashboard Performance

⚠️ Dashboard Load Time Issues

Slow dashboards frustrate users and reduce adoption. Common causes:

  • Too many portlets: Each portlet makes separate requests; limit to 8-10
  • Inefficient saved searches: Use summary-level data, not transaction-level
  • Real-time KPIs: Consider scheduled refresh for heavy calculations
  • Large date ranges: Default to current period, allow expansion

Optimization Strategies

Issue Solution
Slow search portlets Limit results to 25-50 rows; add date filters
Heavy KPI calculations Pre-calculate in scheduled script; store in custom record
Too many reminders Consolidate into single reminder search with categories
Slow report snapshots Use scheduled report with "Cache Results" enabled
Unused portlets Remove; portlets load even if collapsed

Industry-Specific Dashboard Patterns

🏭 Manufacturing

Key dashboard elements:

  • Production schedule/work orders due
  • Inventory below reorder point
  • On-time delivery percentage
  • WIP value and aging
  • Quality metrics (reject rate, returns)
📦 Wholesale/Distribution

Key dashboard elements:

  • Orders to ship today/backorders
  • Inventory turns by category
  • Gross margin by product line
  • Vendor fill rate
  • Shipping carrier performance
💻 Software/SaaS

Key dashboard elements:

  • MRR/ARR and growth rate
  • Churn rate and at-risk renewals
  • NRR (Net Revenue Retention)
  • Support case metrics
  • Deferred revenue balance
👔 Professional Services

Key dashboard elements:

  • Utilization rate (billable vs. total)
  • Project profitability
  • Time pending approval
  • Revenue recognition schedule
  • Resource availability
💚 Nonprofit

Key dashboard elements:

  • Donations YTD vs. budget by campaign
  • Grant fund balances and deadlines
  • Expense ratio (program vs. admin)
  • Donor retention rate
  • Pending pledges

Custom Portlets (SuiteScript)

When standard portlets don't meet requirements, custom portlets can display virtually any content:

ℹ️ Custom Portlet Use Cases
  • External data integration: Display data from external APIs
  • Complex visualizations: Charts beyond NetSuite's built-in options
  • Interactive forms: Quick-entry forms embedded in dashboard
  • Calculated metrics: Complex multi-record calculations
  • Announcements: Company news, policy updates
Custom Portlet Script Structure
/**
 * @NApiVersion 2.1
 * @NScriptType Portlet
 */
define(['N/search', 'N/ui/serverWidget'], function(search, serverWidget) {
    function render(params) {
        var portlet = params.portlet;
        portlet.title = 'My Custom Portlet';

        // Add form fields
        portlet.addField({
            id: 'custpage_kpi',
            type: serverWidget.FieldType.TEXT,
            label: 'Key Metric'
        }).defaultValue = calculateKPI();

        // Or add HTML content
        portlet.html = '<div>Custom HTML content</div>';
    }

    return { render: render };
});

Dashboard Deployment Checklist

Dashboard Design Checklist