Back to product
Product · SDK

Your users import any format. Your system receives clean data. Three API calls.

The WeTransform SDK handles the full import pipeline for your users : CSV, XLS, JSON, XML, PDF file upload, format detection, AI column mapping, validation — and delivers the result via a typed event. You define the output schema once. Your users send whatever they have.

From your side: install the package, create an instance, open the UI, subscribe to successSubmit. The fileUrl in the event payload is the transformed file, ready for your system to process. That is the integration contract.

Quick start

Simple to integrate

Install, configure, open. No import pipeline to build.

import { createWeTransform } from '@wetransform/core'
 
const sdk = createWeTransform({
organizationHandle: 'your_organization',
locale: 'en',
displayAsModal: true,
initialLocation: 'transformations',
authentication: {
customerId: 'your_customer_id',
signature: 'your_signed_payload',
templateHandle: 'your_output_format_name',
sourceId: 'your_source_file_name',
},
})
 
// Subscribe to the successSubmit event
sdk.on('successSubmit', (payload) =>
console.log('File successfully submitted', payload))
 
// Open WeTransform
await sdk.open()
 
// Switch locale without remounting
await sdk.setLocale('fr')
 
// Close or destroy session
await sdk.close()
await sdk.destroy()
TypeScript ready@wetransform/core@wetransform/vueModal or inlineHMAC authTyped events

Illustrative example — see api.wetransform.com for the full configuration reference.

View @wetransform/core on npm →
Configuration

One object. Full control.

Pass a single configuration object to createWeTransform. Required fields are your organization handle and the customer authentication block. Everything else controls display, locale, and session scope.

ParameterTypeDescription
organizationHandlerequired
stringYour organization URL slug.
authentication.customerIdrequired
stringIdentifies the end user in your system.
authentication.signaturerequired
stringHMAC-SHA256 token. Generated server-side — never exposed to the browser.
authentication.templateHandle
stringScope the session to a specific import template.
locale
'en' | 'fr'UI language. Switch at runtime with sdk.setLocale().
displayAsModal
booleanModal overlay (true) or inline embed.
customization
{ colors?: { primary?: string; secondary?: string } }Override UI colors to match your product's brand. Pass CSS color values for primary and secondary. Applied at mount time; can be updated via sdk.setCustomization().
Events

React to what happens

Subscribe to typed events with sdk.on(event, handler). The key event is successSubmit — it carries the fileUrl and a signature you must verify server-side before processing.

EventPayloadDescription
openSDK opened and mounted.
readyUI fully loaded and interactive.
successSubmit{ customerId, templateHandle, fileUrl, signature, userFileName }User submitted. Verify signature server-side before processing fileUrl. userFileName is the original file name as uploaded.
errorErrorAn error occurred in the SDK.
closeUser closed the SDK.
destroyInstance fully torn down.
Security

HMAC authentication — signed server-side

WeTransform uses HMAC-SHA256 to authenticate each session and to verify submitted files. The secret key never leaves your backend.

Sign the customer context server-side before passing it to the SDK. On successSubmit, verify the inbound signature before you process or store the file.

Outbound (session init)
HMAC_SHA256("customerId:templateHandle:sourceId", secret)
Inbound (successSubmit)
HMAC_SHA256("customerId:templateHandle:fileUrl", secret)

Never expose the secret key to the browser. Generate the signature in your backend.

Integration paths

Choose what fits your stack

Two ways to integrate WeTransform — pick the one that matches your architecture.

@wetransform/coreRecommended

Headless browser SDK. Full programmatic control: events, locale switching, modal or inline display, TypeScript types.

React, Vue, vanilla JS, any framework

@wetransform/vue

Vue 3 wrapper. useWeTransform() composable and <WeTransformSdk> renderless component for declarative control.

Vue 3

Why WeTransform

CSV import SDK for B2B SaaS — built for recurring, real-world data

Most CSV import SDKs handle a clean upload once. WeTransform is built for the recurring case: the same partners and customers sending slightly different files every week. The AI learns the mapping on the first import and reuses it. Your users stop re-mapping. Your system keeps receiving clean data.

Open-source alternatives like TableFlow give you the component — you run the infrastructure, you handle format variation, you build the recurring logic. WeTransform runs that infrastructure for you, hosted in the EU by default, with GDPR compliance baked in.

Vs embedded importers positioned similarly (Ingestro, Dromo, OneSchema): WeTransform is the only one built natively for recurring imports in mid-market B2B SaaS, with EU hosting as the default, not an add-on. Public pricing from €459/month. No enterprise pricing wall to get started.

FAQ

Developer questions

A signed download URL for the transformed file in your configured output format. Verify the inbound HMAC signature before processing. The URL is time-limited — download or use webhooks for async handling.

CSV, TXT, Excel (clean and messy — merged cells, multiple tables), PDF, XML, JSON, and image files. All formats go through the same AI mapping pipeline — your output schema stays constant.

Yes. Call await sdk.setLocale('fr') at any time without remounting. The UI updates in place. Supported: 'en' and 'fr'.

Set displayAsModal: false. The SDK renders inline inside a container element of your choice, rather than opening a modal overlay.

@wetransform/vue wraps @wetransform/core with a renderless component and a useWeTransform() composable. The composable accepts a reactive config getter so your Vue reactivity drives the SDK state.

Yes. Pass a customization object at init time: createWeTransform({ ..., customization: { colors: { primary: '#your-color', secondary: '#your-color' } } }). You can also call sdk.setCustomization() at runtime without remounting.

Get started

Read the full SDK reference

Configuration reference, method signatures, event types, and Vue 3 examples — all at api.wetransform.com.

Stay in the loop

Every two weeks, what we learn building WeTransform: product, market, method.