How it works
A mapper configuration is a list of column rules. Each rule declares:- the output column name (
key) - where the value comes from — a path into the message, a static string, or a computed expression
- optional transformations applied to the extracted value (cast, hash, encrypt, concatenate)
source column.
Column configuration reference
Path syntax
Paths navigate the JSON structure of a message using| as separator.
Nested objects
Static values
Whenpath is empty and static is set, that literal string is written to every output row.
Wildcards
Use* in a path to expand an array. Each element of the array produces a separate output row.
Basic expansion
Nested expansion
Wildcards can appear at multiple levels. The mapper walks through every combination and produces one row per deepest element.Parallel lists (zip semantics)
When two columns share the same root path up to the first*, the mapper treats them as aligned lists and zips them by index — no cartesian product.
Wildcard on a non-array field
If the path segment marked* points to an object (not an array), the wildcard is silently skipped and the mapper continues navigating the object normally.
Deduplication
When wildcard expansion produces identical rows, duplicates are automatically removed.Transformations
Transformations are applied in this order: concatenate → hash → encrypt → cast.Type casting
"true", "false", "1", "0", "yes", "no" (case-insensitive) in addition to native booleans.
For date / datetime / time, use a cast_format string in strftime format. When omitted, ISO 8601 strings are parsed automatically.
Concatenation
Combine multiple source fields and/or static separators into a single output column.concatenate_fields has a path and/or a static value. They are appended in order.
Hashing
Hash a value before it lands in the target — useful for pseudonymisation.md5, sha256, sha512. A null input produces a null output (no error).
Encryption
Encrypt a value with AES-256-GCM. A unique random nonce is generated per call, so the same input produces a different ciphertext each time.Null handling
By default, every column is nullable: if the path does not exist in the message the output value isnull and no error is raised.
Set "nullable": false to treat a missing field as an error:
"error" key to the output row describing the failure.
Primary keys
Targets that write to a database table (PostgreSQL, Snowflake, Oracle, …) require at least one column marked"primary_key": true. This is what the connector uses to perform upserts.
Testing and debugging
In the UI
The subscription builder includes a live preview panel. Paste a raw CDC message and the panel shows the exact rows the mapper will produce before you save the subscription.Via the API
You can call the mapper directly without any pipeline or subscription:Reading error rows
When a transformation fails (bad cast, non-nullable field missing, etc.) the mapper does not drop the row — it includes it with an"error" key: