Skip to main content

Connect Cademy to NetSuite

Prepare a NetSuite role, credentials and token, connect the app, map contact, course date and certificate fields, and fix sync errors.

Written by Artur Binzaru

Use this guide if you manage a Cademy course provider account and want to send its contacts, course dates and certificates to NetSuite. Your NetSuite administrator prepares NetSuite first; then you connect the app and map fields in Cademy. If a sync failed, see Fix NetSuite Sync Problems and Errors.

​

A record is one saved item, such as a contact. A field is one detail on it, such as an email address. A connection links Cademy to one NetSuite account. A module is a group of records. A field mapping matches a Cademy field to a NetSuite field.

​


​

What Cademy Sends to NetSuite: Contacts, Course Dates and Certificates

Data goes one way, from Cademy to NetSuite; changes made in NetSuite do not come back.

  • Contacts: when a contact is created or updated.

  • Occurrences (course dates): when a date is created or updated. Each session in a block (several sessions booked together) is sent as its own course date; the block itself is not sent.

  • Certificates: mapped certificate details when a certificate is issued or issued again, as a NetSuite record, not the PDF.

Existing records are not imported (no bulk historical sync). Editing an organisation, course, Registration or Order does not send an update by itself. Merging organisations, Automatically link contacts to organisations by domain, restoring a deleted course and adding a Zoom account to a course that had none do send the affected contacts or dates.

​

Does Cademy Sync Invoices and Payments to NetSuite?

No. Cademy does not sync invoices, payments or Orders to NetSuite. The only modules are Contacts, Occurrences and Certificates. Order fields used in a certificate mapping fill in that certificate record only.

​


​

Who Can Connect NetSuite and Which Plan Includes It

You need the System Admin role, because only System Admins see Apps (if it is hidden, look under More). Enterprise plans include the NetSuite app by default; Free, Starter, Pro and Teams plans do not, and Install cannot be selected.

​

Agree these details with your NetSuite administrator:

  • Which account to use: live or a sandbox (a separate test account).

  • Which record types will hold contacts, course dates and certificates. Custom record types must already exist; Cademy does not create them.

  • Which fields are required, and which link to a NetSuite list by its internal ID (NetSuite’s number for an item).

The connection uses token-based authentication (TBA): integration and access-token credentials, not a NetSuite password. Oracle says no new TBA integrations can be created from NetSuite 2027.1; existing ones keep working. See Oracle's TBA guidance.

​


​

Prepare NetSuite for the Cademy Connection (NetSuite Administrator)

Your NetSuite administrator completes these seven steps in the account you will connect.

​

1. Enable REST Web Services and Token-Based Authentication in NetSuite

  1. Open Setup > Company > Setup Tasks > Enable Features.

  2. On SuiteCloud, under SuiteTalk (Web Services), enable REST Web Services, and enable Token-based Authentication.

  3. On Analytics, enable SuiteAnalytics Workbook.

  4. Accept any NetSuite terms, then select Save.

Installing the Cademy app does not turn these on. See Oracle’s REST prerequisites.

​

2. Create the Cademy Integration Role in NetSuite

Use a role only for this connection, such as “Cademy Sync”. To edit it, open Setup > Users/Roles > Manage Roles and select Edit beside it. For a new role, open Setup > Users/Roles > Manage Roles > New, enter a Name and choose the Center Type for your integration user. Add the permissions in step 3 before saving. See Oracle’s role guide.

​

3. NetSuite Permissions the Cademy Role Needs

On the role, add each permission with Add, then select Save:

  • Permissions > Setup: REST Web Services and Log in using Access Tokens, both at Full.

  • Permissions > Reports: SuiteAnalytics Workbook at Edit.

  • Permissions > Lists: Contacts at Edit.

  • Access to every other record and list your mappings use, within the role’s account restrictions such as subsidiaries.

