Record templates are one of the most powerful features in ExtendInsights. They let you map, import, and update NetSuite records at scale through familiar Excel workflows. Whether you are building your first template or your fiftieth, this guide covers the six critical things every template builder should know.
What's Inside
Finding Field IDs: The Internal Language of NetSuite
Build Order: Header Fields before Sublist Fields
Custom Fields Not Showing? Check Permissions First
Speed Up Uploads with Dropdown Internal IDs
Excel Formulas in Templates: The Cell Format Trap
Common NetSuite Errors and What They Actually Mean
1. Finding Field IDs: The Internal Language of NetSuite
When mapping columns in an ExtendInsights template, you are not using the label you see on a NetSuite form. You are using the field's internal ID, the programmatic name that NetSuite's API understands. Getting this right is the foundation of every working template.
Option A: Click the Field Label in NetSuite
With customization mode enabled, clicking directly on a field label in NetSuite reveals a popup showing the field's internal ID. For example, clicking the Date field on a transaction record will show trandate as its internal ID. Fast, contextual, and built right into NetSuite.
Option B: Install a Browser Extension
Extensions like NetSuite Field Explorer expose field IDs directly in the NetSuite UI as you hover over fields. This is ideal for power users who build templates frequently.
Option C: Use the NetSuite Schema Browsers
NetSuite provides official reference browsers for every record type and field. Bookmark both for reference:
REST API Browser (OpenAPI 3.0) — Modern REST integrations: fields, types, operations, response shapes. Open REST API Browser →
SOAP Schema Browser (2025.2) — Records, sublists, and object schemas for SOAP-based integrations. Open SOAP Schema Browser →
⚠️ Important Exception: For custom fields, use the field label name when building your template, not the internal ID. This is the one exception to the field ID rule. All standard NetSuite fields use their internal ID, but custom fields are mapped by their label as it appears in the NetSuite UI.
2. Build Order: Header Fields before Sublist Fields
The golden rule: Always map your header and body fields first, then add your sublist (line-level) fields.
Header fields define the record itself: the customer, the date, the subsidiary, the transaction number. Sublist fields define what's on the record: the line items, the inventory details, the expense categories. NetSuite evaluates them in this hierarchy, and your template should reflect that.
Header fields first:
Entity (Customer or Vendor)
Subsidiary
Date
Currency
Custom header fields (custbody_*)
Sublist fields second:
Item
Quantity
Rate
Amount
Custom line fields (custcol_*)
3. Custom Fields Not Showing? Check Permissions First
Almost always, a missing custom field is a permissions issue, and it comes in two forms.
Custom Role Missing Field Access: If your organization uses a custom NetSuite role, that role may not have explicit permission to view or edit specific custom fields. Your NetSuite Admin needs to grant access to those fields on the custom role directly.
Field Applied to Form But Not Exposed for API: Your NetSuite Admin may have added the custom field to the record form in the UI but never enabled it for web services or API access. These are two separate settings in NetSuite's custom field configuration.
⚠️ Admin Action Required: Ask your NetSuite Admin to navigate to Customization > Lists, Records & Fields > [Field Type] and verify:
Store Value is checked on the main field settings page. Without this, the field will not retain or expose data through the API.
The correct record type is selected under the Applies To tab. If the wrong record type is checked—or none at all—the field will not be available, and ExtendInsights will not be able to see it.
4. Speed Up Uploads with Dropdown Internal IDs
The safest, fastest way to supply a value to a dropdown or picklist field is by using the internal ID of the option, wrapped in double brackets:
[[123]]
The double brackets tell ExtendInsights to skip validation and pass the value directly to NetSuite as a raw internal ID. NetSuite does not need to look up a matching label, which makes your uploads significantly faster, especially on large datasets with many dropdown columns.
To find the internal ID of a dropdown option, navigate to the relevant list in NetSuite. For example, for Subsidiary go to Setup > Company > Classification > Subsidiaries.
💡 Pro Tip: Use ExtendInsights Analytics to pull a raw download of internal IDs directly from a Saved Search in NetSuite. This is a quick way to build a full reference list for any record type.
🚀 Performance Tip: For a template with 500 rows and 10 picklist columns, using [[123]] instead of text labels can dramatically cut upload time.
5. Excel Formulas in Templates: The Cell Format Trap
Cells formatted as "Text" will display the formula itself, not the computed result. If a cell is pre-formatted as Text before you enter a formula, Excel treats the formula as a literal string — and your upload will contain formula text rather than the computed value.
The fix: Before entering any formulas, change the cell format from Text to General or a specific type like Number or Date.
Select the cells where you intend to use formulas.
Right-click → Format Cells → select General or Number. Avoid Text for formula cells.
Now enter your formula. Excel will evaluate and display the computed result, which is what ExtendInsights will read during upload.
📌 Reminder: The [[ID]] bracket notation has no impact on Excel's cell formatting behavior. Fix the cell format before you worry about anything else.
6. Common NetSuite Errors and What They Actually Mean
Missing Required Fields
NetSuite requires certain fields before a record can be saved. Common culprits include Entity, Subsidiary, Date, and Item. Check the Schema Browser for Required: true fields. If a required field is missing from your template row, the entire row will fail.
Dependency Not Set for API Use
This means a dependency has not been configured in NetSuite's metadata for the field your template is trying to populate. Your NetSuite Admin needs to set up a Metadata Setting Record. Using Subsidiary on a Purchase Order as an example:
Name: Subsidiary dependency
Applies To: PurchaseOrder
Configuration:
{"dependencies": ["PurchaseOrder.entity"]}Target Field: PurchaseOrder.subsidiary
If Entity is not provided in your template row, NetSuite will return the dependency error and block the upload.
Debugging Approach
Start with the ExtendInsights error log to identify which rows failed and the exact error message. Cross-reference the field name in the Schema Browser to confirm whether it is required or has API dependencies. In most cases, the fix is either adding a missing column or asking your NetSuite Admin to adjust a field or role setting.
Putting It All Together
Building reliable ExtendInsights record templates is about developing good habits. Know where to find your field IDs. Build header fields first. Verify permissions before assuming a field does not exist. Use internal IDs for dropdowns. Keep your Excel formatting clean. And when errors appear, read them literally.
With these six practices in your workflow, you will spend less time troubleshooting and more time getting data into NetSuite accurately and efficiently.
💬 Have questions about a specific record type or template scenario? Use the chat widget on our ExtendInsights support page. We are here to help you build templates that work the first time.
