UI Customization

Change the layout and add custom content for all of the team and services in your organization.

Introduction

The default layout of the teams and services pages suit most organizations, but some may want to change what content appears for teams or services, or change the positioning of it. Customizing these pages allows you to select which widgets are visible and the layout of those widgets. Any changes made apply for all teams and services on your account.

Only administrators can customize their account's layouts via the UI Customization page under Settings.

Customizing Layout

From the UI Customization page, you have the option of customizing the content for both the teams and services pages on you account.

For either option, to edit page content and layout, enter Edit mode by clicking the Edit Layout button.

Edit Layout Button

Repositioning

From the Edit mode, you can toggle the visibility of widgets. You can also drag and drop them to rearrange and resize them.

Edit Layout View

Similar to widgets, when customizing the services page you can toggle the visibility of tabs and drag and drop them to rearrange the tab order.

Edit Service Tab Order

Disabling

Sometimes, a widget is not useful to your organization's teams or services. In those cases, you can disable the widget by toggling the visibility of the widget.

Toggle Widget View

To re-enable the widget, you can find the disabled widget in the Hidden Items section at the bottom of the page.

Hidden Items View

Previewing

You can (and should) preview your layout as a particular team or service to ensure that the new layout does not look too compressed and shows information as you expect by selecting a team or service and clicking the Preview button.

Preview Selection View

The preview modal shows the view as it will appear on the selected team or service page. When previewing a service, it will show the preview of whatever tab you currently have selected.

Preview Result View

Canceling and Resetting

If you want to revert to your previously saved state, discarding your updates since you last saved, you can do so by pressing the Cancel button.

Cancel Button

If you want to discard all of your changes, including custom widgets that you or others might have created, you can press the Reset to Default button. This will revert all changes and remove all saved configurations.

Reset to Default Button

Saving

Once you are happy with the new layout, you can exit Edit mode by pressing the Save button.

Save Layout View

Once you are finished editing the view, the changes will persist on your account for all users.

Adding Widgets

In addition to rearranging and hiding widgets, you can add widgets to the page for all of your teams and services. Sometimes these widgets will be the same for each team/service, and other times you can use liquid templates to allow each resources widget to render different content.

To begin, press the New Widget button.

New Widget Button

You will then be offered a choice of what type of widget to add.

Widget Selection

Markdown Widgets

Markdown widgets allow embedding any markdown content onto your team or service pages. This can be useful for announcements, onboarding, or documentation.

Enter the title of the widget card, an optional description, and the content (which can use liquid templates for custom content per resource).

New Widget Modal

Custom Widgets

Custom widgets allow embedding content from external websites into your resource's page.

There are several caveats on what types of websites can be rendered in a custom widget. See the explanation about what can be included.

Enter the title of the widget card, an optional description, the URL (which can use liquid templates for custom content per resource), and the minimum height of the content.

New Widget Modal

Liquid Templating

A custom widget's URL field supports liquid templating. When templates are evaluated, they receive a context object. This allows the action to behave dynamically based on the information in the resource's context.

Context fields are accessed using Liquid's double handle bar notation: {{ identifier }}. When evaluated this would be replaced by the matching value in the context. Services and teams have different context fields.

The Team context contains the following properties:

Description
team.hrefA link to the HTML page for the team.
team.idThe unique identifier for the team.
team.nameThe display name of the team.
team.contactsAn object representing the contacts for the team.
team.managerAn object representing the manager of the team.
team.slugThe URL friendly name of the team.
team.service_statAn object representing the stats about the team's service statistics.
team.tagsAn object representing the tags for the team.

Filters

In addition to Liquid’s standard filters, we also support:

contacts_by_display_name

Find contacts by their display name

  • Input: {{ team | contacts_by_display_name: 'pagerduty' }}
  • Output: \[contact_1, contact_2\]
tag_value

Returns the value of the first matching tag.

  • Input: {{ team | tag_value: "version" }}
  • Output: "3.2.1"
tag_values

Returns the array of matching tag values.

  • Input: {{ team | tag_values: "ip" }}
  • Output: \["1.1.1.1", "2.2.2.2"\]

This can be combined with the standard filters to extract specific values:

  • Input: {{ service | tag_values: "ip" | last }}
  • Output: "1.1.1.1"

The Service context contains the following properties:

Description
service.hrefA link to the HTML page for the service.
service.idThe unique identifier for the service.
service.nameThe display name of the service.
service.ownerAn object representing the owner of the service.
service.slugThe URL friendly name of the service.
service.tagsAn object representing the tags for the service.
service.toolsAn object representing the tools for the service.
service.propertiesAn object containing all custom properties for the service via their identifier e.g. service.properties.property_value

Filters

In addition to Liquid’s standard filters, we also support:

tag_value

Returns the value of the first matching tag.

  • Input: {{ service | tag_value: "version" }}
  • Output: "3.2.1"
tag_values

Returns the array of matching tag values.

  • Input: {{ service | tag_values: "ip" }}
  • Output: \["1.1.1.1", "2.2.2.2"\]