NetSuite technical integration
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();};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 };});Common NetSuite fields you’ll want to map to Tallyfy kick-off form fields:
| NetSuite field | Tallyfy form field | Description |
|---|---|---|
id | employee_id | Internal record ID |
entityId | entity_id | Employee number |
firstName + lastName | full_name | Employee name |
email | email | Email address |
subsidiary.name | subsidiary | Legal entity |
department.name | department | Department name |
location.name | location | Office location |
supervisor.name | manager | Direct manager |
title | job_title | Job title |
employeeType | employee_type | Employment type |
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
Paylocity > Paylocity technical integration
Bamboohr > BambooHR technical integration
-
In Tallyfy’s API, templates are called “checklists” and running instances are called “runs” ↩
Was this helpful?
- 2025 Tallyfy, Inc.
- Privacy Policy
- Terms of Use
- Report Issue
- Trademarks