Once a transformation is complete, you need the output file. You could log into WeTransform and download it manually, or you could configure a webhook and have the download link delivered to your system the moment the file is ready. The webhook is one of the five exporters, alongside API push, Email, FTP, and SFTP.
⚡ What is a webhook?
A webhook is an HTTP request that WeTransform sends to a URL you provide, as soon as a transformation is complete. The payload contains a direct download link to your transformed file.
Think of it as a reverse API: instead of your system asking "is it done yet?", WeTransform calls your system and says "here it is".
🔁 The webhook fires on every submission on the target format, whether triggered manually, by a schedule, via API, or by a customer through the embed. Configure it once and it works for every run.
📦 What the webhook sends
When your transformation is complete, WeTransform sends a POST request to your URL with this payload:
{
"event": "file:ready-for-download",
"download_url": "https://wetransform.com/download/...",
"customer_id": "65bd6fc9...",
"customer_email": "[email protected]",
"template": "products_sync"
}
Your system receives this, verifies the signature, and downloads the file from download_url, fully automated.
⚙️ How to set up a webhook
Open the Target formats page and click Exporters on your target format
Click Add a new exporter and choose Webhook
Enter your Callback URL, the endpoint on your server that will receive the POST request
Set a Secret Key, used to sign the payload so you can verify it's genuinely from WeTransform
Use the Test Trigger to send a sample payload and confirm your endpoint responds with a 2XX status
🔒 Verifying the webhook signature
Every webhook request includes an X-Signature header. Always verify it before processing, this prevents unauthorized requests from reaching your system.
// PHP example
$secret = 'your_secret_key';
$body = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_SIGNATURE'];
$expected = hash_hmac('sha256', $body, $secret);
if (hash_equals($expected, $signature)) {
// Valid — process the file
}
For examples in other languages (Python, JavaScript, Go, etc.), see the full webhook documentation.
🔍 Debugging with webhook logs
WeTransform logs every delivery attempt: what was sent, what your server responded, and how long it took. If a delivery fails (404, 500, timeout), you can see the full HTTP exchange and replay the event with one click from the webhook logs.
⚠️ Your endpoint must respond with a 2XX status within a few seconds. If it times out or returns an error, WeTransform will retry, check your logs if deliveries seem to be failing silently.
🧭 Webhook or API push?
The webhook delivers a notification with a download link: your system fetches the whole file. API push delivers the data itself, one JSON request per row, straight into your endpoint. Choose the webhook when your system prefers to process complete files, API push to feed a system record by record.
👉 What to do next
