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”
| Case | What it looks like in the editor |
|---|---|
| Unbound | The value cell is empty — nothing is configured |
| Bound to an empty value | You explicitly picked the empty value, or typed a blank literal |
| Empty at runtime | Bound 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
| Input | Unbound or bound to an empty value | Empty at runtime |
|---|---|---|
| Required | The call fails outright | The call fails outright |
| Optional | The input is not sent; the Actionflow reads an empty value | An 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
| Position | Legacy API | Current API |
|---|---|---|
| Query param | The param is not sent | The param is not sent |
| Header | The header is not sent | The header is not sent |
| Path param | The URL cannot be assembled and the call fails | The 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
| Case | Legacy API | Current API |
|---|---|---|
| Optional field left empty | The field is not sent | The field is not sent |
| Required field left empty | The call fails and the request is never sent | null is sent |
| Binding resolves to empty at runtime | The field is not sent | null is sent |
| Field declares its own default | The field’s own default is sent | The field’s own default is sent |
| Empty text | "" is sent | "" is sent |
| Empty array | [] is sent | [] is sent |
| Empty form field | The field is not sent | The 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
nullon a required field, do not rely on leaving it empty — supply the value at the call site or give it a default.