Skip to Content

Empty Values

“No value” can come from three different places, and Momen does not treat them identically. When you integrate a third-party endpoint, omitting a field and sending null are two different outcomes. This page lists what actually happens in each position.

Three kinds of “no value”

CaseWhat it looks like in the editor
UnboundThe value cell is empty — nothing is configured
Bound to an empty valueYou explicitly picked the empty value, or typed a blank literal
Empty at runtimeBound to a variable, field, or upstream output that happens to have no value

Unbound and bound to an empty value are the same thing almost everywhere — Momen does not distinguish them. The case that needs separate thought is empty at runtime: the binding looks complete in the editor, and only the actual run reveals whether a value is there.

Component properties and styles

The property takes an empty value and the component renders as if it had none. Nothing throws, and the previous value is not kept.

Conditional data behaves the same way: when no branch matches, the whole property takes an empty value. See Configure Conditional Data.

Data-source filters

The branch list of a filter ends with the Default branch, whose condition always holds, so one filter always applies — “no branch matched” cannot happen.

Keep the Default branch last. Moving it up short-circuits every branch below it; if it is removed altogether (by a tool or a broken migration, say), the runtime falls back to the last branch in the list — the query still runs, but the filter that applies may not be the one you expect.

An empty filter value does not filter records out by itself; see Query and Bind Data.

Actionflow inputs

InputUnbound or bound to an empty valueEmpty at runtime
RequiredThe call fails outrightThe call fails outright
OptionalThe input is not sent; the Actionflow reads an empty valueAn empty value is sent

A missing required input fails loudly and shows up in the runtime logs. If you want “fall back to a default when nothing is passed”, make the input optional and assign the default inside the Actionflow after a null check.

API requests

These rules apply to page calls, the API node in an Actionflow, and AI Agent tools alike. Legacy API below means a third-party API configured before the editor rebuild and not yet migrated — it has no collections, inputs, or response states. For the current API, see Integrate a Third-Party API.

Query params, headers, and path params

PositionLegacy APICurrent API
Query paramThe param is not sentThe param is not sent
HeaderThe header is not sentThe header is not sent
Path paramThe URL cannot be assembled and the call failsThe call fails with an error naming the path parameter that has no value

An empty path param is a configuration error. Guarantee a value on the caller side, or give the param a default.

Body fields

CaseLegacy APICurrent API
Optional field left emptyThe field is not sentThe field is not sent
Required field left emptyThe call fails and the request is never sentnull is sent
Binding resolves to empty at runtimeThe field is not sentnull is sent
Field declares its own defaultThe field’s own default is sentThe field’s own default is sent
Empty text"" is sent"" is sent
Empty array[] is sent[] is sent
Empty form fieldThe field is not sentThe field is not sent
⚠️

This is the difference that bites during migration: leave the same field empty and the legacy API omits it, while the current API sends null for any field that carries a value configuration (required fields and fields bound to an empty value included). WeChat, Alipay, and most Chinese gateways distinguish missing field from field is null — re-check the endpoint’s documentation after migrating a legacy API.

Confirm what actually goes out

On the current API, open the Test panel, clear the input you want to verify on the Input page, then select Preview request. The method, URL, headers, and body shown there are exactly what will be sent, so you can see directly whether a field is omitted or sent as null.

The third-party API entries in the runtime logs show the body that actually went out: a field dropped for being empty does not appear there, so you can read the log against the endpoint’s own error.

Recommendations

  • Use the current API when you need to send an explicit null. The legacy API cannot send one at all — it can only send a value or omit the field.
  • To keep a field out of the request, make it optional and make sure the caller passes nothing.
  • “Send an empty string” and “omit the field” are different requirements. Express the first one with empty text, not by leaving the cell blank.
  • When an endpoint rejects null on a required field, do not rely on leaving it empty — supply the value at the call site or give it a default.
Last updated on