Skip to content

Commit 64cbcf8

Browse files
add docs for BSUID
1 parent e33d9d0 commit 64cbcf8

11 files changed

Lines changed: 265 additions & 24 deletions

File tree

articles/communication-services/concepts/advanced-messaging/whatsapp/template-messages.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,10 @@ var sampleTemplate = new MessageTemplate(templateName, templateLanguage);
8080
For detailed examples and template supported scenarios by Advanced Messages SDK, see:
8181
- [WhatsApp Template Quickstart](../../../quickstarts/advanced-messaging/whatsapp/send-template-messages.md)
8282

83+
## Authentication templates and BSUIDs
84+
85+
Authentication templates that use one-tap, zero-tap, or copy code flows **require a phone number** as the recipient. You can't use a business-scoped user ID (BSUID) to send these authentication template types. All other template types support both phone numbers and BSUIDs. For more information about BSUIDs, see [WhatsApp usernames and BSUIDs](./whatsapp-usernames-bsuid.md).
86+
8387
## Next steps
8488

8589
- [Get started with advanced communication messages SDK](../../../quickstarts/advanced-messaging/whatsapp/get-started.md)

articles/communication-services/concepts/advanced-messaging/whatsapp/whatsapp-overview.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,13 @@ The key features of Azure Communications Services Advanced Messaging for WhatsAp
2929
* Reply to user’s inquiries and trigger automation using Azure Event Grid notifications.
3030
* Receive delivery reports for messages sent, delivered, and read.
3131

32+
## WhatsApp usernames and business-scoped user IDs
33+
34+
WhatsApp is launching usernames in 2026, allowing users to display a username instead of their phone number. To support this change, Meta introduces a new identifier called the **business-scoped user ID (BSUID)**. BSUIDs begin appearing in webhook payloads and can be used as recipient identifiers in send requests.
35+
36+
> [!IMPORTANT]
37+
> The `from` and `to` fields in Advanced Messaging events may now be empty when a user hides their phone number. Update your event handlers to use the new `fromBSUID` and `toBSUID` fields. For more information, see [WhatsApp usernames and BSUIDs](./whatsapp-usernames-bsuid.md).
38+
3239
## Next steps
3340

