What is a custom record and should I use them?

Written by
Sonny Spencer, BFP, ACA
Director of Finance Operations
March 29, 2023
min read

Table of Contents

View all guides


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

This is some text inside of a div block.


NetSuite custom records are the building blocks to customizing your NetSuite environment to meet the specific needs of your business. These custom records can be used standalone to capture data for a specific business need or used as part of a larger NetSuite customization that involves many custom records working together.

One of the benefits of leveraging NetSuite custom records is their ability to be scripted, in both client and server scripts. This makes them very flexible when considering NetSuite custom development and therefore a critical tool in a NetSuite developer’s toolkit.

Salto Suite Tip: You can access the complete list of custom records in your NetSuite environment by following this menu path: Customization – Lists, Records & Fields – Record Types

Get Started with Salto

Take control of your deployments

Request a Demo ≥Request a Demo ≥

What is a custom record?

A custom record is an object type in NetSuite that allows a NetSuite admin or developer to group, structure, and link sets of custom fields in an almost infinite number of ways to meet the unique needs of the business.

Not every business challenge is unique. In fact, many businesses encounter similar challenges from tracking fixed assets to sales tax to payment processing. NetSuite Partners have built third party custom bundles that leverage NetSuite custom records in order to deliver a very specific solution that solves a common business challenge. If any such bundle has been installed in your NetSuite environment, you will find a list of corresponding records added to the list of system “Record Types”.

Fortunately, NetSuite provides a column that references the “From Bundle”, i.e. which specific bundle each custom record was created from.

Salto Suite Tip: Do not be concerned if you see a lock icon next to a particular custom record. This just means the bundle owner has locked this record to prevent anyone who installed the bundle from modifying it.

Real world examples

We have already mentioned a few real world examples for custom records, but those were for complete, packaged solutions. Let’s explore some real world examples that a NetSuite admin or developer might create to support their business needs.

  1. Creating a child record of the customer record to track overall customer satisfaction ratings at different points in time. This data could then be used to track trends by customer, by date, by sales rep, etc.
  2. Creating a child record of the fixed asset record to track periodic maintenance for each asset to quickly identify assets that could be at risk of malfunction.
  3. Creating a lightweight project management record (such as a project charter) to capture key project details or track project milestones, along with associated dates.

Customization Options - Project Management Record

Let's explore the different customization options by walking through our project management record example.

Key Header Level Fields

Many of the header level fields on the custom record object are intuitive, e.g. “Allow attachments” does exactly what it says. Some require a little more explanation:

Name - Provide a name that will make this record type easily identifiable and understood.

Include Name Field - Makes the name field mandatory on each record created. This can be helpful, but if you just need to track the project ID/number then it may not be necessary.

Records Are Ordered - Only applicable if this record type will be a child record type and you care about the order in which these child records are displayed on the parent record.

Screenshot of NetSuite custom record for capturing “Finance Projects” (1 of 2)

Show Remove Link - In some cases you may want the ability to disassociate child records from parent records. In this case, this box should be checked (it is by default). Note that once the records are detached they will no longer be linked and the child record will not be deleted.

Allow Quick Search - If you are familiar with the Quick Search dashboard portlet then you know how useful it can be to search for records directly from your dashboard. Check this box if you want users to be able to access this record type via Quick Search.

Allow Quick Add - Similar to the Quick Search option, you can grant users the ability to leverage the Quick Add dashboard portlet for this record type. This feature is not used very often, but can be a time saver, especially for custom records with a small number of fields.

Include In Global Search - If you want users to have the ability to search for these records in global search keep this checkbox checked. 

Salto Suite Tip: Global search is a very valuable feature, so it is important that any custom records stand out from others, else they could get confused with other record types when using global search. Again, it is critical that your custom record name is unique and identifiable.

Include In Search Menu - Checked by default and largely left that way. At some point now or in the future it is likely you will want to collect data on the custom record and having the ability to create a saved search for this record type is one of the easiest ways to go about that.

Enable Optimistic Locking - Also checked by default, this feature ensures no conflicting updates are allowed. This is common when multiple users are modifying the same record at the same time. After the first user saves updates, other users will receive an error message when attempting to save, e.g. “Record has been changed”.

Enable Inline Editing - If you have used the inline editing functionality before, you know it can be a real time saver, especially when needing to bulk delete records where no mass update is available for that particular record type. For the same reason, this feature should be enabled with some caution applied. It is enabled by default, so consider unchecking if it is not necessary.

