SFTP

Use GrowthLoop audiences for file exports to SFTP.

Connect this destination to export audience membership as a delimited or JSON file, for use on your SFTP server.

This destination writes to your SFTP server and is a good fit when you want to:

  • Drop files on a server you control rather than a paid-media or messaging API
  • Match contacts on a unique identifier
  • Write delimited or JSON files, with optional encryption

This maps to GrowthLoop Audiences and Journeys:

Use it forAudiencesJourneys
Dropping audience files on an SFTP server✓✓

If a platform provisioned its own drop location, use that destination instead: Azure Blob Storage, LiveRamp SFTP, or Attentive. For object storage without SFTP, use Amazon S3 or Google Cloud Storage.

Prerequisites

Make sure you have:

  • An SFTP server. This destination uses SFTP, typically on port 22. It does not use FTP.
  • A username and password, or an SSH private key. If you use a key, have the SSH Key Algorithm (RSA/GPG, ED25519, or ECDSA) and the key password if the key is protected.
  • The host, port, and upload folder GrowthLoop should write to.
  • An encryption key if you will encrypt files: an AES256 passphrase, or an RSA/GPG public key.

Set up SFTP as a destination

  1. In GrowthLoop, click the Destinations tab on the left sidebar.
  2. Click New Destination in the top right corner.
  3. Search for SFTP and click Add SFTP.
  4. Enter the required information, then click Create.
📘

Note

Choose either Username and Password, or an SSH Key. Do not leave both blank.

Destination details

FieldDescription
Destination NameName this destination in GrowthLoop. Use a name so your team recognizes its purpose, like "SFTP Export".
Sync FrequencySet the default export frequency (for example, daily or weekly). You can override this setting for individual exports.

Credentials

FieldDescription
UsernameSFTP username.
PasswordPassword for that username. Leave this blank if you authenticate with an SSH key.
SSH KeyPrivate SSH key. Leave this blank if you authenticate with a password.
SSH Key PasswordPassword for the private key, if the key is protected.
SSH Key AlgorithmRequired when you use an SSH key. Choose RSA/GPG, ED25519, or ECDSA.

Upload Settings

FieldDescription
HostSFTP hostname or IP address.
PortSFTP port. This is typically 22.
Upload FolderDirectory GrowthLoop should write files to. GrowthLoop creates the folder if it does not exist.

File Format

FieldDescription
FormatDelimited or JSON.
DelimiterCharacter that separates fields in a delimited file. Defaults to ,. This applies to delimited files.
File ExtensionExtension GrowthLoop appends to the filename. Defaults to csv.
Encryption AlgorithmAES256, RSA/GPG, or None.
Encryption KeyAES256 passphrase, or the RSA/GPG public key. Required when you encrypt files.
Prefix for Personalization FieldsOptional. Prefix GrowthLoop adds to personalization field names. Defaults to fw. Leave this blank for no prefix. If you set one, it must start with a letter and use up to 5 letters or numbers.
Columns to ExportOptional. Comma-separated warehouse column names. If you leave this blank, GrowthLoop exports all columns.
Exclude Internal FieldsOptional. Omits GrowthLoop-generated fields from the file.
Exclude HeadersOptional. Writes delimited files without a header row. This applies to delimited files.

GrowthLoop validates the connection and the encryption key when you use encryption. SFTP then appears in your list of connected destinations.

Export to SFTP

From within GrowthLoop, export from an audience or from a journey Destination Node. See Export an audience or Build a journey if you need more information on these steps.

After building or selecting an audience, click Export, then search for SFTP. In a journey, add a Destination Node under SFTP and select SFTP.

Journey Destination Node with export name, match fields, and personalization signals

Map identifiers

On an audience or in a journey Destination Node, map Unique Identifier. This destination requires a unique identifier for each row.

You can also map additional fields, including custom attributes from the audience or from the journey.

Configure the export

This is where you set the campaign type and schedule for audience exports. On a journey Destination Node, you set timing on the journey canvas.

SettingAudience exportJourney Destination Node
Export NameDefaults to the audience name. GrowthLoop uses this in the filename.Required. Enter a name so you can find the export in GrowthLoop and in the filename.
Campaign typeChoose a one-time or ongoing export.The journey schedule controls when the journey runs and files are sent to SFTP.
Export Inclusion CriteriaAll audience members for a full refresh, or Newly added audience members for additions and removals since the last export.The journey sends contacts who reach this node.
ScheduleSet frequency, start date, end date, and days of the week for ongoing exports.Users reach this node when the journey runs. Add a Delay Node or set Criteria Evaluation to control timing.
Personalization FieldsExtra columns for this export. By default, GrowthLoop sends the destination Columns to Export.Extra columns for this export.

Export behavior

This is what GrowthLoop writes when you export an audience.

BehaviorWhat happens
What GrowthLoop writesA file over SFTP into the Upload Folder. Direction is GrowthLoop → your SFTP server.
When it runsGrowthLoop sends the export as a batch on the next successful run. An export that starts Now runs within about 15 minutes. Journeys send exports on demand when users reach the Destination Node.
Match fieldUnique Identifier is required.
File formatDelimited or JSON, using the File Extension you set.
Filename{export name}-{timestamp}.{file extension}, with the export name slugified.
EncryptionGrowthLoop encrypts the file contents when you select AES256 or RSA/GPG. The filename stays the same.
Columns to ExportIf you set this on the destination, GrowthLoop limits the file to those columns unless you add personalization fields.
One-time exportsGrowthLoop uploads current membership once.
Ongoing exportsEach run uploads a new timestamped file.
DeletesGrowthLoop does not delete files on the server.

Confirm the export was successful

When the run finishes, confirm you can use the data on your SFTP server.

  • Audience export: Open the Upload Folder and look up the latest {export name}-{timestamp}.{file extension}.
  • Journey Destination Node: Open the Upload Folder and look up the file named after the export.

In GrowthLoop, review counts on the audience Exports tab, or open the Activity tab on the journey Destination Node. See Export an audience or Monitor a journey for more information.

Congrats on successfully exporting to SFTP!

Troubleshooting

These are the issues we see most often. You can always email us at [email protected] for help.

ProblemCauseResolution
Connection fails to validateHost, Port, or authentication is wrongConfirm the SFTP host and port (typically 22). Use a username and password, or an SSH key plus SSH Key Algorithm
Authentication failsBoth password and SSH key are blank, or the key is missing an algorithmEnter one auth method. When you use a key, select RSA/GPG, ED25519, or ECDSA
The export cannot write the fileThe user cannot write to Upload FolderGrant write access to that folder, or choose a folder the user can write to
You cannot find the fileYou opened a different folder than Upload FolderOpen the folder you entered during destination setup
The filename does not match the audience nameGrowthLoop slugifies Export Name and appends a timestampSearch the folder for the slugified export name
Encryption fails to validateThe Encryption Key does not match Encryption AlgorithmUse an AES256 passphrase for AES256, or an RSA/GPG public key for RSA/GPG
The file looks unreadableYou selected AES256 or RSA/GPGDecrypt the file with the matching key. The filename does not change when GrowthLoop encrypts the contents
Expected columns are missingColumns to Export or Personalization Fields omit those columnsAdd the columns on the destination or on the export
Rows fail to exportUnique Identifier is not mappedMap Unique Identifier

What’s Next

Export an audience after you connect a destination

Did this page help you?