APIs & Webhooks

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

  1. 1
    Set your webhook URL

    In the CSVbox dashboard, go to your sheet schema → Destinations → API / Webhook. Paste your HTTPS endpoint URL.

  2. 2
    Choose 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).

  3. 3
    Embed 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.

  4. 4
    Handle the payload

    Your endpoint receives a POST with the import data. Respond with 200 OK to acknowledge. CSVbox retries on failure.

Time to first import: ~10 minutes from embed to working webhook.

Sample Payload

json
{
  "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

OptionDescriptionDefault
FormatJSON, XML, or FORMJSON
Delivery modeSequential (ordered) or Parallel (faster)Sequential
Batch sizeRows per POST (1–1,000)100
Custom headersAdd Authorization, API keys, or any headerNone
Retry on failureRetries on non-2xx response3 attempts

Common Use Cases

User onboarding

Accept a customer’s contact list, product catalog, or bulk data at signup and import it into your product’s database.

Recurring data feeds

Partners or vendors upload a file weekly; CSVbox validates and routes to your processing endpoint automatically.

Internal ops tools

Operations teams upload spreadsheets; data lands in your internal API without manual copy-paste.

Serverless pipelines

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.

Stop building CSV importers.

Ship ours in 15 minutes. Free forever on the Sandbox plan.

No credit cardEmbed in minutesSecure by default