> ## Documentation Index
> Fetch the complete documentation index at: https://hellocsv.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Transformers

This section describes available transformation functions.

## Async transformers & run timing

Transformers may be **synchronous or asynchronous**. A `custom` `transformFn`
may return either `ImporterOutputFieldType | undefined` or a
`Promise<ImporterOutputFieldType | undefined>` — making it possible to transform
a value by calling a remote service or an LLM.

By default, transformers run reactively on every edit (`runOn: 'change'`). For
slow or costly async work you usually don't want that to fire on each keystroke —
set `runOn: 'submit'` so the transformer runs only in the final pass when the
user submits:

```ts theme={null}
{
  transformer: 'custom',
  key: 'normalize_with_llm',
  runOn: 'submit', // deferred — runs once on submit, not on every edit
  transformFn: async (value) => normalizeWithLlm(value),
}
```

Async calls are throttled so a large sheet can't fire one request per cell at
once; tune the cap with
[`maxConcurrentAsyncOperations`](/v0.6.0/api-reference/importer-props).

## phone\_number

**Description:**\
Formats phone numbers to a standard format.

***

## postal\_code

**Description:**\
Formats postal codes to a standard format.

***

## state\_code

**Description:**\
Formats state codes to a standard format.

***

## strip

**Description:**\
Trims leading and trailing whitespace.

***

## custom

**Description:**\
Custom transformation function.

**Additional:**\
Requires a `key` and a `transformFn` to modify the value.

Return `undefined` in `transformFn` to skip the transformation.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.