Published on May 31, 2022.
I'm happy to announce the release of SuiteTransmit, an application designed specifically for NetSuite developers. SuiteTransmit monitors files that a developer is working on, and when a file is changed, it is automatically uploaded to the File Cabinet. With SuiteTransmit, a developer can use any IDE or text editor that they prefer, and quickly and easily see the results of the work that they're doing.
I first wrote about this app back in September of 2021. At the time, I was calling the app "SuiteScript Sync." The name change reflects my realization that the app isn't really "syncing" files as much as it is transmitting them, and that it can be used to transmit much more than just SuiteScript files.
SuiteTransmit was developed using Xojo, a cross-platform application development tool. You can use it to develop desktop apps (for macOS, Windows, Linux), mobile apps (currently only for iOS, but Anrdoid support is on the way), Web apps, and console apps. You can even use it to develop apps that run on the Raspberry Pi.
Here's a short demo of SuiteTransmit.
Click the image to view a larger version.
SuiteTransmit is available free of charge, and I'm providing both the Xojo source code and NetSuite RESTlet under an MIT License.
Please note that I am only providing SuiteTransmit's source code. I am not providing compiled, executable files.
I have several reasons for distributing it this way, but my primary motivation is that I want to encourage NetSuite developers who aren't familiar with Xojo to give it a try and see what it is capable of. If you've never used a rapid application development (RAD) / low-code tool before, or used one that has the ability to create cross-platform solutions, then I think you're in for a pleasant surprise.
To use the source code, you'll need to download and install Xojo, open the source code file, and run the app in debug mode. You can run the app in debug mode for as long as you'd like, and at no charge. If you'd like to build (compile) the app and run it as an executable, then you'll need to purchase a license. As of this post, Xojo Lite licenses are available for $149 USD.
At the end of this post, I've included instructions on how you can download, install, configure, and run SuiteTransmit.
I'll do my best to provide support for SuiteTransmit. However, my responses might take awhile - and depending on how busy I am, I might not be able to reply at all. Thanks for understanding.
If you do need assistance, I encourage you to post your NetSuite-related questions to one of the online forums, such as the NetSuite Professionals Slack team. If you have questions about Xojo, then please post them to the Xojo Programming Forum.
First and most importantly, be careful when using SuiteTransmit. Remember that it will replace the contents of an existing file in the File Cabinet, and as far as I know, there's no way to recover a previous version.
I recommend that as you're getting familiar with SuiteTransmit, use it only to transmit files to a sandbox or test drive account. Then, when you're comfortable with it, try using it to transmit files in your production account.
SuiteTransmit has been a game-changer for me. It has made my SuiteScript development work much more efficient, and therefore much faster - and best of all, I get to use my favorite text editor (BBEdit). I hope that by sharing the app, other NetSuite developers will find it to be equally helpful.
To download SuiteTransmit, click here.
This is a compressed (zip) file that contains:
• A NetSuite RESTlet ( suitetransmit.restlet.js ).
• A Xojo project file (suitetransmit.xojo_binary_project).
• A sample configuration file (suitetransmit-sample-config.json.txt).
SuiteTransmit consists of two components: a NetSuite RESTlet that serves as an API to the app, and the app itself.
I'm going to assume that you know how to install a RESTlet. However, if you need detailed instructions on how to install one, please refer to the installation instructions for the SuiteQL Query API.
SuiteTransmit uses Token-based Authentication, and not OAuth 2.0. When creating an Access Token for the app, the role that is associated with token needs to have the following permissions:
• Lists > Documents and Files (Full)
• Setup > Allow JS / HTML Uploads (Full)
• Setup > Log in using Access Tokens (Full)
In order to use SuiteTransmit, you need to tell it about the NetSuite account that you want to use, the credentials that it should use in order to call the RESTlet, the files that you'd like it to monitor, and the folder that you'd like files uploaded to.
To keep things simple, I recommend placing the configuration file in the same directory that the files you want to work with are located.
A sample configuration file is included in the zip file, and here's what file looks like.
{ "configurationName": "SuiteTransmit Sample Project", "accountNumber": "TSTDRV9999999", "restletsSubdomain": "tstdrv9999999.restlets.api.netsuite.com", "syncScriptID": 999, "syncScriptDeploymentID": 1, "consumerKey": "*** YOUR CONSUMER KEY ***", "consumerSecret": "*** YOUR CONSUMER SECRET ***", "tokenID": "*** YOUR TOKEN ID ***", "tokenSecret": "*** YOUR TOKEN SECRET ***", "folderID": 999999, "files": [ "testScript1.js", "testScript2.js" ], "backgroundColorSuccess": "&h0074DF00", "backgroundColorFailure": "&h00FF0040", "beepOnSuccess": true, "beepOnFailure": false }
Here's information about the settings that the file contains,.
configurationName
A descriptive name for the project that you are using SuiteTransmit for.
This name is displayed when you load a configuration file.
accountNumber
The account number for the NetSuite instance that you want to transmit files to.
Note that if you are using a Test Drive or Release Preview account, then
the character prefix should be in all caps.
restletsSubdomain
The subdomain on which your account's RESTlet's are being served.
This is usually the account number (in lower case), followed by: restlets.api.netsuite.com
For example, for account TSTDRV9999999, the subdomain is most likely: tstdrv9999999.restlets.api.netsuite.com
To determine your account's RESTlet subdomain, in NetSuite, navigate to: Setup > Company > Company Information. Then click on the "Company URLs" tab.
syncScriptID
This is the numeric ID that NetSuite assigned to the RESTlet.
To determine the ID, navigate to: Customization >: Scripting > Scripts.
Locate the RESTlet in the list of scripts, and the script's ID is displayed in the Internal ID column.
syncScriptDeploymentID
This is the numeric ID that NetSuite assigned to the RESTlet's deployment record.
To determine the ID, navigate to: Customization >: Scripting > Script Deployments.
Locate the deployment in the list, and its ID is displayed in the Internal ID column.
consumerKey, consumerSecret
These values were assigned by NetSuite when you created the Integration Record.
tokenID, tokenSecret
These values were assigned by NetSuite when you created the Access Token.
folderID
This is the numeric ID of the File Cabinet folder that you want files to be uploaded to.
In most cases, the default ID for an account's SuiteScripts folder is -15.
I highly recommened that you store project files in subfolders of the SuiteScripts folder.
To find the ID of a folder, navigate to the File Cabinet,
and a folder's ID is displayed in the Internal ID column.
files
This is an array of files that you'd like SuiteTransmit to monitor and transmit to the File Cabinet when changes are detected.
backgroundColorSuccess
This is the background color that you'd like the SuiteTransmit window changed to in cases when a file has been successfully transmitted. Note the "&h00" prefix for the hex color.
backgroundColorFailure
This is the background color that you'd like the SuiteTransmit window changed to in cases when a file has failed to be transmitted. Note the "&h00" prefix for the hex color.
beepOnSuccess
A boolean value that indicates if you'd like the app to "beep" in cases when a file has been successfully transmitted.
beepOnFailure
A boolean value that indicates if you'd like the app to "beep" in cases when a file has been failed to be transmitted.
As mentioned in the blog post above, in order to run SuiteTransmit, you'll need to download Xojo and, assuming that you don't have a Xojo license, run the app in debug mode.
To run the app in debug mode, first download and install Xojo. Then double-click the Xojo project file (suitetransmit.xojo_binary_project), which should open in the Xojo IDE. And finally, click Run in the Xojo toolbar.
When the app loads, click the "Load Configuration File" button, navigate to the configuration file that you created above, and select it. If everything is working properly, a list of the files that SuiteTransmit is monitoring will be displayed in the transcript area. And finally, using your favorite IDE or text editor, change one of those files. You should see that the file is uploaded to File Cabinet.
Screen shots of the app are included below.
Hello, I’m Tim Dietrich. I design and build custom software for businesses running on NetSuite — from mobile apps and Web portals to Web APIs and integrations.
I’ve created several widely used open-source solutions for the NetSuite community, including the SuiteQL Query Tool and SuiteAPI, which help developers and businesses get more out of their systems.
I’m also the founder of SuiteStep, a NetSuite development studio focused on pushing the boundaries of what’s possible on the platform. Through SuiteStep, I deliver custom software and AI-driven solutions that make NetSuite more powerful, accessible, and future-ready.
Copyright © 2025 Tim Dietrich.