The connection test does not check these. For each custom record type, open Customization > Lists, Records, & Fields > Record Types. If Access Type is Use Permission List, add the Cademy role at Edit under Permissions and Save; check Restrict does not block updates. If it is Require Custom Record Entries Permission, grant access on the role under Permissions > Lists. See Oracle’s permission models.

​

4. Assign the Cademy Role to a NetSuite User

  1. Open Lists > Employees > Employees and select Edit beside an active user approved for this connection.

  2. On Access, check that Give Access is enabled.

  3. Under Roles, select the Cademy role, then Add and Save.

Whoever creates the token in step 6 needs Access Token Management, which the integration user does not need.

​

5. Create the NetSuite Integration Record (Consumer Key and Secret)

  1. Open Setup > Integration > Manage Integrations > New, enter a Name such as “Cademy” and keep State as Enabled.

  2. On Authentication, tick Token-based Authentication (TBA) and leave TBA: Authorization Flow clear. No Callback URL is needed.

  3. Select Save and store the Consumer Key and Consumer Secret securely. NetSuite shows them only once, and resetting them stops the old keys working.

​

6. Create the NetSuite Access Token (Token ID and Secret)

  1. Open Setup > Users/Roles > User Management > Access Tokens and select New Access Token.

  2. Choose the Cademy integration in Application Name, the integration user in User and the Cademy role in Role, enter a Token Name and select Save.

  3. Store the Token ID and Token Secret securely. If you lose them, create a new token.

Never send credentials by email or in screenshots. See Oracle’s token guide.

​

7. Find Your NetSuite Account ID (Also Used as the Realm)

Open Setup > Company > Company Information and copy Account ID. Use it for both Account ID and Realm in Cademy. Keep a sandbox suffix with its underscore and capitals, such as the fictional 1234567_SB1. Sandbox tokens must be created in that sandbox, and a sandbox refresh needs new tokens.

​


​

Connect the NetSuite App in Cademy

  1. In the Cademy admin dashboard, open Apps, select NetSuite, then Install. If it is installed already, open NetSuite to see its connections.

  2. Select + Add Connection (or Connect your first NetSuite account).

  3. In Credentials, enter Account Name (optional, for example “Production NetSuite”), Account ID and Realm from step 7, Consumer Key and Consumer Secret from step 5, and Token ID and Token Secret from step 6.

  4. Select Test & continue. A successful test shows a tick and NetSuite connection succeeded.

  5. Select Save connection, then Finish. The connection shows Ready.

The Add NetSuite connection window on its Credentials step, over the NetSuite connections page: Account Name with Production NetSuite, Account ID and Realm with a made-up account number, Consumer Key, Consumer Secret, Token ID and Token Secret empty, Advanced closed, and the buttons Back and Test & continue; the three steps, with 1 Credentials current, are outlined.

Under Advanced, keep Signature Method as HMAC-SHA256; Oracle no longer supports HMAC-SHA1. Leave REST Base URL and Metadata URL blank unless your NetSuite administrator supplies them.

​

The test only checks that Cademy can read NetSuite’s Contact fields, not every permission.

​

Connect More Than One NetSuite Account

You can connect more than one NetSuite account, for example a live account and a sandbox. Select + Add Connection and set up mappings for each. Contacts, course dates and certificates are sent to every Ready connection with that module enabled; a “default sync target” message does not limit this.

​


​

Map Cademy Fields to NetSuite Fields (Field Mappings)

Select Apps, NetSuite, your connection card, then Mappings. Contacts starts with its switch on, but Enabled beside Not set up does not mean anything is syncing yet.

​

The Mappings tab of the Production NetSuite connection before any module is saved: Modules with the three cards Contacts (Enabled, Not set up), Occurrences (Disabled, Not set up) and Certificates (Disabled, Not set up); the selected Mappings tab and the words of the Contacts card, with Enabled and Not set up, are outlined.

