|
| 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 | +## What is a BSUID? |
| 21 | + |
| 22 | +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: |
| 23 | + |
| 24 | +- **Automatically generated** by Meta for each user-portfolio pair. |
| 25 | +- **Prefixed with a country code**: The format is `{ISO 3166 alpha-2 country code}.{up to 128 alphanumeric characters}`, for example, `US.13491208655302741918`. |
| 26 | +- **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. |
| 27 | +- **Stable across username changes**: If a user changes their username, their BSUID remains the same. |
| 28 | +- **Regenerated on phone number change**: If a user changes their phone number, a new BSUID is generated. |
| 29 | + |
| 30 | +> [!IMPORTANT] |
| 31 | +> 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. |
| 32 | +
|
| 33 | +## Impact on outbound messages |
| 34 | + |
| 35 | +> [!NOTE] |
| 36 | +> Sending messages to BSUIDs will be available starting in June 2026, when Meta rolls out the WhatsApp username feature to end users. Until then, the `to` field only supports phone numbers. |
| 37 | +
|
| 38 | +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. |
| 39 | + |
| 40 | +**Send to a phone number (existing behavior):** |
| 41 | + |
| 42 | +```json |
| 43 | +{ |
| 44 | + "channelRegistrationId": "<channel-registration-id>", |
| 45 | + "to": ["+14255550199"], |
| 46 | + "kind": "text", |
| 47 | + "content": "Hello!" |
| 48 | +} |
| 49 | +``` |
| 50 | + |
| 51 | +**Send to a BSUID:** |
| 52 | + |
| 53 | +```json |
| 54 | +{ |
| 55 | + "channelRegistrationId": "<channel-registration-id>", |
| 56 | + "to": ["US.13491208655302741918"], |
| 57 | + "kind": "text", |
| 58 | + "content": "Hello!" |
| 59 | +} |
| 60 | +``` |
| 61 | + |
| 62 | +## Impact on inbound messages |
| 63 | + |
| 64 | +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. |
| 65 | + |
| 66 | +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. |
| 67 | + |
| 68 | +**Phone number available:** |
| 69 | + |
| 70 | +```json |
| 71 | +"data": { |
| 72 | + "from": "14255551234", |
| 73 | + "fromBSUID": "US.13491208655302741918", |
| 74 | + "to": "{channel-id}", |
| 75 | + "content": "Hi there!", |
| 76 | + "channelType": "whatsapp", |
| 77 | + "messageType": "text" |
| 78 | +} |
| 79 | +``` |
| 80 | + |
| 81 | +**Phone number hidden (username adopted):** |
| 82 | + |
| 83 | +```json |
| 84 | +"data": { |
| 85 | + "from": "", |
| 86 | + "fromBSUID": "US.13491208655302741918", |
| 87 | + "to": "{channel-id}", |
| 88 | + "content": "Hi there!", |
| 89 | + "channelType": "whatsapp", |
| 90 | + "messageType": "text" |
| 91 | +} |
| 92 | +``` |
| 93 | + |
| 94 | +> [!CAUTION] |
| 95 | +> The `from` field may now be empty or null. Do not assume this field always contains a phone number. |
| 96 | +
|
| 97 | +## Impact on event subjects |
| 98 | + |
| 99 | +The `subject` field in Event Grid events for `AdvancedMessageReceived` uses the format `advancedMessage/sender/{sender@id}/recipient/{channel-id}`. When a WhatsApp user hides their phone number, the `{sender@id}` portion of the subject now contains the sender's BSUID instead of their phone number. |
| 100 | + |
| 101 | +> [!WARNING] |
| 102 | +> **Breaking change:** If you have Event Grid subscriptions with subject filters based on the sender's phone number, those filters won't match events from users who have adopted a WhatsApp username and hidden their phone number. Update your subject filters and any webhook automation code that parses the event subject to account for BSUID values. |
| 103 | +
|
| 104 | +**Subject with phone number:** |
| 105 | + |
| 106 | +``` |
| 107 | +advancedMessage/sender/14255551234/recipient/11111111-1111-1111-1111-111111111111 |
| 108 | +``` |
| 109 | + |
| 110 | +**Subject with BSUID (phone number hidden):** |
| 111 | + |
| 112 | +``` |
| 113 | +advancedMessage/sender/US.13491208655302741918/recipient/11111111-1111-1111-1111-111111111111 |
| 114 | +``` |
| 115 | + |
| 116 | +## Impact on delivery status events |
| 117 | + |
| 118 | +The [AdvancedMessageDeliveryStatusUpdated](../../../../event-grid/communication-services-advanced-messaging-events.md#microsoftcommunicationadvancedmessagedeliverystatusupdated-event) event now includes a new `toBSUID` field containing the recipient's BSUID. |
| 119 | + |
| 120 | +If the message was sent to a BSUID, the existing `to` field may be empty. |
| 121 | + |
| 122 | +**Sent to a phone number:** |
| 123 | + |
| 124 | +```json |
| 125 | +"data": { |
| 126 | + "from": "{channel-id}", |
| 127 | + "to": "14255550199", |
| 128 | + "toBSUID": "US.13491208655302741918", |
| 129 | + "status": "Delivered", |
| 130 | + "channelType": "whatsapp", |
| 131 | + "messageId": "22222222-2222-2222-2222-222222222222" |
| 132 | +} |
| 133 | +``` |
| 134 | + |
| 135 | +**Sent to a BSUID:** |
| 136 | + |
| 137 | +```json |
| 138 | +"data": { |
| 139 | + "from": "{channel-id}", |
| 140 | + "to": "", |
| 141 | + "toBSUID": "US.13491208655302741918", |
| 142 | + "status": "Delivered", |
| 143 | + "channelType": "whatsapp", |
| 144 | + "messageId": "22222222-2222-2222-2222-222222222222" |
| 145 | +} |
| 146 | +``` |
| 147 | + |
| 148 | +## Phone number availability rules |
| 149 | + |
| 150 | +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: |
| 151 | + |
| 152 | +- You messaged or called the user's phone number **within the last 30 days**. |
| 153 | +- You received a message or call from the user's phone number **within the last 30 days**. |
| 154 | +- The user is in your **Contact Book**. |
| 155 | + |
| 156 | +> [!NOTE] |
| 157 | +> 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. |
| 158 | +
|
| 159 | +### Contact Book |
| 160 | + |
| 161 | +Meta provides a Contact Book feature that automatically stores WhatsApp user contact information (phone number and BSUID mappings) from interactions. Key details: |
| 162 | + |
| 163 | +- The Contact Book is provided and hosted by Meta. It is by default enabled. No integration work is required. |
| 164 | +- It's scoped to the business portfolio level. |
| 165 | +- Only interactions that occur **after** the Contact Book launches are captured. Prior interactions aren't retroactively stored. |
| 166 | + |
| 167 | + |
| 168 | +## Limitations |
| 169 | + |
| 170 | +- **Authentication templates**: One-tap, zero-tap, and copy code authentication templates still require phone numbers. BSUIDs can't be used for these template types. |
| 171 | +- **Portfolio scoping**: BSUIDs are scoped to individual business portfolios and can't be used across different portfolios. |
| 172 | +- **Contact Book**: Only captures interactions after launch. No retroactive data. |
| 173 | + |
| 174 | +## How to prepare |
| 175 | + |
| 176 | +> [!WARNING] |
| 177 | +> **Breaking change:** The `from` and `to` fields in Advanced Messaging events may now be empty or null. Any code that assumes these fields always contain a phone number will break. You must update your event handlers to use the new `fromBSUID` and `toBSUID` fields. |
| 178 | +
|
| 179 | +To prepare your integration for WhatsApp usernames and BSUIDs: |
| 180 | + |
| 181 | +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. |
| 182 | + |
| 183 | +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. |
| 184 | + |
| 185 | +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. Sending to BSUIDs will be available starting in June 2026. |
| 186 | + |
| 187 | +4. **Review Event Grid subject filters.** If you have webhook subscriptions that filter on the event `subject` (for example, filtering by a specific sender phone number), update those filters to also handle BSUID values. The sender portion of the subject may now contain a BSUID instead of a phone number. |
| 188 | + |
| 189 | +## Key timeline |
| 190 | + |
| 191 | +| Date | Milestone | |
| 192 | +|------|-----------| |
| 193 | +| March 31, 2026 | BSUIDs begin appearing in production webhook payloads | |
| 194 | +| Early April 2026 | Contact Book feature launches | |
| 195 | +| June 2026 | Sending messages to BSUIDs available in production; WhatsApp begins rolling out usernames to end users | |
| 196 | + |
| 197 | +## Related content |
| 198 | + |
| 199 | +- [Advanced Messaging for WhatsApp overview](whatsapp-overview.md) |
| 200 | +- [Handle Advanced Messaging events](../../../quickstarts/advanced-messaging/whatsapp/handle-advanced-messaging-events.md) |
| 201 | +- [Advanced Messaging event schemas](../../../../event-grid/communication-services-advanced-messaging-events.md) |
| 202 | +- [Send WhatsApp template messages](template-messages.md) |
| 203 | +- [Meta: Business-scoped user IDs](https://developers.facebook.com/documentation/business-messaging/whatsapp/business-scoped-user-ids/) |
0 commit comments