Skip to contentSkip to navigationSkip to topbar
On this page

Unified Profiles Container (Public Beta)



Overview

overview page anchor

The Unified Profiles container is the parent container for all Unified Profiles-related UI components:

  • Customer header
  • Customer details
  • Customer history
  • Custom highlights (provided by Agent Copilot)

The Unified Profiles container is turned off by default, meaning that none of these UI components are visible to your agents until you turn on the Unified Profiles container.

In the agent desktop components hierarchy, the Unified Profiles container replaces Panel2 when enabled.

Use Unified Profiles container capabilities(link takes you to an external page) to programmatically customize your agent experiences in Unified Profiles. With the UnifiedProfilesContainer.ProfileTabs component, you can:

  • Add a new custom tab
  • Update the tab display name
  • Remove an existing tab by child key
  • Update the order (index) of the built-in tabs
The Unified Profiles container in Flex UI.

All normal programmability actions (add, remove, replace) are also available for this component and its content.

Visit Flex's programmability docs to learn more about how to update Flex UI programmatically.

Using the Unified Profiles container as a tabbed container

using-the-unified-profiles-container-as-a-tabbed-container page anchor

Additionally, you can use the Unified Profiles container solely as a tabbed container for the Flex UI, without adopting any of the Twilio-provided Unified Profiles UI components. We recommend this over creating your own tabbed container, as this approach makes it easier to enable Twilio-provided UI components (like Customer details or Customer history) going forward. To do so, follow the documentation below to add your custom tabs.

Maintaining compatibility for your Flex UI plugins

maintaining-compatibility-for-your-flex-ui-plugins page anchor

If you're not going to use the Unified Profiles container now, there are steps you can take to make Unified Profiles or other tabbed content on the right side of the Flex agent desktop easier to adopt in the future.

If you're customizing the Panel2 area of the agent desktop, we recommend putting your customizations into the CRMContainer component (and not replacing the whole Panel2). This provides future flexibility to switch to the Unified Profiles container and allows your customizations to automatically move to the In-house tab.


Turn on the Unified Profiles container

turn-on-the-unified-profiles-container page anchor

After you've connected your Unified Profiles space, you need to turn on the Unified Profiles container, which is off by default. This allows your agents to use the Unified Profiles-related agent UI.

To turn on the Unified Profiles container:

  1. In Console, navigate to Flex > Unified Profiles.
  2. Toggle on Enable Unified Profiles container in Flex UI to turn on the Unified Profiles container.

In the agent desktop components hierarchy, enabling the Unified Profiles container will apply these changes:

1
2
// With Unified Profiles container off. Any customizations outside of this CRMContainer will be replaced if you turn on the Unified Profiles container.
3
4
<Panel2>
5
<crmContainer></crmContainer>
6
</Panel2>
7
8
// With the Unified Profiles container on. Custom content inside the CRMContainer is moved into a tab within the Unified Profiles container.
9
10
<Panel2>
11
<UnifiedProfilesContainer>
12
<ProfileTabs>
13
<InHouseTab>
14
<crmContainer></crmContainer>
15
</InHouseTab>
16
</ProfileTabs>
17
</UnifiedProfilesContainer>
18
</Panel2>
19

If you had previously placed Flex UI customizations onto the Panel2 level (and not in the CRMContainer level), your customizations are hidden when the Unified Profiles container is on.

  • If you have agent UI customizations for your Flex instance, test the effect of turning on the Unified Profiles container in your staging environment or during periods of reduced activity first.
  • If enabling the Unified Profiles container unexpectedly hides any of your customizations, update your plugin code to attach the customizations to either the CRMContainer, which becomes the In-house tab, or add them as a custom tab on the Unified Profiles container.

If turning on the Unified Profiles container has any adverse effects on your Flex agent UI, you can use the same toggle as above to turn it off again. Note that Unified Profiles UI components such as Customer details and Customer history are not displayed when the Unified Profiles container is off.


Unified Profiles container programmability

unified-profiles-container-programmability page anchor

The Unified Profiles container has the following child keys:

NameKeyNotes
Alert Banneralert
  • Can only be removed/styled
Loading Viewloading-view
  • Can only be removed/styled
