Import CSV data straight to your API.
CSVbox validates every row, then POSTs clean data to any HTTPS endpoint you control — your server, a serverless function, or a third-party webhook. No middleware. No ETL pipeline. Just clean rows arriving at your endpoint.
- Validated data only
- Column mapping included
- SOC 2 Type II + GDPR
The webhook destination is the most flexible path in CSVbox. It works with any backend — Node, Python, Ruby, Go, PHP, or serverless functions (Lambda, Vercel, Supabase Edge Functions, Cloudflare Workers). If your server has an HTTPS endpoint, CSVbox can deliver to it.
This is how most developers start: point CSVbox at an existing endpoint, validate in CSVbox, receive clean JSON in your handler.
How It Works
- 1Set your webhook URL
In the CSVbox dashboard, go to your sheet schema → Destinations → API / Webhook. Paste your HTTPS endpoint URL.
- 2Choose your format
Select JSON (recommended), XML, or form-encoded. Choose sequential or parallel row delivery, and set your batch size (1–1,000 rows per POST).
- 3Embed the importer
Drop the CSVbox script into your app. When a user uploads a file, CSVbox maps their columns to your schema, validates every row, and POSTs clean data to your endpoint.
- 4Handle the payload
Your endpoint receives a POST with the import data. Respond with 200 OK to acknowledge. CSVbox retries on failure.
Sample Payload
{
"import_id": "imp_01HZ9K",
"sheet_id": "sh_contacts",
"row_count": 3,
"rows": [
{
"row_id": 1,
"data": {
"email": "ana@example.com",
"first_name": "Ana",
"company": "Acme Corp",
"plan": "pro"
}
},
{
"row_id": 2,
"data": {
"email": "riku@example.com",
"first_name": "Riku",
"company": "Pipedata",
"plan": "starter"
}
}
]
}Configuration Options
| Option | Description | Default |
|---|---|---|
| Format | JSON, XML, or FORM | JSON |
| Delivery mode | Sequential (ordered) or Parallel (faster) | Sequential |
| Batch size | Rows per POST (1–1,000) | 100 |
| Custom headers | Add Authorization, API keys, or any header | None |
| Retry on failure | Retries on non-2xx response | 3 attempts |
Common Use Cases
Accept a customer’s contact list, product catalog, or bulk data at signup and import it into your product’s database.
Partners or vendors upload a file weekly; CSVbox validates and routes to your processing endpoint automatically.
Operations teams upload spreadsheets; data lands in your internal API without manual copy-paste.
Trigger a Supabase Edge Function, a Vercel API route, or an AWS Lambda from any user-uploaded file.
Frequently Asked Questions
Can I add authentication headers to the webhook request?
Yes. In the destination config, add any HTTP headers — Authorization, X-API-Key, or custom headers your endpoint requires.
What happens if my endpoint is down?
CSVbox retries up to 3 times on non-2xx responses. Failed rows are surfaced in your import dashboard with error details.
Can I receive all rows in one request instead of batches?
Yes — set batch size to match your expected row count, or use the single-request mode for smaller imports.
Does CSVbox validate before or after calling the webhook?
All CSVbox-side validation (schema, type, regex, custom rules) runs before the webhook fires. You receive only valid rows.
Is Private Mode compatible with webhooks?
Yes. In Private Mode, the importer runs entirely in the user’s browser and POSTs directly to your endpoint — no row data ever touches CSVbox servers.