Validated calculations, dependency-aware formulas and server-calculated form values.
Build calculations from validated inputs, connect their dependencies and recalculate results before saving. Explore the workspace, then try five complete workflows.
Write a formula with a, b and c. Inspect its references, allowed functions and validation without saving anything.
round({a}*{b}*(1-pct({c})),2)
Calculate rounded tax and discounts in cents. Change an input to see the complete calculation update.
{price}*{quantity}
round({subtotal}*pct({discount}),0)
{subtotal}-{discount_amount}
round({net}*pct({tax}),0)
{net}+{tax_amount}
subtotal
discount_amount
net
tax_amount
total
Use conditions for volume discounts and free shipping. A single input can update several dependent totals.
if({quantity}>=20,15,if({quantity}>=10,10,0))
round({price}*{quantity}*(1-pct({discount_rate})),0)
if({net}>=50000,0,{shipping})
{net}+{delivery}
discount_rate
delivery
A zero target is valid here: the conditional formula skips division and returns zero. Progress stays between 0% and 100%.
max({target}-{completed},0)
if({target}>0,clamp(round({completed}/{target}*100,2),0,100),0)
and({target}>0,{completed}>={target})
remaining
progress
complete
Calculate profit and margin from the same inputs. Revenue can be zero without producing a division error.
{revenue}-{cost}
if({revenue}>0,round({profit}/{revenue}*100,2),0)
{profit}>0
profit
margin
profitable
Combine capacity limits, thresholds and whole-number rounding to calculate the next purchase order.
max({stock}-{reserved},0)
max({target}-{available},0)
ceil({shortfall}/{pack})
{packs}*{pack}
available
shortfall
packs
purchase
These are actual bound FLEX fields. The disabled total updates live and is recalculated again when the form is dehydrated for saving. Invalid inputs cannot produce a saved total.
See which outputs depend on each other and what actually changes when an input changes. Cycles are rejected before evaluation.
round({subtotal}*pct({rate}),2)
{subtotal}+{tax}
Execution order: subtotal → tax → total
The input contract accepts integers from 0 to 100. Invalid payloads expose no calculated outputs. A forged result is recalculated from the inputs.
{"input":20}