Profile Header and Link Menuprofile-header-and-link-menu
  • Can only be removed/styled

  • Removing this key affects the replace/unlink profiles experience
Profile Highlightsprofile-highlights
  • Can only be removed/styled
Profile Connector Tabsprofile-connector-tabs
  • Can only be removed/styled
Profile Not Found Viewprofile-not-found-view
  • Can only be removed/styled

  • Removing this key affects the profile search experience
Profile Unlink Modalprofile-unlink-modal
  • Can only be removed/styled

  • Removing this key affects the replace/unlink profile experience
Search Viewsearch-view
  • Can only be removed/styled

  • Removing this key affects the profile search experience

Use ProfileHighlights to update the highlights component in your container.

Profile Highlights has the following child keys:

NameKeyNotes
Highlights Iconhighlights-icon
  • Can only be removed/styled
Highlights Titlehighlights-title
  • Can be renamed with the title default prop in the profileHighlightsTitle component

  • Can only be removed/styled
Highlights Chevronhighlights-chevron
  • Can only be removed/styled
Highlights Summaryhighlights-summary
  • Can only be removed/styled

You can use ProfileHeader to update the profile header. For example:

  • Flex.UnifiedProfilesContainer.ProfileHeader.Content.remove("header-avatar");

Profile Header has the following child keys:

NameKeyNotes
Header Avatarheader-avatar
  • Can only be removed/styled
Header Textheader-text
  • Can only be removed/styled

  • Contains the profile header text (profile name and subtitle)

  • Additional configuration handled in the Twilio Console

You can use ProfileHeaderText to update the profile header name and subtitle. For example:

  • Flex.UnifiedProfilesContainer.ProfileHeaderText.Content.remove("header-name");
  • Flex.UnifiedProfilesContainer.ProfileHeaderText.Content.remove("header-subtitle");

Profile Header Text has the following child keys:

NameKeyNotes
Header Nameheader-name
  • Can only be removed/styled
Header Subtitleheader-subtitle
  • Can only be removed/styled
  • Additional configuration handled in the Twilio Console

Reorder an In-house tab first and rename it

reorder-an-in-house-tab-first-and-rename-it page anchor

To reorder an In-house tab first in the container and rename it, add the following code to your plugin:

1
Flex.UnifiedProfilesContainer.ProfileTabs.defaultProps.crmViewTabProps = {
2
label: "Custom CRM",
3
index: 1
4
};
5
6
Flex.UnifiedProfilesContainer.ProfileTabs.defaultProps.timelineViewTabProps = {
7
index: 2
8
};
9
10
Flex.UnifiedProfilesContainer.ProfileTabs.defaultProps.profileViewTabProps = {
11
index: 3
12
};

Note that you must set all container tabs together to reorder them.

Depending on your use case, you might want to add a custom tab alongside the tabs provided out of the box, giving you more control over your experience.

To create a custom tab, first create a new Tab component in your plugin code:

1
import React from "react";
2
//IMPORTANT: The top most element in your component must be the <Tab> from "@twilio/flex-ui", or the custom tab will not work.
3
import { Tab } from "@twilio/flex-ui";
4
5
export const CustomUnifiedProfilesTab = (props: any) => (
6
<Tab key={props.label} uniqueName={props.uniqueName} data-testid="my-new-tab" label={props.label}>
7
<div style={{ backgroundColor: props.color, height: 80, width: 80 }} />
8
//Add any additional content you want. The div above this creates an 80X80 pixel box, colored by the prop, so that you can more easily visualize the content area of your new tab.
9
</Tab>
10
);
11

Next, import the component and add it to the ProfileTabs:

1
import { CustomUnifiedProfilesTab } from "./MyCustomTabComponent";
2
3
//Other plugin boilerplate
4
5
6
Flex.UnifiedProfilesContainer.ProfileTabs.Content.add(
7
<CustomUnifiedProfilesTab
8
label="New Tab"
9
uniqueName="Unique Name 1"
10
key="New Tab"
11
color="red"
12
index={0}
13
/>
14
);

This displays a new custom tab in the far-left (first) position of all of the tabs, with a red 80x80 pixel square. You can add whatever custom properties you want to pass in data, customize the look and feel, and more.

Need some help?

Terms of service

Copyright © 2025 Twilio Inc.