Important: Saving Contacts with its switch on and a destination selected starts sending new and changed contacts straight away, even with no field mappings. On a contact’s first sync, a NetSuite contact with the same email is updated instead of a new one being created. Check for matching emails in NetSuite first.

  1. Open the module and turn on Contacts Sync, Occurrences Sync or Certificates Sync.

  2. In Map to NetSuite contact, Map to NetSuite job or Map to NetSuite document, select the agreed record type. If it is not listed, select Load All NetSuite Modules.

  3. Under Field Mappings, select Add Mapping. Choose the Cademy Module and Cademy Field, then the matching NetSuite field.

  4. Repeat for every field you need, including all fields NetSuite requires.

  5. Select Save at the top and confirm the message, for example Contacts mappings saved.

The Contacts module of the Production NetSuite connection: Contacts Sync switched on, Map to NetSuite contact showing Contact (contact), Field Mappings with Add Mapping and five rows under Cademy Module, Cademy Field and NetSuite contact Field, one of them with a Map values (4) button, and Save at the top; the Add Mapping and Save buttons are outlined.

The first destination choices are Contact (contact), Training Class (customrecord_training_class) and Certificate (customrecord_cert_track). The last two are suggested custom types that Cademy does not create. For example, to send email addresses, map Contacts and Email to the NetSuite field with ID email.

​

Contacts can also use Organisation fields, Occurrences can use Course fields, and Certificates can use contact, course, course date, Registration (the person’s place) and Order fields. Each Cademy field can be used once per module. Checkbox and multi-select fields are not sent. For Contacts, Cademy fills email and names when no mapping sets them. Occurrences and Certificates need at least one mapping; Cademy fills their External ID (such as cademy_occurrence_…) so later syncs update the same record.

​

Match Cademy Dropdown Values to NetSuite List Items (Map Values)

When a Cademy custom dropdown or radio field fills a NetSuite field that links to a list, NetSuite needs each option’s internal ID, not just a matching name.

  1. In the mapping row, select Map values.

  2. For each Cademy value, choose the matching NetSuite option. Add from NetSuite copies NetSuite’s choices in as Cademy values.

  3. Select Save changes, then Save on the module page.

The Map values for Training Location window over the Contacts module: Cademy field Nearest training centre, NetSuite list location with 8 options, the buttons Add Cademy Value and Add from NetSuite (8), 4 of 6 mapped, the filters All, Mapped and Unmapped, six Cademy values of which four are paired with a NetSuite option and its internal ID and two still say pick option, and the buttons Cancel and Save changes; the two Add buttons together and Save changes are outlined.

For example, the fictional value “Edinburgh” can map to the NetSuite location “Edinburgh Office”, internal ID 42. Map every choice you use: an unmatched choice is sent as its own text, which NetSuite can reject. Save changes also changes that Cademy field’s options everywhere in Cademy.

​

If the NetSuite list is not identified, choose it in Pick a NetSuite list… or use Can't find it? Enter a custom list ID with the list ID from Customization > Lists, Records, & Fields > Lists. A loaded list is kept for five minutes. The NetSuite Contact ID and NetSuite Training Class ID fields already hold IDs; use them only in Certificates mappings. Map values is not available for text fields, system dropdowns or multi-select fields.

​

See the Values a NetSuite Field Accepts (Preview List)

If a mapping row shows Preview List, select it to see the Picklist Values NetSuite accepts, and use one of them in Cademy. If none are listed, ask your NetSuite administrator.

​

How Addresses and Dates Are Sent to NetSuite

A Cademy address field is split into parts, such as “Office address: City”, from Address Line 1 to Country. Map each part to the matching NetSuite address field.

​

Dates are sent without the time, worked out in UTC, so a session starting at 00:30 British Summer Time is sent as the previous day.

​

Create a New Cademy Field While Mapping to NetSuite

