Skip to content

NetSuite technical integration

Integration options

NetSuite’s REST APIs are the preferred integration method. Pick the approach that fits your team’s technical setup.

Use OAuth 2.0 with NetSuite’s REST API to fetch record data, then launch a Tallyfy process1 via the Tallyfy API. Note that Tallyfy’s API uses org-scoped endpoints - templates are called “checklists” in API paths, and launching a process means creating a “run.”

const handleEmployeeHire = async (employeeData, orgId, checklistId) => {
// 1. Fetch employee details from NetSuite
const employee = await netsuiteAPI.get(`/employee/${employeeData.id}`, {
expand: ['department', 'location', 'subsidiary', 'supervisor']
});
// 2. Launch a Tallyfy process (run) from a template (checklist)
const run = await fetch(
`https://go.tallyfy.com/api/organizations/${orgId}/checklists/${checklistId}/runs`,
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_TALLYFY_TOKEN',
'X-Tallyfy-Client': 'APIClient',
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: `Onboarding - ${employee.entityId}`,
prerun: {
employee_id: employee.id,
full_name: `${employee.firstName} ${employee.lastName}`,
email: employee.email,
subsidiary: employee.subsidiary.name,
department: employee.department.name,
location: employee.location.name,
supervisor: employee.supervisor.name
}
})
}
);
return run.json();
};

SuiteScript integration

You can also build native NetSuite scripts that fire on record events. This SuiteScript example launches a Tallyfy process whenever a new employee record is created:

/**
* @NApiVersion 2.1
* @NScriptType UserEventScript
*/
define(['N/https', 'N/record'], function(https, record) {
function afterSubmit(context) {
if (context.type === context.UserEventType.CREATE) {
const employee = context.newRecord;
const orgId = 'YOUR_ORG_ID';
const checklistId = 'YOUR_CHECKLIST_ID';
https.post({
url: `https://go.tallyfy.com/api/organizations/${orgId}/checklists/${checklistId}/runs`,
headers: {
'Authorization': 'Bearer YOUR_TALLYFY_TOKEN',
'X-Tallyfy-Client': 'APIClient',
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: `Onboarding - ${employee.getValue('entityid')}`,
prerun: {
employee_id: employee.id,
name: employee.getValue('entityid')
}
})
});
}
}
return { afterSubmit: afterSubmit };
});

Data mapping

Common NetSuite fields you’ll want to map to Tallyfy kick-off form fields:

NetSuite fieldTallyfy form fieldDescription
idemployee_idInternal record ID
entityIdentity_idEmployee number
firstName + lastNamefull_nameEmployee name
emailemailEmail address
subsidiary.namesubsidiaryLegal entity
department.namedepartmentDepartment name
location.namelocationOffice location
supervisor.namemanagerDirect manager
titlejob_titleJob title
employeeTypeemployee_typeEmployment type

iPaaS alternatives

If SuiteScript development isn’t an option, consider these platforms:

  • Celigo - NetSuite-native integration platform
  • Workato - Enterprise automation with NetSuite recipes
  • Boomi - Dell Boomi AtomSphere with NetSuite connectors
  • MuleSoft - Anypoint Platform with NetSuite support

Vendors > NetSuite

Tallyfy bridges NetSuite’s limitations by coordinating approval chains across departments for processes like invoice approvals and month-end close that NetSuite’s single-record workflows can’t handle alone.

Middleware > Celigo

Connect Tallyfy with enterprise systems like NetSuite and Salesforce through Celigo’s integrator.io platform using HTTP connectors and Tallyfy’s REST API.

Footnotes

  1. In Tallyfy’s API, templates are called “checklists” and running instances are called “runs”