Skip to main content

People Integration: CSV-over-SFTP

Learn how to load your employee data as CSV over SFTP.

Written by Michael Wallace

Scenario

You want to load your employee data into PlusPlus, and an API-based people integration isn't feasible — for example, your HRIS doesn't support the standard methods, your security policy doesn't allow API integrations, or your organization is moving slowly enough that an interim file-based sync is the right starting point.

CSV over SFTP is supported as a fallback method for these situations. If Workday, SCIM, or a Custom Integration is viable for your environment, those methods are recommended over CSV over SFTP — they require less ongoing operational effort, fail less often, and provide better real-time behavior. Confirm none of the API-based methods fits before going with CSV over SFTP.

Solution

CSV over SFTP works as a daily file exchange. You generate a CSV file from your HRIS each day and upload it to a PlusPlus-hosted SFTP repository using credentials provided by PlusPlus. PlusPlus picks up the file once a day and applies its contents to user records.

Set up CSV over SFTP

  1. Contact your Customer Success Manager to request the CSV over SFTP option. This method is not currently self-serve.

  2. Connect your CSM with the team or person who will configure the export and upload on your end.

  3. Your CSM will provide the SFTP connection information and access credentials. Username/password and key-based authentication are both supported — let your CSM know which you prefer.

  4. Set up a daily automated job in your environment to:

    • Export your employee data from your HRIS into a single CSV file

    • Upload the file to the PlusPlus SFTP repository using the supplied credentials

  5. PlusPlus picks up the file daily and loads the employee data into the platform.

File naming convention

Files must be uploaded to uploads/hr_reports/ and named using the following convention:

uploads/hr_reports/people_report_YYYY-MM-DD.csv

For example: uploads/hr_reports/people_report_2024-04-30.csv

The file path is case-sensitive. The date format must be YYYY-MM-DD.

Map attributes

CSV over SFTP uses the same attribute mapping system as other people integration methods, with one caveat: because CSV rows are flat, path expressions are typically just the column name (e.g., Employee_Email) rather than nested expressions. For mapping syntax, examples, and how to test expressions against a sample payload, see People Integration: Attribute Mapping.

The default column names PlusPlus expects are listed in CSV file format below. If your HRIS export uses different column names, you can remap them in System Settings > Integrations > People instead of changing your export.

Validate the integration

Use the PI Sync Dashboard to:

  • Run a dry sync to preview what would change before your next scheduled sync

  • Inspect the raw payload PlusPlus received from your file

  • Confirm attribute mappings are extracting the right values

  • Review per-user outcomes (created, updated, skipped, failed) to catch issues before they affect users

Important caveat: dry-run validation operates on the most recently uploaded file in the SFTP repository, and the process consumes that file during execution. Re-upload a file before each dry run. For testing, a CSV with a single row is fine — it will represent a single user create or update.

Go deeper

CSV file format

The CSV file must include a header row with the following case-sensitive column names:

Column

Required?

Full Name

Yes

Email

Yes

Employee ID

No

Department

No

Title

No

Hire Date

No

Manager's email

No

Picture URL

No

Location

No

Termination Date

No

Only Full Name and Email must contain values. Other fields are optional but unlock platform features when populated (see the People Integration hub for what each attribute enables).

You can add additional columns to the right of the standard ones for custom attributes — these can be referenced in automated rules, used for group management, event enrollments, and track assignments. Custom attributes are not displayed on user profiles by default.

You can grab a template here: PlusPlus People Integration CSV template.

CSV format requirements

  • All values should be quoted using the double-quote (") character.

  • All columns must be separated using the comma (,) character.

  • Where necessary, data must be escaped using the backslash (\) character.

  • All rows must be separated using carriage-return followed by line-feed characters (\r\n).

  • The entire file must be encoded as UTF-8. If you need a different encoding (for example, ISO-8859-1), let your CSM know so PlusPlus can validate support.

Restricted-role assignment

Like other people integration methods, CSV over SFTP supports the is_restricted attribute mapping for automatic assignment of the restricted user role. Map a column in your CSV to a truthy value (e.g., 1, true, restricted) for users who should be restricted, and configure the mapping in System Settings > Integrations > People.

For an explanation of restricted users and what they can and can't do, see User Roles: Restricted Users.

PGP data decryption

For environments requiring encryption-at-rest of HR data in transit, PlusPlus supports PGP-encrypted CSV files. To enable:

  1. Go to System Settings > Integrations > People > SFTP.

  2. Toggle Enable PGP decryption on.

  3. After saving, the PGP Recipient and PGP Public Key fields are automatically populated.

  4. Add the public key to your local PGP keyring and use it (with the recipient) to encrypt files before uploading.

The rest of the workflow remains unchanged — PlusPlus automatically decrypts incoming files when this setting is enabled. PGP decryption can be disabled at any time.

Did this answer your question?