Skip to Content

SFTP

Upload files to a remote server via SFTP in CSV or JSONL format. Use Zeotap to export data to legacy systems, partner drop zones, or any server accessible over SSH.

Prerequisites

  • An SFTP server accessible over SSH (port 22 by default)
  • A user account with write access to the target directory
  • Either a password or SSH private key for authentication

Authentication

SFTP supports two authentication methods:

Password

  1. Enter the SFTP Username and Password in Zeotap

SSH Key

  1. Enter the SFTP Username in Zeotap
  2. Paste the Private Key in PEM format (begins with -----BEGIN OPENSSH PRIVATE KEY-----). If the key is encrypted, also enter the Private Key Passphrase

Configuration

FieldTypeRequiredDescription
HostTextYesSFTP server hostname or IP address (e.g., sftp.example.com)
PortNumberNoSFTP server port. Default: 22. Valid range: 1—65535

Target Settings

FieldTypeRequiredDescription
Remote DirectoryTextYesThe directory on the SFTP server to upload files to (e.g., /data/imports)
File FormatSelectYesOutput file format: CSV or JSONL (Newline Delimited JSON). Default: CSV

Supported Operations

Sync Modes: Insert, Snapshot

Audience Sync Modes: Add, Snapshot

Features

  • Field Mapping: No — SFTP writes all mapped fields as file columns
  • Schema Introspection: No — SFTP is a file-based destination without schema discovery

How It Works

Zeotap uploads data files to the remote SFTP server:

  1. Data is serialized into the selected format (CSV or JSONL)
  2. An SSH connection is established to the SFTP server
  3. Files are uploaded to {remote_directory}/{YYYY-MM-DD}/{batch_id}.{ext}
  4. The SSH connection is closed after upload completes

Sync mode semantics

  • Insert writes the full current dataset as new files on every run — each sync appends new files to the remote directory.
  • Add (audience syncs) writes only new and updated audience members. Members who left the audience since the previous run are excluded from the files.
  • Snapshot writes the complete current dataset as new files on every run and never diffs. There is no _operation column (the files are the whole dataset) and unchanged rows are included every time. Records that left are simply absent from the next drop rather than delivered tagged removed, so treat each run’s output as authoritative and replace your prior copy rather than merging into it. Unlike Insert, snapshot is guaranteed to read the full model output on every warehouse: it never adopts native change tracking (Snowflake streams, Databricks CDF), which can only surface deltas.

Troubleshooting

Connection refused

Verify the host and port are correct. Ensure the SFTP server is running and accepting connections. Check that firewalls allow inbound SSH traffic on the configured port.

Authentication failed

For password authentication, verify the username and password. For SSH key authentication, ensure the private key matches a public key in the server’s authorized_keys file. The key must be in PEM format.

Permission denied on remote directory

The SFTP user must have write permissions on the target remote directory. Contact the server administrator to grant access.

SFTP subsystem unavailable

The SSH server must have the SFTP subsystem enabled. This is typically configured in the server’s sshd_config file with the Subsystem sftp directive.

Host key verification

Zeotap does not verify host keys by default. If you require host key verification, contact support to configure known hosts.

Last updated on