Skip to main content

Delivery Setup SFTP

Delivery Setup​

This guide explains how to configure the SFTP integration on our platform using the information provided by the customer.


1. Prerequisites​

Ensure you have the following details from the customer:

  • Host Name — SFTP server hostname/IP.
  • Username.
  • Password (received via a secure channel).
  • Base Path — remote directory to upload files to.
  • Sync Schedule — desired cron expression / frequency.
  • AddressBook Groups the customer wants exported.

Note: unlike Google Ads / Facebook Ads, there is no OAuth authorization step for SFTP — no Refresh Token / Access Token is generated. Connectivity is only validated when a sync actually runs.


2. Configure the SFTP Integration​

Steps to Configure Connection:​

  1. Log in to the Marketplace platform.
  2. Navigate to the Integrations > SFTP section.
  3. Click on Create Integration and provide a descriptive name (e.g., "SFTP Production Integration").
  4. Enter the following details provided by the customer:
    • Host Name
    • Username
    • Password
    • Base Path
  5. Save the integration to establish the connection.

Port is not a per-integration setting — the platform always connects on port 22.


3. Configure CDP Address Book Sync​

Steps to Sync Groups:​

  1. In the Marketplace platform, navigate to the Integration Details section under SFTP.
  2. Click on Manage Groups.
  3. Select the groups from the Address Book that the customer wants exported.
  4. Save the changes, then you can go back and sync the data.

If no groups are selected, the sync will fail — at least one group must be selected before a sync can run.

Cron Expression for Scheduled Syncing:​

  • Configure the Cron Expression provided by the customer in the Integration Details section.
  • Example: A cron expression can be set to export data daily, weekly, or at a custom interval.
  • A manual Sync Data can also be triggered on demand from the adapter settings, independent of the schedule.

4. How the Export Works​

For reference, this is what happens during each sync, per selected AddressBook group:

  1. Batch creation — The selected group is resolved and validated. If it no longer exists or none resolve, the sync fails.
  2. Contact retrieval — Contacts are retrieved from the AddressBook group.
  3. CSV generation — A CSV file is generated (comma-delimited, UTF-8, header row, contacts sorted by ID then email). Includes standard fields: id, name, email, phone, group, channel IDs, unsubscribe status, created date, export timestamp.
  4. File naming — Files are named {sanitized-group-name}--{yyyyMMdd-HHmmssZ}.csv.
  5. Upload — The file is uploaded to the customer's Base Path on their SFTP server. Upload is done via a temp file that is atomically renamed into place, so partially-written files are never visible; missing directories on the remote path are created automatically. An existing file with the same final name is overwritten.

5. Important Notes​

  • Authentication — Password-based only (no SSH key support today). If the customer rotates their password, the integration must be updated with the new password or the sync will start failing.
  • Port — Hardcoded to 22 for all tenants (platform-level setting, not per-integration).
  • No OAuth / no token expiry concerns — unlike Google/Facebook Ads, there's no refresh token to worry about; failures instead show up as connection errors at sync time (bad host, bad credentials, path/permission issues).
  • Validation gaps — the platform does not pre-validate host reachability or cron expression correctness at save time; issues surface only when a sync actually runs. Double check host/port/credentials with the customer if a sync fails immediately.
  • Re-authorization — Not applicable. If credentials or base path change, simply update the integration configuration.