NetSuite technical integration
Integration options
Section titled “Integration options”NetSuite’s REST APIs are the preferred integration method. Pick the approach that fits your team’s technical setup.
REST API integration (recommended)
Section titled “REST API integration (recommended)”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). // prerun keys are the kick-off fields' timeline IDs, not their labels. const run = await fetch( `https://go.tallyfy.com/api/organizations/${orgId}/runs`, { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_TALLYFY_TOKEN', 'X-Tallyfy-Client': 'APIClient', 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({ checklist_id: checklistId, name: `Onboarding - ${employee.entityId}`, prerun: { 'a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6': employee.id, // Employee ID '3c9d1e7fa4b820516d8e2f7a9c0b4d15': `${employee.firstName} ${employee.lastName}`, // Full name '9f2b7c1e4a6d8035b1c7e9d2f4a6b801': employee.email, // Email '6e4a2c80f19b3d75e0a8c246b93f157d': employee.subsidiary.name, // Subsidiary '2d7f9a1c5e3b806478d0a2c4e6f81b39': employee.department.name, // Department '5b8c0e2a7f4d1936a8e0c5b3d7f92146': employee.location.name, // Location '0a3e6b9d2c8f5174e9b2d6a0c4f83b57': employee.supervisor.name // Supervisor } }) } );
return run.json();};The prerun object is keyed by each kick-off field’s timeline ID, a 32-character hex string. You’ll find it as the id on each entry of the prerun array returned by GET /organizations/{org_id}/checklists/{checklist_id}. Don’t use the alias sitting next to it - alias keys never match, and Tallyfy drops unmatched keys silently, so the process launches successfully with that field left blank.
Each prerun value’s shape depends on the field type. The per-type list lives on Launch process.
SuiteScript integration
Section titled “SuiteScript integration”You can also build native NetSuite scripts that fire on record events. Here’s a SuiteScript example that 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}/runs`, headers: { 'Authorization': 'Bearer YOUR_TALLYFY_TOKEN', 'X-Tallyfy-Client': 'APIClient', 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({ checklist_id: checklistId, name: `Onboarding - ${employee.getValue('entityid')}`, prerun: { 'a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6': employee.id, // Employee ID '3c9d1e7fa4b820516d8e2f7a9c0b4d15': employee.getValue('entityid') // Employee number } }) }); } }
return { afterSubmit: afterSubmit };});Data mapping
Section titled “Data mapping”Common NetSuite fields you’ll want to map to Tallyfy kick-off form fields. The Tallyfy column names the field you’re aiming at - in the API payload you address it by its timeline ID, not by this name.
| NetSuite field | Tallyfy kick-off 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 |
iPaaS alternatives
Section titled “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
Related articles
Section titled “Related articles”Paylocity > Paylocity technical integration
Bamboohr > BambooHR technical integration
Footnotes
Section titled “Footnotes”-
In Tallyfy’s API, templates are called “checklists” and running instances are called “runs” ↩
Was this helpful?
- 2026 Tallyfy, Inc.
- Privacy Policy
- Terms of Use
- Report Issue
- Trademarks