What UI events are
Clio Operate screens are built from independent widgets, panels, and list views placed side by side on the same page. UI events let those pieces communicate in the browser. When something changes in one place, for example a work item is saved, a phase is progressed, or a document is generated, that action broadcasts a named event. Any widget that listens for that event refreshes itself.
The model has two halves: one place broadcasts an event, and other places subscribe to it. To make widget B refresh when action A happens, find the event that A broadcasts and add that event name to widget B's configuration. This article lists the built-in event names and shows where to configure them.
Who this article is for
This article is for Modellers who configure widgets on portals and want a widget to refresh when something changes elsewhere on the page. It covers the common case: subscribing a widget to built-in events through the UI. Narrowing a subscription to specific widgets is included as an advanced sub-topic. See Reduce the scope of a subscription.
UI events can do more than this first version documents. Broadcasting your own events, working with events in the IDE, and the full set of platform events are out of scope here, and may be documented in a later pass.
Top 15 events: quick reference
These are the events you will reach for most often. Select an event to jump to its section in the reference below. For most "keep my widget in sync with the matter" cases, listening to sharedo.updated and sharedo.core.case.forms.phase.phase-changed is enough.
| # | Event | Fires when |
|---|---|---|
| 1 | sharedo.updated |
Any work item is saved. The general "refresh me" signal |
| 2 | sharedo.core.case.sharedo-updated |
A work item is saved from the Add/Edit screen |
| 3 | sharedo.core.case.sharedo-created |
A new work item is created |
| 4 | sharedo.core.case.forms.phase.phase-changed |
A phase transition completes |
| 5 | sharedo.core.case.components.taskList.data-changed |
The task list changes (one of the most-used events) |
| 6 | Sharedo.Core.Case.Participants.Updated |
A participant is assigned |
| 7 | sharedo.core.case.keyfacts.updated |
Key facts are updated |
| 8 | sharedo.legal.updated |
Legal or matter data is updated |
| 9 | sharedo.core.case.components.related-documents.data-changed |
The related-documents set changes |
| 10 | sharedo.core.documents-changed |
Documents change (generation, filing, or removal) |
| 11 | sharedo.core.case.widgets.timeEntry.data-changed |
A time entry is created or deleted |
| 12 | sharedo.core.case.components.comments.comments-changed |
A comment is posted |
| 13 | Sharedo.Core.Legal.Finance.Refresh |
A finance operation completes (broad refresh) |
| 14 | sharedo.core.case.ownerChanged |
Ownership is taken or changed |
| 15 | sharedo.core.case.components.portfolioList.data-changed |
A portfolio changes |
Where to configure events
Modellers configure a widget's events in the page designer. You need Modeller access.
- In the Modeller, navigate to Forms and views > Portal editor.
- Select the portal, then select Design on the page that holds the widget.
- In the page designer, select the widget, then select its Edit (pencil) icon. The Edit widget blade opens.

Events are entered in a field called UI Events, found in the Advanced settings section of a widget's configuration (or its scope).
The UI Events field holds one or more event names separated by a semicolon (;). Each entry is trimmed, so spaces around the semicolon do not matter. The field's own help text lists a few common events to get you started.
sharedo.updated;sharedo.core.case.components.taskList.data-changed;sharedo.core.case.components.portfolioList.data-changedThis subscribes the widget to all three events, so it refreshes when any of them fire. For a single event, enter the name on its own with no separator.