Hierarchy - Think parent/child relationship, but for the parent record only. An example where this could be useful is if we had a global project and then associated projects for each region. These would all be the same Finance Project record type, but we could have the global project at the top of the hierarchy with regional projects beneath. Think about Account, Subsidiary, and Department structures and how NetSuite leverages a hierarchy to group records for financial reporting purposes.

Screenshot of NetSuite custom record for capturing “Finance Projects” (2 of 2)

User Access/Permissions

The “Access Type” field offers 3 options for granting users access to this custom record.

  1. Require Custom Record Entries Permission - Default setting. In order to access this record in NetSuite, the custom record must be added to the specific NetSuite user role permissions under the “Custom Record” subtab. In addition, the user role must also have access to the “Custom Record Types” role permission under the “Setup” subtab. This is recommended to ensure all user record access is managed through user roles only.
  2. Use Permission List - Some NetSuite admins and developers may opt to manage custom record access on the custom record itself. When “Use Permission List” is selected, NetSuite will reference the roles, levels, and restrictions captured in the “Permissions” tab on the custom record itself. This is generally quicker/easier, however for longer term system maintenance it is still recommended to use option (1). Why?

Example: Imagine you have three Project Manager roles in NetSuite, one for each of the three regions your  company operates in. A year later, your company moves into a fourth region and you need to add a new NetSuite role with the exact same permission (except for region/subsidiary). When you copy an existing role, the role permissions follow, but custom records are not automatically updated to add the new role. After the new role has been created/assigned, it is just a matter of time before users reach out to confirm they cannot access the custom records needed for their job. Avoid that altogether and go with option (1).

  1. No Permission Required - As the name suggests. Any user can access this custom record type. This is not recommended.

Parent/Child Custom Records

The ability to create parent/child relationships between custom NetSuite records (and child records of existing NetSuite records) is one of the key benefits of this functionality. It allows the ability to track separate but related records within the system.

Returning to  our “Finance Project” example: We have captured all of the high level project details in the parent record, but what if we want to capture individual project milestones? Could we capture those on the “Finance Project” itself? Sure, we could create 1, 2, 3 project milestones by using custom fields, but if the number of milestones varied by project it would be better to capture these under a separate custom record that is a child to the “Finance Project” custom record.

After creating the separate custom record with the necessary custom fields, you will now need to link this record to its parent. 

Salto Suite Tip: You cannot create the link directly in the parent custom record type. Instead, you need to create a custom field (record/list type) that references the parent custom record type and include it on the child record. Further, you must ensure the “Record is Parent” checkbox is checked.

Screenshot of NetSuite custom field that links “Finance Projects” to “Project Milestones”

Screenshot of NetSuite custom record for capturing “Project Milestones”

After you save for the first time

In order to view all of the available custom record customization options you must save the record first. Once saved, additional options become available. These include:

Additional Tabs

  1. Fields - This is where you can add custom fields to your custom record, just as you would any other custom field.
  2. Forms/Online Forms - Once you have created all of the required custom fields, you should organize them in a logical way for the best user experience. Do so by customizing the standard form and saving as a custom form.
  3. Child Record - You cannot add child records to this tab. This is for reference only with the exception of being able to update which tab (on the parent record) the child record will be displayed on.
  4. Parent Record - As for child records, you cannot add parent records to this tab. It is for reference only. Review the “Parent/Child Custom Records” section above that walks through the process of establishing a Parent/Child relationship.
  5. History/System Notes - As for other NetSuite objects, any history and system notes are created after the initial save. These will then be maintained from that point on for future changes made to the record.

Get Started with Salto

Take control of your deployments a Demo ≥

Final thoughts

In summary, NetSuite custom records can be an extremely valuable tool in the NetSuite admin or developer’s tool kit when configured appropriately. By leveraging parent/child relationships, you can create new tables in the NetSuite database to enhance NetSuite functionality and reporting capabilities that meet the specific needs of your business.

Custom records, like many other NetSuite objects, can be created in a lower environment and later migrated to Production. Consider using a tool, such as Salto, that will manage the migration process for your NetSuite custom records seamlessly. Doing so will reduce the risks associated with other methods of deployment

Written by
Sonny Spencer, BFP, ACA

Sonny is a seasoned NetSuite veteran, with more than 7 years experience implementing NetSuite and architecting NetSuite solutions for a wide variety of public and private companies, on a global scale. He leverages his background both as a Chartered Accountant and Certified NetSuite Administrator to design and build NetSuite solutions that solve real world problems. Sonny is an active member of the NetSuite community, participating in local NetSuite meetups, NetSuite forums and groups focused on financial system optimization.

Written by