3441
To get started with Advanced Messaging for WhatsApp, see:
Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
---
2+
title: WhatsApp usernames and business-scoped user IDs (BSUID)
3+
titleSuffix: An Azure Communication Services concept document
4+
description: Learn about WhatsApp usernames and business-scoped user IDs (BSUIDs) and how they affect messaging in Azure Communication Services.
5+
author: gelli
6+
services: azure-communication-services
7+
ms.author: gelli
8+
ms.date: 04/01/2026
9+
ms.topic: conceptual
10+
ms.service: azure-communication-services
11+
ms.subservice: advanced-messaging
12+
---
13+
14+
# WhatsApp usernames and business-scoped user IDs (BSUID)
15+
16+
WhatsApp is launching usernames in 2026. Usernames are an optional feature that allows WhatsApp users to display a username instead of their phone number. To support this change, Meta introduces a new identifier called the **business-scoped user ID (BSUID)** that uniquely identifies a WhatsApp user within a specific business portfolio.
17+
18+
This article explains what BSUIDs are, how they affect Azure Communication Services Advanced Messaging, and how to prepare your integration.
19+
20+
[!INCLUDE [Survey Request](../../../includes/survey-request.md)]
21+
22+
## What is a BSUID?
23+
24+
A business-scoped user ID (BSUID) is a unique, opaque identifier that Meta assigns to a WhatsApp user within a specific business portfolio. BSUIDs are:
25+
26+
- **Automatically generated** by Meta for each user-portfolio pair.
27+
- **Prefixed with a country code**: The format is `{ISO 3166 alpha-2 country code}.{up to 128 alphanumeric characters}`, for example, `US.13491208655302741918`.
28+
- **Unique per business portfolio**: A BSUID is scoped to an individual business portfolio. The same WhatsApp user has a different BSUID for each business portfolio they interact with.
29+
- **Stable across username changes**: If a user changes their username, their BSUID remains the same.
30+
- **Regenerated on phone number change**: If a user changes their phone number, a new BSUID is generated.
31+
32+
> [!IMPORTANT]
33+
> When using BSUIDs in API requests, use the entire BSUID value including the country code and period. Omitting or modifying any part of the BSUID causes the request to fail.
34+
35+
## Impact on outbound messages
36+
37+
The existing `to` field in the Send Notification API now accepts either a phone number or a BSUID. The service automatically detects the format and routes accordingly. No new fields are needed.
38+
39+
**Send to a phone number (existing behavior):**
40+
41+
```json
42+
{
43+
"channelRegistrationId": "<channel-registration-id>",
44+
"to": ["+14255550199"],
45+
"kind": "text",
46+
"content": "Hello!"
47+
}
48+
```
49+
50+
**Send to a BSUID:**
51+
52+
```json
53+
{
54+
"channelRegistrationId": "<channel-registration-id>",
55+
"to": ["US.13491208655302741918"],
56+
"kind": "text",
57+
"content": "Hello!"
58+
}
59+
```
60+
61+
## Impact on inbound messages
62+
63+
When a WhatsApp user sends a message to your business, the [AdvancedMessageReceived](../../../../event-grid/communication-services-advanced-messaging-events.md#microsoftcommunicationadvancedmessagereceived-event) event now includes a new `fromBSUID` field containing the sender's BSUID.
64+
65+
If the user has adopted a username and their phone number isn't available, the existing `from` field may be empty. Both fields coexist when the phone number is available.
66+
67+
**Phone number available:**
68+
69+
```json
70+
"data": {
71+
"from": "14255551234",
72+
"fromBSUID": "US.13491208655302741918",
73+
"to": "{channel-id}",
74+
"content": "Hi there!",
75+
"channelType": "whatsapp",
76+
"messageType": "text"
77+
}
78+
```
79+
80+
**Phone number hidden (username adopted):**
81+
82+
```json
83+
"data": {
84+
"from": "",
85+
"fromBSUID": "US.13491208655302741918",
86+
"to": "{channel-id}",
87+
"content": "Hi there!",
88+
"channelType": "whatsapp",
89+
"messageType": "text"
90+
}
91+
```
92+
93+
> [!CAUTION]
94+
> The `from` field may now be empty or null. Do not assume this field always contains a phone number.
95+
96+
## Impact on delivery status events
97+
98+
The [AdvancedMessageDeliveryStatusUpdated](../../../../event-grid/communication-services-advanced-messaging-events.md#microsoftcommunicationadvancedmessagedeliverystatusupdated-event) event now includes a new `toBSUID` field containing the recipient's BSUID.
99+
100+
If the message was sent to a BSUID, the existing `to` field may be empty.
101+
102+
**Sent to a phone number:**
103+
104+
```json
105+
"data": {
106+
"from": "{channel-id}",
107+
"to": "14255550199",
108+
"toBSUID": "US.13491208655302741918",
109+
"status": "Delivered",
110+
"channelType": "whatsapp",
111+
"messageId": "22222222-2222-2222-2222-222222222222"
112+
}
113+
```
114+
115+
**Sent to a BSUID:**
116+
117+
```json
118+
"data": {
119+
"from": "{channel-id}",
120+
"to": "",
121+
"toBSUID": "US.13491208655302741918",
122+
"status": "Delivered",
123+
"channelType": "whatsapp",
124+
"messageId": "22222222-2222-2222-2222-222222222222"
125+
}
126+
```
127+
128+
## Phone number availability rules
129+
130+
When a WhatsApp user adopts a username, their phone number may no longer appear in webhook payloads. However, the phone number is still included when any of the following conditions are met:
131+
132+
- You messaged or called the user's phone number **within the last 30 days**.
133+
- You received a message or call from the user's phone number **within the last 30 days**.
134+
- The user is in your **Contact Book**.
135+
136+
> [!NOTE]
137+
> The 30-day lookback is evaluated **per business phone number**, not per portfolio. If you message a user from one business phone number, webhooks from a different business phone number in your portfolio won't include the user's phone number unless that specific number also had recent interaction.
138+
139+
### Contact Book
140+
141+
Meta provides a Contact Book feature that automatically stores WhatsApp user contact information (phone number and BSUID mappings) from interactions. Key details:
142+
143+
- The Contact Book is provided and hosted by Meta. It is by default enabled. No integration work is required.
144+
- It's scoped to the business portfolio level.
145+
- Only interactions that occur **after** the Contact Book launches are captured. Prior interactions aren't retroactively stored.
146+
147+
148+
## Limitations
149+
150+
- **Authentication templates**: One-tap, zero-tap, and copy code [authentication templates](/azure/communication-services/concepts/advanced-messaging/whatsapp/template-messages) still require phone numbers. BSUIDs can't be used for these template types.
151+
- **Portfolio scoping**: BSUIDs are scoped to individual business portfolios and can't be used across different portfolios.
152+
- **Contact Book**: Only captures interactions after launch. No retroactive data.
153+
154+
## How to prepare
155+
156+
To prepare your integration for WhatsApp usernames and BSUIDs:
157+
158+
1. **Stop assuming `from` and `to` always contain phone numbers.** Review any logic that parses, validates, or formats these fields as E.164 numbers. These fields may now be empty or null.
159+
160+
2. **Process `fromBSUID` and `toBSUID` fields.** Update your event handlers to read the new BSUID fields in [AdvancedMessageReceived](../../../../event-grid/communication-services-advanced-messaging-events.md#microsoftcommunicationadvancedmessagereceived-event) and [AdvancedMessageDeliveryStatusUpdated](../../../../event-grid/communication-services-advanced-messaging-events.md#microsoftcommunicationadvancedmessagedeliverystatusupdated-event) events.
161+
162+
3. **Update outbound messaging logic.** When replying to a username-only user, use the BSUID from the `fromBSUID` field as the `to` value in your send request.
163+
164+
## Key timeline
165+
166+
| Date | Milestone |
167+
|------|-----------|
168+
| March 31, 2026 | BSUIDs begin appearing in production webhook payloads |
169+
| Early April 2026 | Contact Book feature launches |
170+
| May 2026 | APIs support sending messages to BSUIDs |
171+
| June 2026 | WhatsApp begins rolling out usernames to end users |
172+
173+
## Related content
174+
175+
- [Advanced Messaging for WhatsApp overview](whatsapp-overview.md)
176+
- [Handle Advanced Messaging events](../../../quickstarts/advanced-messaging/whatsapp/handle-advanced-messaging-events.md)
177+
- [Advanced Messaging event schemas](../../../../event-grid/communication-services-advanced-messaging-events.md)
178+
- [Send WhatsApp template messages](template-messages.md)
179+
- [Meta: Business-scoped user IDs](https://developers.facebook.com/documentation/business-messaging/whatsapp/business-scoped-user-ids/)

articles/communication-services/quickstarts/advanced-messaging/whatsapp/handle-advanced-messaging-events.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,19 @@ The Event Grid Viewer is a sample site that allows you to view incoming events f
8989

9090
If you want to clean up and remove a Communication Services subscription, you can delete the resource or resource group. Deleting the resource group also deletes any other resources associated with it. Learn more about [cleaning up resources](../../create-communication-resource.md#clean-up-resources).
9191

92+
## WhatsApp usernames and BSUIDs
93+
94+
With the introduction of WhatsApp usernames, Advanced Messaging events now include new fields for business-scoped user IDs (BSUIDs).
95+
96+
- **`AdvancedMessageReceived`** events include a `fromBSUID` field with the sender's BSUID.
97+
- **`AdvancedMessageDeliveryStatusUpdated`** events include a `toBSUID` field with the recipient's BSUID.
98+
99+
> [!IMPORTANT]
100+
> The existing `from` and `to` fields may now be empty or null when a WhatsApp user has adopted a username and hidden their phone number. Update your event handlers accordingly. For more information, see [WhatsApp usernames and BSUIDs](../../../concepts/advanced-messaging/whatsapp/whatsapp-usernames-bsuid.md).
101+
92102
## Next steps
93103

94104
- [Understand Advanced Communication Messages Events](../../../../event-grid/communication-services-advanced-messaging-events.md)
105+
- [WhatsApp usernames and BSUIDs](../../../concepts/advanced-messaging/whatsapp/whatsapp-usernames-bsuid.md)
95106
- [Get started With Advanced Communication Messages SDK](./get-started.md)
96107

articles/communication-services/quickstarts/advanced-messaging/whatsapp/includes/common-setting-java.md

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,25 +125,34 @@ String channelRegistrationId = "<your channel registration id GUID>";
125125

126126
### Set recipient list
127127

128-
You need to supply a real phone number that has a WhatsApp account associated with it. This WhatsApp account receives the text and media messages sent in this article.
128+
You need to supply a real phone number that has a WhatsApp account associated with it, or a business-scoped user ID (BSUID). This WhatsApp account receives the text and media messages sent in this article.
129129
For this article, this phone number can be your personal phone number.
130130

131131
The recipient phone number can't be the business phone number (Sender ID) associated with the WhatsApp channel registration. The Sender ID appears as the sender of the text and media messages sent to the recipient.
132132

133133
The phone number should include the country code. For more information on phone number formatting, see WhatsApp documentation for [Phone Number Formats](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/phone-numbers#phone-number-formats).
134134

135135
> [!NOTE]
136-
> Only one phone number is currently supported in the recipient list.
136+
> Only one phone number or BSUID is currently supported in the recipient list.
137137
138138
Create the recipient list like this:
139139
```java
140140
List<String> recipientList = new ArrayList<>();
141-
recipientList.add("<to WhatsApp phone number>");
141+
recipientList.add("<to WhatsApp phone number or BSUID>");
142142
```
143143

144-
Example:
144+
Example using a phone number:
145145
```java
146146
// Example only
147147
List<String> recipientList = new ArrayList<>();
148148
recipientList.add("+14255550199");
149149
```
150+
151+
Example using a BSUID:
152+
```java
153+
// Example only
154+
List<String> recipientList = new ArrayList<>();
155+
recipientList.add("US.13491208655302741918");
156+
```
157+
158+
For more information about BSUIDs, see [WhatsApp usernames and BSUIDs](../../../concepts/advanced-messaging/whatsapp/whatsapp-usernames-bsuid.md).

articles/communication-services/quickstarts/advanced-messaging/whatsapp/includes/common-setting-javascript.md

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -139,23 +139,31 @@ const channelRegistrationId = "<your channel registration id GUID>";
139139

140140
### Set recipient list
141141

142-
You need to supply a real phone number that has a WhatsApp account associated with it. This WhatsApp account receives the template, text, and media messages sent in this article.
142+
You need to supply a real phone number that has a WhatsApp account associated with it, or a business-scoped user ID (BSUID). This WhatsApp account receives the template, text, and media messages sent in this article.
143143
For this article, this phone number can be your personal phone number.
144144

145145
The recipient phone number can't be the business phone number (Sender ID) associated with the WhatsApp channel registration. The Sender ID appears as the sender of the text and media messages sent to the recipient.
146146

147147
The phone number should include the country code. For more information on phone number formatting, see WhatsApp documentation for [Phone Number Formats](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/phone-numbers#phone-number-formats).
148148

149149
> [!NOTE]
150-
> Only one phone number is currently supported in the recipient list.
150+
> Only one phone number or BSUID is currently supported in the recipient list.
151151
152152
Create the recipient list like this:
153153
```json
154-
const recipientList = ["<to WhatsApp phone number>"];
154+
const recipientList = ["<to WhatsApp phone number or BSUID>"];
155155
```
156156

157-
Example:
157+
Example using a phone number:
158158
```javascript
159159
// Example only
160160
const recipientList = ["+14255550199"];
161-
```
161+
```
162+
163+
Example using a BSUID:
164+
```javascript
165+
// Example only
166+
const recipientList = ["US.13491208655302741918"];
167+
```
168+
169+
For more information about BSUIDs, see [WhatsApp usernames and BSUIDs](../../../concepts/advanced-messaging/whatsapp/whatsapp-usernames-bsuid.md).

articles/communication-services/quickstarts/advanced-messaging/whatsapp/includes/common-setting-net.md

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ var channelRegistrationId = new Guid("<your channel registration ID GUID>");
3232

3333
### Set recipient list
3434

35-
You need to supply an active phone number associated with a WhatsApp account. This WhatsApp account receives the template, text, and media messages sent in this quickstart.
35+
You need to supply an active phone number associated with a WhatsApp account, or a business-scoped user ID (BSUID). This WhatsApp account receives the template, text, and media messages sent in this quickstart.
3636

3737
For this example, you can use your personal phone number.
3838

@@ -41,19 +41,27 @@ The recipient phone number can't be the business phone number (Sender ID) associ
4141
The phone number must include the country code. For more information about phone number formatting, see WhatsApp documentation for [Phone Number Formats](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/phone-numbers#phone-number-formats).
4242

4343
> [!NOTE]
44-
> Only one phone number is currently supported in the recipient list.
44+
> Only one phone number or BSUID is currently supported in the recipient list.
4545

4646
Create the recipient list like this:
4747
```csharp
48-
var recipientList = new List<string> { "<to WhatsApp phone number>" };
48+
var recipientList = new List<string> { "<to WhatsApp phone number or BSUID>" };
4949
```
5050

51-
Example:
51+
Example using a phone number:
5252
```csharp
5353
// Example only
5454
var recipientList = new List<string> { "+14255550199" };
5555
```
5656

57+
Example using a BSUID:
58+
```csharp
59+
// Example only
60+
var recipientList = new List<string> { "US.13491208655302741918" };
61+
```
62+
63+
For more information about BSUIDs, see [WhatsApp usernames and BSUIDs](../../../concepts/advanced-messaging/whatsapp/whatsapp-usernames-bsuid.md).
64+
5765
### Start sending messages between a business and a WhatsApp user
5866

5967
Conversations between a WhatsApp Business Account and a WhatsApp user can be initiated in one of two ways:

articles/communication-services/quickstarts/advanced-messaging/whatsapp/includes/common-setting-python.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ Assign it to a variable called channelRegistrationId.
129129

130130
### Set recipient list
131131

132-
You need to supply an active phone number associated with a WhatsApp account. This WhatsApp account receives the template, text, and media messages sent in this article.
132+
You need to supply an active phone number associated with a WhatsApp account, or a business-scoped user ID (BSUID). This WhatsApp account receives the template, text, and media messages sent in this article.
133133

134134
For this example, you can use your personal phone number.
135135

@@ -138,19 +138,27 @@ The recipient phone number can't be the business phone number (Sender ID) associ
138138
The phone number must include the country code. For more information about phone number formatting, see WhatsApp documentation for [Phone Number Formats](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/phone-numbers#phone-number-formats).
139139

140140
> [!NOTE]
141-
> Only one phone number is currently supported in the recipient list.
141+
> Only one phone number or BSUID is currently supported in the recipient list.
142142
143143
Set the recipient list like this:
144144
```python
145145
phone_number = os.getenv("RECIPIENT_WHATSAPP_PHONE_NUMBER")
146146
```
147147

148-
Usage Example:
148+
Usage example with a phone number:
149149
```python
150150
# Example only
151151
to=[self.phone_number],
152152
```
153153

154+
Usage example with a BSUID:
155+
```python
156+
# Example only
157+
to=["US.13491208655302741918"],
158+
```
159+
160+
For more information about BSUIDs, see [WhatsApp usernames and BSUIDs](../../../concepts/advanced-messaging/whatsapp/whatsapp-usernames-bsuid.md).
161+
154162
### Start sending messages between a business and a WhatsApp user
155163

156164
Conversations between a WhatsApp Business Account and a WhatsApp user can be initiated in one of two ways:

0 commit comments

Comments
 (0)