Loading...

Secure file transfer between Salesforce and external systems like SFTP servers can be tricky without native support. But with a lightweight Node.js middleware, you can easily bridge that gap. In this blog, we’ll walk you through how to upload files from Salesforce to an SFTP server using Node.js, Apex, and the ssh2-sftp-client library.

This tutorial provides a production-ready way to perform smooth file migration from the Salesforce ecosystem, whether you’re moving contracts, reports, or large attachments.

Prerequisites

Before we begin, make sure you have:

  • Salesforce Org with access to Apex
  • Node.js (v14+)
  • Access to an SFTP server (host, username, private key or password)
  • ngrok or any tunnelling service (for development)
  • Basic knowledge of Apex and Node.js

Below is the step-by-step guide for Uploading Files from Salesforce to SFTP using Node.js Middleware.

Step 1: Set Up Node.js Middleware

1.1 Initialize Node Project

1.2 Create index.js

Create a file called index.js and paste the following:

Step 2: Run the Node.js Server

Run your middleware locally:

node index.js

Output:

Server is running on http://localhost:3000

Now your local server is ready to accept requests.

Step 3: Expose Server with ngrok

In another terminal:

ngrok http 3000

Copy the HTTPS URL (e.g., https://42ab-49-3.ngrok-free.app) — you’ll use this in Apex as the endpoint.

Step 4: Salesforce Configuration

4.1 Create Custom Labels

Create the following Custom Labels in Salesforce:





SFTP Configuration Table


Label Name Example Value
sftpHost your.sftp.server.com
sftpUsername yourSFTPUser
sftpPassword yourPassword
sftpPort yourPort
LocationToUploadFile /upload/path


4.2 Add Remote Site Setting

Go to Setup → Remote Site Settings in Salesforce and add:

  • Remote Site Name: SFTPMiddleware
  • Remote Site URL: https://42ab-49-3.ngrok-free.app (replace with your ngrok URL)

Step 5: Apex Code to Upload File

5.1 Apex Class: UploadReportOnSFTPServer

Step 6: Test in Anonymous Window

Paste this in Developer Console → Execute Anonymous:

apex CopyEdit

Note: Check the SFTP server for the uploaded file.

Check out the demo video:

https://www.youtube.com/watch?v=6JbfSV-Pmww&feature=youtu.be

Security Recommendations

  • Use private key authentication instead of passwords.
  • Add token-based validation to the middleware.
  • Secure middleware with HTTPS and CORS settings.
  • Add file type & size validation in both Node.js and Apex.

Optional Enhancements

To take this even further, consider adding:

  • Add logging via winston or pino
  • Support multiple file uploads
  • Add retry logic and error notifications
  • Dockerize the Node.js app

Conclusion

You can now safely transfer files from Salesforce to any SFTP server using this middleware technique. This approach transfers heavy file handling to Node.js while maintaining the clarity of your Salesforce logic. It is adaptable, scalable, and designed to be production-ready.

Also, you can check the blog on how to perform Salesforce CRUD operations in Node.js with jsForce and Composite API.


Related Articles

Sticky notes aren’t just for your desk anymore! In this tutorial, we’ll create a Lightning Web Component (LWC) in Salesforce that allows you to pin notes on your app page or record page. With a clean, interactive UI, these digital sticky notes ensure you never forget important tasks or details. What Will You Learn? By […]

Read More
How to Create Dynamic, Animated Charts in Salesforce LWC using Chart.js

Bring Salesforce data to life with dynamic charts inside Lightning pages! While Salesforce dashboards are powerful, sometimes business users want visual insights without leaving their current page. That’s where Chart.js with Lightning Web Components (LWC) becomes a game-changer. In this step-by-step guide, you’ll learn how to: Upload Chart.js as a static resource in Salesforce. Build […]

Read More
How to Encrypt and Decrypt Data in Salesforce Using Apex Crypto Class

Data security is more important than ever. Whether you’re storing customer information, sensitive business data, or private communication, ensuring that your data stays safe is critical. Salesforce provides built-in tools to help with this, and one of the most powerful yet easy-to-use approaches is encryption and decryption using the Apex Crypto class. In this blog, […]

Read More
Benefits & Step-by-Step Setup Guide for Salesforce Code Analyzer

When building on the Salesforce platform, code quality and security are non-negotiable, especially before submitting your app for a Salesforce Security Review. Catching bugs and vulnerabilities early not only saves time but also ensures compliance with Salesforce’s best practices. That’s where the Salesforce Code Analyzer comes in. This open-source tool scans your Apex classes, triggers, […]

Read More
A Step-by-Step Guide to Integrate Zoho CRM with Salesforce (Without Coding)

Managing data across multiple CRMs can be a real challenge for businesses that want a single source of truth. If your teams use Zoho CRM but want to move or sync all records seamlessly into Salesforce, you don’t need to write a single line of code. Thanks to MultiSync Made Easy, the integration process is […]

Read More
How to Integrate Salesforce with Copilot

Integrating Salesforce with Copilot is becoming an essential step for organizations aiming to streamline workflows, automate client data management, and unlock the power of AI-driven CRM. By connecting these two platforms, businesses can centralize customer information, reduce manual tasks, and accelerate growth. This guide walks you through the Salesforce–Copilot integration process with clear steps, Apex […]

Read More