Drop-in import widget for your SaaS. Smart column matching, data validation, and webhook delivery. Your users import data, you receive clean JSON.
Drop your file here or click to browse
Supports CSV, XLSX, XLS up to 125,000 rows
Everything you need for international data imports, right out of the box
Stop building CSV parsers. Ship features that matter.
Handle CSV, XLSX, and XLS files up to 125,000 rows. Automatic encoding detection and chunked parsing for large files.
315+ built-in synonyms across 10 languages. Your users rarely need to map columns manually.
Email, phone, URL, date, regex, min/max, unique constraints. Plus custom JavaScript rules for complex logic.
Receive clean, validated JSON via webhooks. HMAC signatures for security, automatic retries on Growth+ plans.
Custom colors, logo, and branding on all plans. Your users see your brand, not ours.
UI translations for English, Spanish, French, German, Portuguese, Italian, Dutch, Japanese, Chinese, and Korean.
JavaScript SDK, REST API, and simple iframe embed. React SDK coming soon. Integrate in under 30 minutes.
Call your own API to validate data before import completes. Check against your database in real-time.
Automatic file hash detection prevents accidental re-imports. Configurable 7-day window with user-friendly warnings.
Test imports safely with isolated sandbox webhooks and API keys. Your production data stays protected.
Publish template versions with changelogs. Compare changes, rollback anytime. Full audit trail for compliance.
Comprehensive import statistics, validation summaries, and transformation tracking. Export reports as JSON/CSV.
Three steps from zero to production-ready imports
Specify the columns you need: name, type, validation rules. Takes 2 minutes in the dashboard.
{
"columns": [
{ "key": "email", "type": "email", "required": true },
{ "key": "name", "type": "string", "required": true },
{ "key": "amount", "type": "number", "min": 0 }
]
}Add our SDK to your app. One script tag, one function call. That's it.
<script src="https://rowporter.com/embed.js"></script>
<script>
Rowporter.init({
templateId: 'your-template-id',
onComplete: (result) => console.log(result),
onError: (error) => console.error(error)
});
</script>
<button data-rowporter-open>Import</button>Your webhook receives validated, mapped JSON. No parsing, no cleanup needed.
{
"event": "import.completed",
"data": {
"rows": [
{ "email": "john@example.com", "name": "John", "amount": 150 }
],
"rowCount": 2847
}
}No hidden fees. No credit card required. Cancel anytime.
For testing and small projects
For small teams getting started
For growing teams with complex needs
For high-volume data processing
All paid plans include white-labeling. See full comparison
Get started in minutes with our drop-in widget. No credit card required.