A save model should support commonly-held user expectations as to when data is saved. Sometimes users expect to save their data by explicitly pressing the Save button. Sometimes they expect that their data is implicitly saved when they exit a page, such as when moving from tab to tab.

Data is saved to one of two types of store: transient or persistent.

Implicit Saves to Transient Store

An an implicit save is generally to a transient store. An implicit save assumes the user's expectation is that data is automatically saved after an action is completed. With an implicit save, for example, the user would not need to click a Save button.

Implicit Save scenarios

Following are four scenarios for choosing an implicit save model.

The following image is an example of a state change on a primary object.

Illustration of changing the state of a primary objects

Explicit Saves to Persistent Store

An explicit save provides an obvious outcome directed by a specific, unambiguous user action, such as clicking a Save button.

It is very important to use clear, consistent, and unambiguous UI labels on explicit Save buttons.

Button Labels For Explicit Saves to a Persistent Store

Use the following button labels for the interactions listed when saving explicitly to a persistent store.

Other Write Actions to a Persistent Store

Other, often-used labels that write to a persistent store include Create, Create Like, New, and Register. Use Submit, rather than Create or Finish, in step-by-step task flows (such as wizards and guided processes), or two-step Create dialogs that initiate a work flow.

The following image depicts save button labels, and the order of Save and Cancel buttons in addition to others.

Depiction of save button order options. The groupings are as follows: Done, presented by itself; buttons labelled Complete and Cancel; A button that reads Save and Close, along with a Cancel button; three buttons reading Save, Revert and Cancel; and three buttons reading Save, Submit, and Cancel.

Explicit Saves to Transient Store

There are some scenarios in which an explicit save writes to a transient store. Sometimes, attribute values are best presented in an "interim" step, such as a drill-down or popup. For example, the user initiates an action in a field and gets a popup; after selecting an option in the popup, the user clicks OK to dismiss the popup and commit the data to its corresponding field in the calling page. At that point, any user data entered in the popup is written to a transient store, along with all other user data that was on the calling page when the user clicked OK.

Rarely does the user have the expectation that user data provided in a popup, for example, should precede all other user data for that page to any persistent store. Once the user has completed the transaction with all the attributes of objects represented in the page and executed an explicit save, then all attribute values are written together to a persistent store.

Button Labels for Explicit Saves to a Transient Store

Use clear, consistent, and unambiguous labels for buttons that both write any user data to a transient store and dismiss that UI, and return the user to the calling page. Use the labels in the following circumstances:

Avoid the ambiguous use of Close in this UI as it would initiate a write, which may not be consistent with every user's expectation.