Customization Services provides the tools to instantly add customizations to Sage Intacct standard objects.

You can add:

This topic provides an overview of Customization Services features for developers. Usage information about Customization and Platform Services is available in the Sage Intacct product help. The product help also covers custom document templates, which are not discussed here.


You can subscribe to Customization Services by navigating to Company > Admin > Subscriptions. If you see Platform Services instead of Customization Services, you have access to all the features in Customization Services as well as features available only in Platform Services. In other words, Platform Services provides a superset of the functionality.

Customization Services vs Platform Services

Customization Services lets you customize standard Sage Intacct objects (Customer, Vendor, Account, AP Bill, and so forth). For example, a property management company might want to add a field to the Location record to store the number of units in each building.

Platform Services lets you extend the Sage Intacct product by creating custom objects, pages, and applications. For example, a human resource manager might want an application to track employee benefit programs and integrate with employee information already in the system.

All the features in Customization Services are also available in Platform Services. The following shows Customization Services features in the larger context of Platform Services.

Customization Services as a subset of Platform Services

Depending on whether you subscribe to Customization Services or Platform Services, you will use a different approach to access features.

Types of customizations

Custom reports

You can create custom reports to get insight and answers from the unique information stored in your Sage Intacct company. Unlike financial reports, which are based on financial groupings such as assets and liabilities, custom reports can be based on individual records and fields, as well as non-financial operational information.

Two custom report writers are available:

Reports defined using both writers can be examined and run via the API as well as the UI.

Custom fields

Custom fields, which are likely the most commonly-used feature of Customization Services, let you capture data that is unique to your business practices. Most other Customization Services activities rely on data captured in custom fields. After you add a custom field, it can be used as part of a standard form such as an Order Entry form. Namespaces are recommended for the integration names of custom fields.

See the Sage Intacct product help for usage information on custom fields.

Custom list views

The way a list is arranged, filtered, and sorted is called a view. Sage Intacct provides standard views for displaying list items or recently viewed or modified list items. You can also create custom views to display list items the way you like.

Note: Custom list views cannot be packaged and imported to the system.

There are two types of Smartlinks, Click and Fetch.

You can use conditions and injections as described below when creating Smartlinks.

Smart Rules

Smart Rules are conditions that generate a warning or error message to the user. Smart Rules can be applied to Add, Set, or Delete events on records.

When writing conditions for Smart Rules, understand that the condition is for the rule you want enforced, not the exception. For example, if you want to display an error whenever a bill description is null, the rule’s condition should return true if the description has a value (is not null):


You use conditions and injections as described below when creating Smart Rules.


Smart Events

Smart Events are actions that fire after certain conditions are met. The actions can be performed after Add, Set, or Delete events on records. Smart Events can be used to:

After the conditions are met, Smart Event actions are queued for processing. Actions are fire and forget, meaning feedback about errors is not available. For example, assume a bill is edited and a Smart Event fires a Sage Intacct API function. If there are errors in that API function call, safeguards such as retry logic or admin notifications cannot be used.

Note: If there are multiple Smart Events on the same object, they are typically processed in order. However, there is no guarantee of FIFO since the queue is managed by multiple concurrent workers.

You can use conditions and injections when creating Smart Events. For an example, see Smart Event Walkthrough.

Synchronous Smart Event API calls

There may be cases where you need to ensure that a group of events, including the triggering action, are executed in order as a set. You can use synchronous API Smart Events to create a chain of actions that succeed or fail as a group. See Synchronous API Smart Events for more information.


You can use Customization Services if you are an administrator in the Sage Intacct company you plan to customize.


It’s considered a best practice to add a namespace to the ID field of your customizations. This helps avoid name conflicts with other customizations, particularly those from partners. Keep the namespace short.

For example, My Expense Integration would prefix its smart event ID with MEI_.

Customization packages

Instead of managing individual customizations, you can group them into a single package that can imported. All packages are XML documents that conform to the Sage Intacct package XML schema definition. You may include up to 100 customizations (custom fields, Smart Rules, an so forth) in a package.

Packages are recommended as a best practice if you are a partner writing a solution utilizing Customization Services. Your customer’s administrator can easily install the package file, which means that you do not need administrative access to their Sage Intacct company.

If you are using Platform Services to write an application and also have standard object customizations, these should be included with your platform application. You should not have a separate customization package and a platform application installer. This will create upgrade problems for you in the future.

See Customization Packages for more information.


Injection parameters, similar to merge fields in Platform Services, are available for use in Smartlinks, Smart Rules, and Smart Events. An injection parameter is very similar to a merge field in your favorite word processing program.

The most basic injection uses the ID of the current object being extended, followed by a period, followed by the ID of the field within that object. The {! and !} characters are used as opener and closer characters respectively. For example, the following shows an injection used in a Smartlink Click URL:

URL with object ID and field ID in the injection parameter

If the external document ID of the record is 12345, the link evaluates to

Field lookup

The field lookup capability makes it easy to add injections. You can select injections from the Sage Intacct UI instead of adding them manually. For example, the following shows how to use the field lookup when writing a condition for a Smart Rule:

Screenshot of merge field selection window

You can use the field lookup to help you write conditions for Smart Rules, Smart Events, and Smartlinks. You can also use this capability when creating the building blocks that comprise these. For example, you can use field lookup for creating Smart Event email addresses, Smart Rule error messages, Smartlink targets, and so forth. The following diagram shows all the places you can use the lookup:

Diagram for merge field entry points

Note that the field lookup lets you access fields for related objects as well as any custom fields.

See the Sage Intacct product help for more information.


Conditions are decision mechanisms built into activities to determine when they will appear and how they will behave. Conditions are at the heart of Smartlinks, Smart Rules, and Smart Events. You use the PHP condition format when writing conditions.

Conditions can be composed of:

The following is a simple condition that evaluates to true only if the STOCKSYMBOL field is not empty:


When working with conditions in Smart Rules, consider using ternary operators to avoid writing overly long conditions. The expression (expr1) ? (expr2) : (expr3) evaluates to expr2 if expr1 evaluates to TRUE, and expr3 if expr1 evaluates to FALSE. For example, the following can be used to display an error when a user posts a bill line to account 5000 and location SJC:

({!APBILLITEM.ACCOUNTNO!} == '5000' && {!APBILLITEM.LOCATIONID!} == 'SJC') ? false : true.

You can also use provided methods, such as left(), to help write your conditions. For example, the following evaluates to true for an APBILL that has an APBILLITEM whose department ID begins with 100-:

left({!APBILLITEM.DEPARTMENTID!}, 4) === '100-'

See the Sage Intacct product help for more usage information, including available operators and methods.

Integration names for standard fields and custom fields

The integration names for standard and custom fields can be found in the Sage Intacct UI under the corresponding object under Customization Services > Catalog.

Troubleshooting and FAQs

See the FAQs for Customization Services.

A single-page cheat sheet for Smart Rules, Smart Events, and Smartlinks is now available. Print double sided and at actual size.


What’s next?

Provide feedback