For Contacts, Organisations, Courses and Occurrences, open Cademy Field in the mapping row and select Create new field…. Choose a single-value type, enter a Label (and Items for a dropdown), select Create Field, then map it and select Save. The field is created in Cademy straight away and is empty on existing records.

​


​

Test the First Contact and Course Date Sync to NetSuite

Test with records set aside for testing: they go to every Ready connection with that module enabled.

  1. Open Contacts, select New Contact (or Add Contact) and create a test contact, such as the fictional “Fiona Campbell”, with an email you control that NetSuite does not already have.

  2. In your NetSuite connection, open Sync Activity. Reload until the contact shows Synced, and note the NetSuite internal ID after NS:.

  3. Check the contact in NetSuite under Lists > Relationships > Contacts.

  4. For course dates, open Courses, choose the Dates layout, open an individual date’s (not a Block row’s) More actions menu, select Edit Date, change a mapped field and Save. This needs Course Owner access or higher.

  5. Check the Occurrence in Sync Activity, then in NetSuite.

Saving without a change sends nothing, and deleting the test contact in Cademy does not remove it from NetSuite. Fix any Failed row before certificates; see Check NetSuite Sync Results.

​

Send Certificates to NetSuite With Links to the Contact and Course Date

  1. Set up Contacts and, if needed, Occurrences on the same connection, and check they show Synced.

  2. In Mappings, open Certificates, enable Certificates Sync and select the certificate record type.

  3. Map Issued date, Expiry date and other required values. To link the person, map Contacts and NetSuite Contact ID; to link the course date, map Occurrences and NetSuite Training Class ID.

  4. Select Save before issuing the certificates.

Keep Contacts and Occurrences enabled, because the IDs come from them. A missing ID, or a certificate linked to a block, leaves the link out: a required link then fails, an optional one stays blank even when the row says Synced. If Last error says Contact no longer exists in Cademy. or Course no longer exists in Cademy., the mapped record was deleted. To issue certificates, see Set Up Automatic Certificates for a Course.

​


​

Check NetSuite Sync Results and Retry Failed Syncs

In Apps, NetSuite, select the connection card, then Sync Activity. Each row shows Status, Object (with the NetSuite internal ID after NS:), Last attempted and Last error; hover over a shortened error to read it all. Filter with All Statuses, Synced, Failed or Needs reconnect.

​

The Sync Activity tab of the Production NetSuite connection: the All Statuses filter and eleven rows with Status, Object, Last attempted and Last error, nine Synced with an NS: number under the record name and two Failed, each Failed row with its error and a Retry button; the selected Sync Activity tab and the Failed status of the first failed row are outlined.
  • Synced: NetSuite accepted the create or update. It does not mean every field was filled in, so check the record in NetSuite.

  • Failed: fix what Last error names, then select Retry. Retry uses the current record and mapping. Reload and check for Synced; Sync record retried alone does not confirm it. A Failed row does not retry itself.

  • Needs reconnect: NetSuite refused the request as unauthorised or forbidden, from wrong keys or a missing role permission. The connection also shows Needs Reconnect and stops syncing every module. These rows have no Retry; see Replace NetSuite Credentials or Reconnect.

  • Not attempted or No sync attempts yet: nothing has been tried. Check the module is saved and enabled with a destination, and that a record changed, or a certificate was issued, after setup.

Important: Retry only while the card shows Ready. During Needs Reconnect a retry turns the row into Needs reconnect, with no Retry even after you reconnect. While Disconnected, the row stays Failed.

The page shows up to 100 recently updated records, each with its latest result only, so older failures may not appear.

​


​

Fix NetSuite Sync Problems and Errors

Read Last error first, then find the problem below.

​

The NetSuite Connection Test Fails

  • Check Account ID and Realm against Company Information, keeping a sandbox suffix such as _SB1.

  • Check both credential pairs come from the same account, user and role, with each full value in the right field.

  • Keep HMAC-SHA256 and leave the Advanced URLs blank unless your administrator supplied them.

  • In NetSuite, check the integration is Enabled, the user is active, the token is valid and the role has the step 3 permissions.

