Want to automatically retrieve your WAX data (contacts, campaign performance, WhatsApp events…) into your own system, without having to download it manually every day? That's exactly what SFTP data export is for.
What is SFTP?
SFTP (Secure File Transfer Protocol) is a secure protocol that transfers files automatically between two systems, with no manual intervention.
Think of it as a locked mailbox that can only be opened with the right key: every day, WAX drops a file containing your data into it (for example, your contact list or your campaign statistics).
Your system then picks up that file automatically and securely.
It's a reliable, automated alternative to manually exporting CSV files: once set up, the exchange happens on its own, every day.
You can also export your data to a Google Spreadsheet instead of an SFTP server.
A few terms you'll come across
When setting up an SFTP connection in WAX, you'll be asked for several technical details. Here's what they mean:
Term | What it is |
Host | The address of the server that will receive your files, e.g. |
Port | The communication "channel" used by the server. By default, |
Username | The username WAX uses to connect to your server. |
Password / SSH private key | A password is the most common authentication method; some servers prefer an SSH private key, a security file more robust than a password (the two are never used at the same time). |
Remote directory | The exact path of the folder on your server where WAX should drop the exported files (e.g. |
IP addresses to allow | If your server restricts connections to specific addresses, your technical team will need to allow (whitelist) WAX's IP addresses, provided directly in the interface. |
What data can you export from WAX?
WAX lets you automatically export several types of data, in CSV format:
Contact lists: a list or segment of contacts (ideal for syncing your CRM or marketing tool)
WhatsApp messages: the history of messages exchanged
Clicks (click events): clicks recorded on your links
Performance: daily statistics for your campaigns and automations (cost, delivered, read, clicks, conversions…)
Custom metrics: any standard event (delivered, read, opt_in, opt_out…) or custom event you track in WAX
Each export type has its own columns; you'll find the details in the exported file format section below.
Prerequisites
To set up your export, you'll need:
Admin access to WAX to reach the settings
Your SFTP server connection details: host, port, username, and a password or an SSH private key — ask your technical team or hosting provider if you don't have them
The destination folder on your server where the files should be dropped
To know whether your server restricts connections by IP — if so, plan for your technical team to whitelist WAX's IP addresses
To decide what to export, and how often (once a day, at what time in UTC)
Setting up your SFTP export, step by step
Go to data exports Head to Settings > Data Export, then pick the category matching the data you want to export: Contact lists, WhatsApp sent, RCS or SMS undeliverable, for example.
Set the delivery time Choose the daily time (in UTC) at which WAX should generate and send the file.
Choose the destination: SFTP In the Destination dropdown, select SFTP (the Google Spreadsheet option — and, for metrics, Webhook — are also available).
Allow WAX's IP addresses, if needed If your server restricts connections by IP, enable the corresponding option to display the list of WAX IP addresses to share with your technical team.
Create your SFTP connection Click "Create Secure File Transfer Protocol Connection" and fill in:
Protocol:
SFTPorFTPS(the port is pre-filled automatically: 22 for SFTP, 990 for FTPS)Host: your server's address
Port: adjust if your server uses a non-standard port
Username: your login username
Authentication: password, or enable "Authenticate with an SSH private key" to use a private key instead
🔑 If you use a private key, it must be in OpenSSH format, including the
-----BEGIN OPENSSH PRIVATE KEY-----and-----END OPENSSH PRIVATE KEY-----lines.Enter the file name and destination folder Fill in the desired "File name" and the "Remote directory" where WAX should drop the file on your server.
Choose the data to include Depending on the export type, you can select which contact attributes to include ("Include Contact Attributes"), the name of the campaigns/automations behind the event ("Include Campaign and Automation names"), or the detailed event properties ("Include Event Properties").
Activate and save Switch the status to Active, then click "Save". Your export is ready.
A "Backfill" button is available: it triggers a first delivery immediately, without waiting for the next scheduled time. Handy for checking that everything works correctly.
What happens next?
Every day, at the time you chose (in UTC), WAX automatically generates the corresponding CSV file and drops it into the configured folder on your SFTP server.
No further action is needed on your side as long as the export stays active.
You can come back to Settings > Data Export at any time to edit the configuration, pause the export (Inactive status), or create a new one for another data type.
Exported file format
All WAX exports are generated in CSV format, encoded in UTF-8, with a comma as the column separator.
Contact list exports
You can specify which WAX contact list will be exported to your SFTP server. This works with both segments and static contact lists.
Header | Type | Description | Example |
phone_number | String | Phone number of the contact, prefixed with its country code | 33612345678 |
CUSTOM* | String | Any custom attribute you want to add, first_name for instance. | Alice |
This export lets you add any custom attribute you may need.
Opt out exports
You can export the opt-outs that occurred the previous day.
Header | Type | Description | Example |
phone_number | String | Phone number of the contact, prefixed with its country code | 33612345678 |
message | String | The message that lead to the opt out event | I want to unsubscribe |
reference_name | String | Name of the entity that lead to the opt out. Could be name of the Campaign / Automation or Agent that opted out the contact. | WAX_CAMPAIGN_SUMMER |
updated_at | String (ISO 8601 formatted Time) | Time at which the opt out happened | Tue, 08 Apr 2025 08:42:25.015735000 UTC +00:00 |
CUSTOM* | String | Any custom attribute you want to add, first_name for instance. | Alice |
This export lets you add any custom attribute you may need.
Opt in exports
You can export the opt-ins that occurred the previous day.
Header | Type | Description | Example |
phone_number | String | Phone number of the contact, prefixed with its country code | 33612345678 |
message | String | The message that lead to the opt in event | I want to unsubscribe |
reference_name | String | Name of the entity that lead to the opt in. Could be name of the Campaign / Automation or Agent that opted in the contact. | WAX_CAMPAIGN_SUMMER |
updated_at | String (ISO 8601 formatted Time) | Time at which the opt out happened | Tue, 08 Apr 2025 08:42:25.015735000 UTC +00:00 |
CUSTOM* | String | Any custom attribute you want to add, first_name for instance. | Alice |
This export lets you add any custom attribute you may need.
Performance exports
You can export the performance of your automations and campaigns, with 1 row per day and per entity (Automation or Campaign).
Header | Type | Description | Example |
date | String (ISO 8601 formatted Time) | Date of the performance summary | Tue, 08 Apr 2025 08:42:25.015735000 UTC +00:00 |
reference_name | String | Name of the entity that is being reported. | WAX_CAMPAIGN_SUMMER |
reference_type | String (Automation / Broadcast) | Type of the entity. Automation or Broadcast for a Campaign. | Automation |
reference_id | Integer | Id of the entity. | 1234 |
cost_eur | Integer | Total cost of the conversations (including META and WAX markups) in euros and cents. 10 euros in the example. | 100.00 |
delivered | Integer | Count of conversations that have been delivered this day. | 10000 |
read | Integer | Count of conversations that have been read this day. | 9000 |
interacted | Integer | Count of conversations that received replies or clicks on urls | 7500 |
quick_reply | Integer | Count of conversations that received replies from quick replies buttons | 6500 |
clicked | Integer | Count of conversations that received clicks on URLS | 6000 |
converted_read | Integer | Count of conversions that happened within the read attribution window. | 200 |
revenue_read_eur | Integer | Sum of revenues from conversions that happened within the read attribution window. In Euros. | 200.00 |
converted_interacted | Integer | Count of conversions that happened within the interacted attribution window. | 400 |
revenue_interacted_eur | Integer | Sum of revenues from conversions that happened within the interacted attribution window. In Euros. | 400.00 |
converted_clicked | Integer | Count of conversions that happened within the clicked attribution window. | 600 |
revenue_clicked_eur | Integer | Sum of revenues from conversions that happened within the clicked attribution window. In Euros. | 600.00 |
opt_in | Integer | Count of contacts that opted in. | 800 |
opt_out | Integer | Count of contacts that opted out. | 80000 |
billed_messages | Integer | Count of billed messages. | 10000 |
You won't be able to add custom attributes to this export.
Metric exports
You can export any type of metric you want, whether it's a custom metric or one of the standard metrics provided by WAX:
delivered
read
clicked
failed
quick_reply
opt_in
opt_out
billed_message
interacted
Header | Type | Description | Example |
metric_name | String | Name of the metric like delivered, read, clicked, … | delivered |
unique_id | String | The ID of the metric event, provided by WAX when it is a WAX internal metric such as delivered, or by your system in the case of a custom metric | 12345 |
occurred_at | String (ISO 8601 formatted Time) | The time at which the metric event occurred. | Tue, 08 Apr 2025 08:42:25.015735000 UTC +00:00 |
phone_number | String | The phone number of the contact for which that metric event occurred. | 33612345678 |
CUSTOM* | String | Any custom attribute you want to add, first_name for instance. | Alice |
Troubleshooting
Saving the SFTP connection fails Check that the host, port and username are filled in, and that a password or a private key is provided (not both, and not neither). FTPS requires a password (private keys are only available with SFTP).
Saving the export fails If the destination is SFTP, the "File name" and "Remote directory" fields are required: make sure they're filled in.
Files aren't arriving on your server Check, in order: that the export is set to Active; that the scheduled time is indeed in UTC (watch out for the offset with your local time zone); that the remote directory you entered exists and that your SFTP user has write permissions on it; and, if your server filters by IP, that WAX's IP addresses have been whitelisted by your technical team.
Your SSH private key is rejected Check that it's in full OpenSSH format, with its header and footer lines (BEGIN/END OPENSSH PRIVATE KEY), copied without extra characters and not truncated.
FAQ
What format are the exported files in? CSV only, for now.
How often are exports sent? Once a day, at the UTC time you choose during setup.
Is SFTP secure? Yes: SFTP exchanges are encrypted end to end, and if you use an SSH private key, it is stored encrypted in WAX.
Can I create several exports (contacts, performance, metrics…) to the same SFTP connection? Yes, the same SFTP connection can be reused for several exports, to different folders if needed.
Who should I contact if I'm stuck? Your Customer Success Manager or our technical support team can help you with the setup.
