The Value Composer transforms data by chaining together operations. Below is the full catalogue of available operations, grouped by category.Documentation Index
Fetch the complete documentation index at: https://docs.frontic.com/llms.txt
Use this file to discover all available pages before exploring further.

How operations are configured
A composer slot is a JSON object with asource discriminator. There are three sources you’ll work with:
| Source | Shape | Use for |
|---|---|---|
static | { "source": "static", "value": <literal>, "outputType": "<type>" } | A fixed value baked into the configuration. |
data-field | { "source": "data-field", "field": "path.to.field" } | A reference to a field on the incoming feed record. Use $item / $parent inside iterations. |
composed | { "source": "composed", "composition": { "type": "<op>", "<param>": <slot>, ... } } | An operation. Each parameter is itself a slot, so operations nest arbitrarily. |
concat of vendor.name + - + name, the JSON the admin UI emits:
if whose then is a concat of two static values, a map whose mapFunction is a get on $item, and so on. The catalogue below documents the parameter names and types each operation expects.
Type compatibility
Every slot has a known output type, and operations declare what they accept:- Concrete types (
number,string,boolean,array,object) — the input slot must produce that exact type, or the configuration is invalid. - Type markers (
T,K,V) — polymorphic placeholders. The first input that fills a marker fixes the type for every other slot using the same marker. For example,equals(value: T, compare: T)accepts any type as long asvalueandcompareagree — fillvaluewith a string andcompareis constrained to strings too.
toString / toNumber / toBoolean so the conversion is part of the chain. See Error handling for what happens when something does slip through.
Array Operations
count
Return the number of elements in an array.
The element count.
filter
Return the elements of an array that satisfy a condition. Each element is exposed as $item inside the filter expression.
The elements that returned
true from filterFunction.filter $item.id ==
findFirst
Return the first element of an array that satisfies a condition. Each element is exposed as $item inside the filter expression.
The first matching element, or
null if none match.first
Return the first element of an array.
The first element, or
null if the array is empty.flatMap
Apply a function to each element of an array, then flatten the resulting arrays into a single array. Each element is exposed as $item inside the map expression.
The flattened result of all per-element mappings.
join
Join an array of strings into a single string.
The joined string.
map
Apply a function to each element of an array and return the resulting array. Each element is exposed as $item inside the map expression.
The mapped array.
map images[] ->
merge
Merge two arrays of scalar values into one. Values in additional are appended to base.
The merged array.
slice
Extract a portion of an array.
The sliced array.
split
Split a string into an array of strings.
The resulting array of substrings.
unique
Remove duplicate values from a scalar array, preserving the order of first occurrence.
The deduplicated array.
Comparison Operations
equals
Compare two values for equality.
true when the values are equal.greaterThan
Compare two numbers; true when the first is greater than the second.
true when value > compare.isEmpty
Return whether a value is empty. Empty strings (after trim), empty arrays, null, and similar are true; numbers and false are not considered empty.
true when the value is empty.isNull
Return whether a value is NULL.
true when the value is NULL.isScalar
Return whether a value is a scalar (not an object or array). null is also considered scalar.
true when the value is a scalar or null.Logic Operations
and
Return true when all values are true.
true when both values are true.if
Branch the execution flow based on a condition.
Either the
then or the else value.availability based on stock > 10
not
Negate a boolean. Non-boolean values are coerced to false before negation.
The negated value.
or
Return true when at least one value is true.
true when either value is true.xor
Return true when exactly one value is true (exclusive or).
true when exactly one of the values is true.Math Operations
divide
Divide two numbers (numerator / denominator).
The quotient.
exponent
Raise a number to the power of another (base^exponent).
The result of the exponentiation.
multiply
Multiply two numbers.
The product.
Object Operations
get
Read a value from an object by key.
The value at the given key, or
null if the key isn’t present.object
Compose an object by resolving each property’s expression.
The composed object.
Text Operations
concat
Concatenate two strings.
The concatenated string.
contains
Check whether a string contains another string, with optional case-insensitive matching.
true when value contains reference.length
Return the number of characters in a string.
The character count.
md5
Hash a string with the MD5 algorithm. Useful for stable identifiers derived from input data.
The MD5 hash as a 32-character hexadecimal string.
padLeft
Pad a string on the left to a target length.
The padded string.
padRight
Pad a string on the right to a target length.
The padded string.
replace
Replace occurrences of a substring within a string.
The string with replacements applied.
slugify
Convert a string to a slug — lowercase, no spaces or special characters.
The slugified string.
substring
Extract a substring from a string.
The extracted substring.
toLower
Convert a string to lowercase.
The lowercased string.
toUpper
Convert a string to uppercase.
The uppercased string.
trim
Remove whitespace from the beginning and end of a string.
The trimmed string.
Transform Operations
toBoolean
Convert a value to a boolean. Falsy values like "false", "0", and [] evaluate to false.
The boolean result.
toNumber
Convert a value to a number. NULL becomes 0.
The numeric result.
toString
Convert a value to a string. NULL becomes an empty string.
The string result.
Utilities Operations
randomBoolean
Return a random boolean. The probability controls how often true is returned, on a 0–100 scale.
A random boolean.
randomNumber
Return a random number between min and max (both inclusive). Set precision to 0 for integers, or higher for decimals (e.g. 2 produces values like 3.14).
A random number in the requested range.
Error handling
The composer is strict about types and forgiving about absence:- Missing fields and keys resolve to
null. Adata-fieldslot pointing at a path that doesn’t exist on the current record returnsnull.getagainst a missing key returnsnull. The chain continues withnullflowing through. nullinputs are absorbed where it makes sense. Per-operation handling, not a global rule:concatcoalescesnullinputs to empty strings.filter,map, and other array operations coalesce anullarray input to[]and return an empty array.getagainst anullobject returnsnull.findFirstagainst an empty array returnsnull.
- Type mismatches throw. Operations don’t implicitly coerce — passing a number into a string slot, or a non-array into
filter’sarrayparameter, raises a runtime error and fails the sync. Use explicittoString/toNumber/toBooleanwhen you need a cast, so the conversion is visible in the chain. - Math has guard rails.
divideraises a runtime error on a zero denominator instead of producingInfinityorNaN. - Iteration context has a limit.
filterandmappopulate$item(and$parentwhen nested one level). Three or more nesting levels aren’t supported and raise a runtime error — flatten withflatMapinstead.
null or fails outright, the debugger pinpoints which operation introduced it. Use it before the configuration runs against real sync data.
Configuration errors that the type system can catch — an invalid operation type, a slot whose output can’t satisfy the parent’s expected type, a missing required parameter — show as inline validation on the affected slot in the admin UI; the configuration won’t save until they’re resolved. Backend resolution carries equivalent runtime checks as a backstop, raising explicit exceptions if an invalid configuration somehow reaches it.