Form Layouts
Every form in the application renders from a layout definition. If no one has written one, it renders its built-in default. This page is where a layout is written, and — just as importantly — where it is taken away again.
Where to find it
| Screen | Where it lives | What you need |
|---|---|---|
Form layouts — /admin/forms | Settings → Data model → Form Layouts | Permission to read form layouts; saving a layer needs permission to customise them, and the global layer is super-admin only |
Three layers, most specific wins
A layout can be saved at three levels, and a form uses the most specific one that exists:
| Save for | Who gets it |
|---|---|
| Just me | only you |
| Space | everyone in the space who has no personal layer |
| Global | every space that has no space layer (super-admin only) |
Every row carries a badge saying what is actually in force for you right now — Personal override, Inheriting from Space, Inheriting from Global, or Built-in default. The Layers column shows which levels have a definition at all, so you can see at a glance that a form is customised somewhere even when you are not the one seeing the customisation.
Resetting a layer
Each layer has its own Reset. Resetting does not restore a factory layout — it clears that layer, and the form starts inheriting again from the layer beneath it. The confirmation says exactly that: layer cleared — inheriting again.
This is the honest way out of a customisation that went wrong: you are never left having to reconstruct the original by hand.
Locking a layer
A space or global layer can be locked. A locked layer can only be overwritten by a super-admin, and the row says so: this layer is locked — only a super-admin can overwrite it. Use it for a layout that has been agreed and should not drift.
Writing a definition
The definition is edited as JSON. If what you type is not valid JSON, the page says so before anything is sent — the message is the definition is not valid JSON, and nothing is saved.
Layouts that came from a template
If a layer's value arrived from an applied template, the row is badged From template. Overriding it asks you to confirm first, because of what the confirmation says: overriding detaches it — template updates will no longer change it. Say yes if that is what you want; say no if you would rather keep following the template. See Templates.
Adding a layout for a form that has none
Press + Add layout and give the form's key — for example contact_edit. Until a layout exists, the empty state is not an error: it reads no form layouts yet — forms render their built-in defaults.