# messages (/product/modules/messages)



`messages` is the tenant's own wording: the third layer over the shipped copy, live without a redeploy. "Order" becomes "Booking" here.

## Owns

`messages`: one row per language and namespace, the overrides as a document of dotted paths.

## Two surfaces, one writer

The copy admin at `/text` lists every shipped key of one namespace in one language, the shipped string as the input's placeholder and the tenant's override as its value. Clearing a row restores the base. An override whose placeholders differ from the shipped string's is rejected, so a reworded label cannot drop a count it interpolates.

**Text edit mode** reaches the same layer from any admin page. With the mode armed, every string that came from the catalogue is identifiable in place; hovering outlines it and names its path, and Alt-clicking opens an editor that writes the override for exactly that path. The identity travels inside the string itself as an invisible prefix, so no component has to carry an attribute.

Both, and the assistant, write through one database function that merges per path, so an admin's edit and an assistant's write to the same namespace never replace each other.

## Chat tools

`manage_copy`: one namespace of one language, as a flat map of paths.

## Permissions

`messages.manage`.

## Switched off

Never. Every project links it at provisioning.