Where the UI Events field lives, by widget
Not every widget can subscribe to events. Where the UI Events field appears depends on the widget:
- List views: select Edit scope on the list view widget to open the list view scope, then expand Advanced settings. You can reach the same scope from Forms and views > List views in the Modeller.
- Reports: select Edit report on the report widget, open the Customise tab, then expand the Advanced section.
- Other supported widgets, such as Key Facts and Key Dates: expand Advanced settings in the widget's own configuration.
Common configuration mistakes
-
Event names are case-sensitive and must match exactly. Enter each name character-for-character as listed below. Some built-in events are lowercase dotted (
sharedo.core.case.sharedo-updated), others are PascalCase (Sharedo.Core.Case.Participants.Updated). -
The UI Events field uses a semicolon (
;) to separate event names. Enter multiple events as one string separated by;. Each entry is trimmed, so spaces around the semicolon are fine. If a widget does not refresh when expected, check the separator first. - Listening to too many events affects performance. Each event a widget listens for can trigger a reload, so a long listen list means more reloading. Subscribe only to the events the widget needs.
Reduce the scope of a subscription (advanced)
By default, a widget responds to a matching event fired anywhere on the page. To narrow a subscription so that only a specific group of widgets responds, give those widgets the same Topic Name in their Messaging section (available from Clio Operate 7.10, currently on list views and reports). The Modeller describes the field as follows:
"Specify a topic name that is shared by two or more widgets to ensure that UI events are only processed by that group of widgets."
This is the mechanism behind interactive reports and list views, where selecting or filtering in one report filters another report or list on the same page. For example, a page has two report widgets and two list views. You want a filter on the first report to update only the list view beneath it, not the second pair. Give the first report and its list view a shared Topic Name, and give the second pair a different one. Enter the exact same name in every widget in the group, and remove any trailing space introduced by copying and pasting. For the full walkthrough, see Create interactive ShareDo reports and list views.
Reference: built-in UI events by area
Clio Operate broadcasts each event below when the described action happens. Add any of these names to a widget's UI Events field to refresh that widget at the right moment. This list is fuller than the everyday cases, so you can see the range of what is available; the events most Modellers use are in the quick reference above. Not every event below is something you would subscribe a widget to.
Admin and Modeller (configuration-time)
| Event name | Fires when |
|---|---|
admin-user-updated |
A user is created, cloned, or restored |
admin-plan-updated |
An execution-engine plan is saved |
admin-time-code-updated |
A time code is updated |
data-dictionary-reload |
A data-dictionary reload is triggered |
data-quality-rules-updated |
A data-quality rule is saved |
Sharedo.Core.Case.DataQuality.CallToActionDone |
A data-quality call-to-action is completed |
check-usages-entity-deleted |
An entity is deleted via the check-usage-and-delete screen |
importexport.jobcreated |
An import or export job is created |
data-table-upload-template-saved |
A data-table upload template is saved |
dataloading.load-and-bind |
Data-load widgets are told to reload |
Sharedo.Core.Case.Widgets.Admin.TagLibraryExplorer.LibrarySaved |
A tag library is saved |
modeller.assistant.activity-changed |
The Modeller assistant changes the active handler |
admin.processSelected |
An execution-engine process is selected |
admin.triggerSelected |
An execution-engine trigger is selected |
sharedo.core.case.sharedo-type-role-updated |
A sharedo-type role is added in the Modeller |
oAuthTokensChanged |
OAuth tokens change for a user service integration |
sharedo.nonworkdays.changed |
The admin non-work-days list changes |
*.trigger-add |
An admin "New" button is selected. Used with newButtonEvent, for example Sharedo.Core.Case.Widgets.Teams.trigger-add, sharedo.core.case.security-barriers.trigger-add, sharedo.core.case.permissions.trigger-add |
Analytics
| Event name | Fires when |
|---|---|
Sharedo.Core.Case.Analytics.Report.Changed |
An analytics report is saved or changed in admin |
Comments and audit
| Event name | Fires when |
|---|---|
sharedo.core.case.components.comments.comments-changed |
A comment is posted |
sharedo.core.case.components.audit.data-changed |
An audit entry is written, for example after a phase change |
Documents
| Event name | Fires when |
|---|---|
sharedo.core.case.components.related-documents.data-changed |
The related-documents set changes, for example after a phase change |
sharedo.core.documents-changed |
Documents change, for example after generation, filing, removal, or completing a document expectation |
admin-document-templates-updated |
A document template is saved in admin |
Finance and budgets
| Event name | Fires when |
|---|---|
Sharedo.Core.Legal.Finance.Refresh |
A finance operation completes. A broad signal to refresh the finance widgets |
Sharedo.Core.Case.Fees.Version.Updated |
A fee-structure version is saved |
Sharedo.Core.Finance.Features.Budgets.MaintainBudgets.budget-phase-changed |
A budget phase is progressed |
sharedo.core.finance.invoice-payment-transaction-created |
A payment is recorded against an unpaid invoice |
Sharedo.Core.Legal.ContractFinancials.Refresh |
Contract-financials or e-billing settings change |
Sharedo.Core.Legal.Coverage.Refresh |
Insurance or asset coverage changes |
Legal domain
| Event name | Fires when |
|---|---|
Sharedo.Core.Legal.Incidents.Updated |
An incident is updated |
Sharedo.Core.Legal.StatementOfWork.Updated |
Statement-of-work inception rules are saved |
Sharedo.Core.Case.RefersToManager.UpdatedData |
Instruction "refers to" data changes |
Notifications and channels
| Event name | Fires when |
|---|---|
sharedo.core.case.channel-config-changed |
A channel configuration is saved, for example an email attachment filing policy |
sharedo.core.case.notifications.list |
Used on the notification list's commands to reload the list after an action |
Participants and ODS (people and organisations)
| Event name | Fires when |
|---|---|
Sharedo.Core.Case.Participants.Updated |
A participant is assigned to a work item |
sharedo.core.case.components.participantCopy.update |
A participant (person) record is saved |
sharedo.core.case.participants.connections-updated |
A participant is removed |
sharedo.core.case.participants-reordered |
Participants are reordered |
sharedo.core.case.ods.connections-updated |
An ODS connection is unlinked or updated, for example employment |
sharedo.core.case.ods.entity-location-added |
A location is added to an ODS entity |
sharedo.core.case.ods.bankdetails.entitybankdetails.updated |
An ODS entity's bank details are updated |
sharedo.core.ods.teams.team-membership-updated |
A person's team membership changes |
sharedo.core.teams.members-changed |
A team's members change |
Portfolio and list views
| Event name | Fires when |
|---|---|
sharedo.core.case.components.portfolioList.data-changed |
A portfolio changes, for example contract details updated |
Screen chrome
| Event name | Fires when |
|---|---|
sharedo.ui.framework.fullScreenToggled |
Full-screen mode is toggled |
sharedo.ui.framework.mega-menu.favourites-changed |
A mega-menu favourite is added or removed |
Tasks and action plans
| Event name | Fires when |
|---|---|
sharedo.core.case.components.taskList.data-changed |
Anything affecting the task list changes (task saved or deleted, ownership or phase change). One of the most frequently used events in the platform |
sharedo.core.case.refresh-task-ribbon |
A task is created and the task ribbon should refresh |
sharedo.core.case.action-plan.updated |
An action plan is updated |
sharedo.core.case.action-plan.changing / .changed
|
Fired immediately before and after an action-plan change |
Time recording
| Event name | Fires when |
|---|---|
sharedo.core.case.widgets.timeEntry.data-changed |
A time entry is created or deleted |
Sharedo.Core.TimeEntries.dataChanged |
The time-entry radar refreshes its data |
Work item (matter or case) lifecycle
| Event name | Fires when |
|---|---|
sharedo.updated |
Any work item is saved. The general "refresh me" signal that most lists use |
sharedo.core.case.sharedo-updated |
A work item is saved from the Add/Edit screen |
sharedo.core.case.sharedo-created |
A new work item is created (fires alongside sharedo-updated) |
sharedo.core.case.forms.phase.phase-changed |
A phase transition completes successfully |
sharedo.core.case.keyfacts.updated |
The work item's key facts are updated |
sharedo.core.case.ownerChanged |
Ownership of a work item or task is taken or changed |
sharedo.core.case.sharedo-aspect-model-loaded |
The Add/Edit screen finishes loading its aspect and participant data |
sharedo.legal.updated |
Legal or matter data is updated (used on matter portals) |
Worked examples
Refresh a Key Facts widget when the phase changes
You have a Key Facts widget on a matter page that should re-read its data whenever the matter changes phase. In the widget's Advanced settings, enter the phase event in the UI Events field:
sharedo.core.case.forms.phase.phase-changedTo also refresh on any save, add another event separated by a semicolon (;):
sharedo.core.case.forms.phase.phase-changed;sharedo.updatedChecklist: a widget does not refresh
- Is the event name spelt exactly right, including capitalisation?
- In the UI Events field, are multiple event names separated by a semicolon (
;)? - If you are using a Topic Name to scope, do all the widgets in the group share the exact same Topic Name, with no trailing spaces?
- Does the action you expect to trigger the refresh actually fire the event? Check the tables above. Some actions that seem like they should fire an event do not, and the reverse is also true.