Keys, webhooks, sandbox

SFTP and file exchange

For the ERP that only speaks CSV: provisioning an SFTP account, folder conventions that survive four years, and wiring a dropped file to a scheduled import.

Most German B2B integration is still files. That is not a lesser option — a folder, a naming convention and a schedule is a working integration, and it is frequently the one that is still running unchanged in five years.

Before you begin. Decide who writes which file, in which direction, and how often. The system-of-record decision outranks every technical choice on this page: a file that carries a column nobody should be writing will overwrite that field every single night.

What you get

The platform runs a managed SFTP service for your tenant. Your systems connect to a host of the form:

<your-tenant-slug>.share.revenexx.com

with a login username, over SFTP. The storage behind it is hosted in Germany, which matters for the DSGVO conversation about a file containing customer data.

Two things it deliberately is not: FTP and SMB are not offered. Plain FTP sends credentials in the clear and has no place carrying your order data; if your ERP vendor insists it only speaks FTP, the answer is a small transfer agent on your side, not an unencrypted channel.

Provision an account

Go to Data Exchange › SFTP Server and create a new account.

  1. Choose a username. Lowercase letters, digits and hyphens. Name it for the system, not the person — erp, wms, bi, supplier-hoffmann.
  2. The login becomes <tenant>-<username>. That is what the connecting system uses, not the bare username. Getting this wrong is the most common first-connection failure.
  3. Leave the password empty to have a strong one generated, or set your own — 12 to 128 characters with an upper case letter, a lower case letter, a digit and a special character.
  4. Provision, then open the account to see the Host, Login, Password and Home directory. The password can be revealed again from here, and rotated with Generate new password.
Rotating a password takes effect immediately. The old one stops working the moment the new one is generated, so anything still using it fails on its next run — usually at 02:00, silently. Rotate during working hours, and update the connecting system in the same sitting.

One account per system. Same reasoning as one key per integration: you want to be able to disable the supplier's access without stopping your own ERP.

Folder conventions that survive

The single decision that determines whether this is still comprehensible in four years. Agree it before the first file lands.

A layout that works:

/in/orders/          files your systems send to the platform
/in/prices/
/in/stock/
/out/orders/         files the platform produces for your systems
/out/invoices/
/archive/            processed files, moved here after a successful run
/error/              files that failed, kept for inspection

And a naming convention with four parts:

prices_full_20270312_0200.csv
<what>_<full|delta>_<yyyymmdd>_<hhmm>.<ext>

Four rules that prevent the usual problems:

  • Never overwrite. A file named prices.csv that is replaced nightly gives you nothing to look at when Tuesday's prices were wrong.
  • Move, do not delete. Processed files go to /archive/, failures to /error/. A file you can re-run is a five-minute fix; a file that is gone is an evening.
  • Write to a temporary name and rename on completion, or use a marker file. Otherwise a scheduled import will happily read a half-written file, and a half-written price file is worse than no price file.
  • Say in the name whether it is a full load or a delta. The recovery behaviour is completely different — see Integration patterns.

Wire a file to an import

The folder alone does nothing. Two pieces connect it to your data:

  1. An import or export profile under Data Exchange › Import & Export describes the file's structure and its mapping — which column becomes which field, and which fields the file is not allowed to touch. See Field mapping.
  2. A schedule runs the profile against the folder. Build it as a workflow — see Build a workflow — with a trigger, the import step, and a move-to-archive or move-to-error step at the end.

The first time you run any new file, use the Staging (preview first) option rather than loading straight into live data. It puts the result in a preview area so you can look at what would have happened before it happens. The ten minutes this costs is the cheapest insurance in this whole area.

Storage Sync is the related tool for a different job: scheduled rules that pull files from the SFTP storage into the media library, which is how supplier image drops get into the catalog without anybody uploading anything by hand.

Notifications on failure

A file integration that fails silently is worse than no integration, because everyone downstream keeps believing the data is current.

Set up three alerts and route them to a team address, never a person:

ConditionWhy it matters
A scheduled run failedThe obvious one
A run succeeded but rejected rowsThe dangerous one — a partly-loaded price file looks like success
No file arrived by the expected timeThe one everybody forgets

The third is the important one. If the ERP job that writes the file dies, no import fails — nothing happened at all. A missing-file alarm is the only thing that catches it, and without it your catalog quietly serves last week's prices.

See Monitor your syncs.

What to check

  • Connect once by hand with an SFTP client, using <tenant>-<username>, and confirm you land in the home directory.
  • Drop a small test file and watch the scheduled run pick it up, process it, and move it to /archive/.
  • Drop a deliberately broken file and confirm it lands in /error/ and raises the alert.
  • Confirm nothing is writing a field it does not own.

Next