Use labels to differentiate multiple conversations between a pair of addresses
With XMTP, a pair of blockchain account addresses can have multiple ongoing conversations. In addition, with XMTP, an app can display all conversations a user has, regardless of the app they used to create the conversation. This concept is known as an interoperable inbox.
Alternatively, an app can implement conversation IDs and metadata to filter conversations. For example, a developer can choose to assign app-specific conversation IDs and metadata to filter and display only conversations created by their app.
Apps that assign conversation IDs in this way have an effect on apps that use an interoperable inbox model. For example, a user might see multiple separate and ongoing conversations they are having with the same address, but originating from contexts with different conversation IDs.
If you're using an interoperable inbox model in your app, you can display conversation labels based on conversation IDs and metadata to help clarify the user experience.
When providing an interoperable inbox, display only one conversation per address pair and conversation ID combination. This ensures that the two addresses exchange messages using the same conversation topic.
To illustrate this scenario, let's take a look at a couple of conversations between amal.eth and bola.eth.
amal.eth and bola.eth have an ongoing conversation using apps that filter conversations to display only conversations that use a conversationId of lens.dev/dm. Here's what amal.eth's inbox might look like in one of these apps:
amal.eth and bola.eth also have a separate and ongoing conversation using App OpenTea that filters conversations to display only conversations that use a conversationId of opentea.xyz/nft. Here's what amal.eth's inbox might look like in this app:

Let's then take a look at App ABC123, which doesn't filter by conversation ID and displays all conversations for a user. In this case, here's what amal.eth's inbox might look like in this app:

This scenario may display a confusing user experience for amal.eth, surfacing two separate conversations they are having with the same address, bola.eth.
To help distinguish the multiple conversations amal.eth is having with the same address, you can implement labels, based on conversation IDs and metadata, that display for each conversation.

To use labels to differentiate multiple conversations between a pair of addresses:
Get the conversationId value to display as a label.
For example:
// To get the conversationId
const conversationId = conversation?.context?.conversationId
// Example conversationId = app.abc/dm/0x123-0x456
const domain = conversationId.split("/")[0]
// In this case, the domain is app.abc, which provides the conversation label
Learn more
To learn more about conversation topics, see XMTP V2 topics and message presentation flow.