After a sandbox refresh, create new tokens. Then re-enter the credentials in Edit Connection and select Test & continue again.

​

A NetSuite Record Type, Field or List Will Not Load

Check the connection is Ready; try Load All NetSuite Modules. Ask your NetSuite administrator to check the record type is available to integrations and the role can access it and any linked list. A Cademy field missing from a row may already be used in another row; unavailable NetSuite fields cannot be mapped.

​

Cannot Save a NetSuite Mapping (Save Is Unavailable)

Save is unavailable when nothing has changed or a row is unfinished. Fill in both fields in every row, or remove the row with its bin icon. Value matches need Save changes in Map values, then Save.

​

Contact Missing in NetSuite After Sync, or a Field Is Blank

Check the right connection and that the module is saved and enabled. Records from before setup are not imported, and blocks and revoked certificates are skipped. A certificate with no course date, Registration or Order sends no values from that record. For a blank field, check the Cademy record has a value of a supported type, and that every choice is matched in Map values. Removing a mapping or emptying a value does not clear NetSuite, because empty values are not sent. For blank certificate links, see certificates; a Synced certificate gets no Retry when its mapping changes.

​

NetSuite Says Invalid Value or Required Field

Find the field in Last error. Fill in the Cademy value, map it, or ask your NetSuite administrator for a default. For a linked list, match each choice to its internal ID in Map values; for fixed choices, use a value from Preview List. Save, then Retry and check the new status.

​

NetSuite Request Limit or Temporary Error

NetSuite limits requests. Wait, select Retry on the Failed row, then check the result.

​


​

Edit, Pause or Disconnect a NetSuite Connection

Each connection card’s three-dot menu has Edit Connection and Disconnect.

​

The NetSuite connections page with + Add Connection and two connection cards: NetSuite Sandbox, Disconnected, and under it Production NetSuite, Ready, with its three-dot menu open (Edit Connection, Disconnect); the three-dot button and the whole open menu are outlined together.

​

Replace NetSuite Credentials or Reconnect (Needs Reconnect)

Use Edit Connection when a connection shows Needs Reconnect or its keys were replaced. It is the only way back to Ready and needs all four secrets again; if they were not stored, your NetSuite administrator must create new ones. If the keys are right, have the administrator check the role’s permissions for the record type in the affected row first: the test reads only Contact fields, so a missing permission elsewhere stops the connection again at the next sync.

  1. In Apps, NetSuite, open the card’s three-dot menu and select Edit Connection.

  2. Check the account details, then re-enter Consumer Key, Consumer Secret, Token ID and Token Secret. Saved secrets are not filled back in.

  3. Select Test & continue, Update connection, then Finish, and check the card says Ready.

For another NetSuite account, add a new connection. Reconnecting does not send records missed while the connection was down; new changes sync once it is Ready. There is no button to resend missed certificates; do not revoke and reissue real certificates to test.

​

Pause One NetSuite Sync Module

In Mappings, open the module, turn off its Sync switch and select Save. Records already in NetSuite stay. Turning it back on syncs new changes, not those missed while it was off.

​

Disconnect a NetSuite Account From Cademy

Select Disconnect in the card’s three-dot menu and confirm. The card shows Disconnected and syncing stops. Mappings and activity are kept, nothing is deleted in NetSuite and the token is not revoked. To reconnect, use Edit Connection.

​


​

Frequently Asked Questions

Will deleting a Cademy record remove it from NetSuite?
No. Deleting a record, or revoking a certificate, in Cademy does not change its NetSuite record. Manage those records in NetSuite.

​

Can I change the destination record type later?
Yes, but that module’s field mappings are cleared, so rebuild and save them. Existing NetSuite records remain, and a Retry on an older row still uses its original type.

Did this answer your question?