WhatsApp Username and Business Scoped User ID (BSUID) - LATEST ENV

AI Tools

What’s New in WhatsApp June 2026?

WhatsApp will introduce the Username feature in June 2026, allowing your customers to hide their phone numbers from businesses. Since our platform currently uses phone numbers as the primary identifier, this change directly affects how incoming messages are identified and processed.

To keep everything running smoothly, our platform has adopted BSUID (Business Scoped User ID) as a unique identifier. This allows the system to recognize your customers even when their phone number is not available keeping conversation history, customer records, and message routing intact.

About WhatsApp Username and BSUID features

A username is a unique text identifier chosen by the customer themselves. Unlike WhatsApp profile names, which can be duplicated across customers, usernames cannot be reused and serve as the customer's display identity.

BSUID is a system-generated code that remains permanent and cannot be modified. While usernames operate on the customer side, BSUID works on the system side offering greater stability for long-term tracking and data processing.

What You Get with Our Platform

Every customer is consistently recognized Whether existing or new, with or without a phone number, every customer is identified consistently across all conversations.

Complete customer data capture Phone numbers, usernames, and BSUIDs are automatically stored, making it easier to manage data in your CRM and analytics platforms.

Customer history stays connected Changes to a customer's phone number are handled automatically, without breaking the continuity of their conversation history.

Broadcasts run as usual Broadcast messages reach every customer — including those using usernames — with no additional configuration required.

Impact on platform features (Omnichannel)

To ensure a seamless transition, our platform has been updated to handle WhatsApp Username and BSUID across all relevant features. Below is an overview of the features affected by this change, along with how each one continues to support your operations.

Inbox

To support the new WhatsApp identifiers, the inbox now offers expanded search capabilities and an updated customer profile view:


Search by Username

You can now search for specific customers using their Username, in addition to phone number and customer name.


Customer Types

To identify both existing and new customers, Meta has introduced Contact Book a built-in feature that automatically stores contact information for every customer who has interacted with your business. This feature is enabled by default for all businesses and requires no setup or configuration.

Contact Book in Qiscus is adapted from Meta's latest update to ensure full compatibility. For more detailed information, please refer to Meta's official documentation

Here are the key things to know about how Contact Book works:

  • Enabled automatically Your business does not need to activate anything. The feature runs in the background from the start.

  • Phone numbers remain recognized indefinitely As long as Contact Book is active, your customers' phone numbers stay on record even when they are inactive for more than 30 days or choose to hide their number behind a username.

  • Customers can add contacts directly When customers share their phone number through the contact request button, Meta automatically adds their information to your Contact Book.

  • Not visible in WhatsApp Manager Contact Book operates behind the scenes, without a dedicated view in WhatsApp Manager. Its active status can be identified from the data received by the system.

  • Can be disabled, but with consequences You can disable Contact Book through Meta Business Suite → Business Settings → Business Info. Please note that disabling it will permanently delete all stored contact data, and phone numbers will only be recognized within a 30-day window from the last interaction.

Here are the use cases for identifying existing and new customers:

Existing Customer

Use case describing system behavior for existing customers

Case 1: Complete Identity Profile

Customers who have been previously registered will be identified by the system using their phone number as a unique identifier. The data used includes username, phone number, and BSUID, with the phone number serving as the primary key in the identification process.


Case 2: Without Username

If the customer does not update their username. The data used includes phone number and BSUID, with the phone number serving as the primary key in the identification process.


Case 3: Without Phone Number

If the customer does not share their phone number. The data used includes username and BSUID, with the BSUID serving as the primary key in the identification process.


Info
  • If an existing customer who has a phone number and has implemented a username does not contact the business for 30 days, he will be considered a new customer, because the webhook sent by Meta does not carry the "phone number" data.

  • A customer may "become a new customer" when Meta does not send the phone number data. However, this only occurs when the customer's BSUID cannot be found in the Customer Data Platform (CDP). If the customer's BSUID has already been recorded — whether the customer contacted the business previously or the business ran a broadcast to them earlier — the customer continues to be recognized under their existing profile.

New customer

Use case describing system behavior for new customers

Case 1: Complete Identity Profile

New customers will automatically use the BSUID as the unique identifier. The data used includes the username, phone number, and BSUID, with the Phone number or BSUID serving as the primary key in the identification process.


Case 2: Without Username

For new customers and returning customers, if the customer does not update their username. The data used includes phone number and BSUID, with the Phone number or BSUID serving as the primary key in the identification process.


Case 3: Without Phone Number

For new customers and returning customers, if the customer does not share their phone number. The data used includes username and BSUID, with the BSUID serving as the primary key in the identification process.



Info
  • The primary key used to identify customers is determined by META global release. The default for now is phone number. When both phone number and BSUID are available, the configured identifier takes priority as the main key, and the other is stored as an alternate lookup. Case 3 always uses BSUID regardless of configuration, since no phone number is available.

  • A customer may "become a new customer" when Meta does not send the phone number data. However, this only occurs when the customer's BSUID cannot be found in the Customer Data Platform (CDP). If the customer's BSUID has already been recorded — whether the customer contacted the business previously or the business ran a broadcast to them earlier — the customer continues to be recognized under their existing profile.

Updated customer profile view

The customer profile panel has been redesigned to display Username, phone number, and BSUID in a single, organized layout.


Customer group info

The customer group view adapts based on the information shared by each customer. When available, the view displays the username and phone number. If a customer has not shared their username or phone number, the corresponding fields will show "No username" or "No phone number".



Support call with BSUID

Our platform has been updated to support Meta's new Call with BSUID feature. This allows your business to make voice calls to customers using their BSUID as the identifier without requiring their phone number keeping customer privacy fully protected throughout every interaction.


Authentication Template Support

This update applies specifically to Authentication Templates (AUTH Templates), which are WhatsApp message templates used for OTP delivery, account verification, login codes, and similar authentication-related purposes.


Authentication templates cannot be sent to username-only customers (customers without a phone number). This is a Meta restriction.

Send request phone number

You can send a phone number request directly to your customers to keep their contact details up to date. This is especially useful when phone numbers are required for operational needs, such as delivery coordination or identity verification.

To send a phone number request, create a broadcast and add the request from the Text section.


Fill in all required fields and click Send.


The broadcast message is automatically sent to the agent–customer conversation.


Customer Blocking with BSUID

The Block Customer feature now supports BSUID as an alternative customer identifier. This enhancement allows businesses to block customers even when a phone number is unavailable or hidden.

Before: Block Customer supported phone number-based identification only.

After: Block Customer supports both phone number and BSUID-based identification.

CDP (Customer Data Platform)

On the page Customer Data Platform (CDP) now supports BSUID. The customer data management view has been updated with a new BSUID column, adding information username on profile detail customer and searching by username on the search field. Ensuring that every customer record, both existing and newly added, is documented completely and consistently.

Customer List

The Customer List allows businesses to search for specific customers using the search field based on username or phone number. The page also supports username and BSUID data in customer export and import functions.


Customer detail

To view a customer's complete information, click their name to open the detail page. This page displays comprehensive data including:

  • Username and BSUID

  • Phone number

  • Last conversation

  • Channel, source, and platform

  • Customer activity log


Customize WhatsApp Profile

To support this feature, we provide a flexible way for your business to customize your profile and define your business name according to your preferences. This menu is available on the WhatsApp Profile Integration page, which consists of two sections: Profile and Username, as outlined below.

Section Profile

In the Profile section, you can customize your business profile details such as the profile photo, description, email, business address, business description, and generate your business URL.

Section Username


In the Username section, you can customize your business username by submitting a request in the username field. The username must meet certain requirements for availability. Once submitted, Meta will review your request to ensure the username is unique. This process may take some time, and if approved, the username will be assigned with a “Reserved” status.


Webhook Update

Our platform includes the new payload data in all customer-related webhooks. BSUID and username fields are now available in every inbound webhook.

{ "customer": { "name": "Customer Name", <!-- NEW field. null if the customer has not set a WhatsApp username --> "wa_username": "customer_wa_username", <!-- NEW field. null if the BSUID has never been recorded in CDP (legacy customer / non-WhatsApp channel) --> "wa_bsuid": "ID.1809999142981573", <!-- Existing field, behavior unchanged. null ONLY if this customer has never had a phone number in Customer Data Platform - (username-only or other channel). Once a phone number has been recorded, keeps returning it here even after the customer sets their number to private. --> "phone_number": "628121xxx4132", <!-- NEW field. null unless the business uses parent BSUIDs (multi-portfolio); format CC.ENT.xxx --> "wa_parent_user_id": "parent_user_id_value", <!-- Existing field — always present (room's primary identifier: phone or BSUID or unique ID from channel related) --> "user_id": "room-level-identifier", <!-- Existing field. Usually null for WhatsApp customers; only set if provided via Customer Data Platform--> "email": "[email protected]" } }

Impacted Webhooks:

  • Bot Webhook

{ "app_code": "gud-***lix", "channel": { "id": 1263, "name": "xxxxxxxxx xxxxxx", "source": "wa" }, "payload": { "from": { "avatar_url": "https://xxxxxx-multichannel.bbbbbb.com/img/***", "customer": { "email": null, "name": "M* K***", "phone_number": "507***429", "user_id": "ID.******410", "wa_bsuid": "ID.******410", "wa_parent_user_id": "ZM.ENT.***211", "wa_username": "****56" }, "email": "ID.**3***410", "id": 0, "id_str": "0", "name": "M* K***" }, "message": { "comment_before_id": 0, "comment_before_id_str": "0", "created_at": "2026-06-22T08:45:18Z", "disable_link_preview": false, "extras": null, "id": 0, "id_str": "0", "payload": null, "text": "settup_2026-06-22T08:45:17.471Z", "timestamp": "2026-06-22T08:45:18Z", "type": "text", "unique_temp_id": "wa_554c***3124", "unix_nano_timestamp": 1782117918000, "unix_timestamp": 1782117918 }, "room": { "id": "******798", "id_str": "******798", "is_public_channel": false, "name": "M* K***", "options": "{\"channel\":\"wa\",\"channel_details\":{\"channel_id\":1263,\"name\":\"xxx xxxxx xxxx xxxx 6\",\"phone\":\"+628***030\"},\"is_resolved\":false,\"is_waiting\":false,\"source\":\"wa\"}", "participants": [ { "email": "ID.******410" }, { "email": "***-***[email protected]" } ], "room_avatar": "https://bbbbb-multichannel.bbbbb.com/img/***", "topic_id": "******798", "topic_id_str": "*********798", "type": "group" }, "type": "post_comment_mobile" }, "type": "post_comment_mobile" }
  • Custom Agent Allocation Webhook

{ "app_code": "gud-*****lix", "app_id": "gud-******lix", "avatar_url": "https://bbbbbbb-bbbbb.bbbbb.com/img/default_avatar.svg", "candidate_agent": { "avatar_url": null, "created_at": "2026-01-08T03:49:11Z", "email": "***@***.***", "force_offline": false, "id": 3483, "is_available": true, "is_verified": false, "last_login": "2026-06-17T05:21:10Z", "name": "***", "sdk_email": "***@***.***", "sdk_key": "***", "type": 2, "type_as_string": "agent", "updated_at": "2026-06-22T07:19:44Z" }, "channel": { "id": 1263, "name": "***", "source": "wa" }, "customer": { "email": null, "name": "***", "phone_number": null, "user_id": "***", "wa_bsuid": "***", "wa_parent_user_id": "***", "wa_username": "***" }, "email": "***", "extras": "{\"user_properties\":[]}", "is_new_session": true, "is_resolved": false, "latest_service": null, "name": "***", "room_id": "***", "source": "wa" }
  • Custom Button

{ "additional_info": [], "agent": { "email": "x***@xxxxx.com", "name": "I** T***", "type": "admin" }, "channel_id": 1263, "channel_name": "Qiscus Product Sandbox Cloud 6", "channel_type": "WhatsApp", "customer": { "avatar": "https://xxxx-multichannel.xxxxxx.com/img/***", "email": null, "name": "M* G***", "phone_number": "xx", "user_id": "ID.xxxx", "wa_bsuid": "ID.xxxx", "wa_parent_user_id": "ZM.ENT.***211", "wa_username": "M***43" }, "customer_properties": [ { "id": 966, "label": "AGUS_14", "value": "" } ] }
  • Mark As Resolved

{ "app_code": "gud-***lix", "channel": { "id": 1263, "name": "xxx xxxx xx Cloud 6", "source": "wa" }, "customer": { "additional_info": [], "avatar": "https://xx-xxx.xxxxx.com/img/***", "email": null, "name": "M* G***", "phone_number": "xxxxx", "user_id": "ID.xxxxx", "wa_bsuid": "ID.xxxxx", "wa_parent_user_id": "ZM.ENT.***211", "wa_username": "M***43" }, "resolved_by": { "email": "x***@gmail.com", "id": 1842, "is_available": false, "name": "I** T***", "type": "admin" }, "service": { "first_comment_id": "430***505", "id": 601389, "is_resolved": true, "last_comment_id": "430***463", "notes": null, "room_id": "445***766", "source": "wa" } }
  • New Session Webhook

{ "app_code": "gud-***lix", "channel": { "id": 1263, "name": "xxxxxxx Sandbox Cloud 6", "source": "wa" }, "is_new_session": true, "payload": { "from": { "avatar_url": "https://xxxxxx-xxxxx.xxxxxx.com/img/***", "customer": { "email": null, "name": "M* G***", "phone_number": "967***762", "user_id": "ID.545***990", "wa_bsuid": "ID.545***990", "wa_parent_user_id": "ZM.ENT.***211", "wa_username": "M***43" }, "email": "ID.545***000", "id": 0, "id_str": "0", "name": "M* G***" }, "message": { "id": 0, "id_str": "0", "payload": null, "text": "settup_2026-06-22T08:47:20.574Z", "timestamp": "2026-06-22T08:47:21Z", "type": "text" }, "room": { "id": "445***766", "id_str": "445***766", "is_public_channel": false, "name": "M* G***", "options": "{\"channel\":\"wa\",\"channel_details\":{\"channel_id\":1263,\"name\":\"xxxxxx xxxxx Sandbox Cloud 6\",\"phone\":\"+628***030\"},\"is_resolved\":false,\"is_waiting\":false,\"source\":\"wa\"}", "participants": [ { "email": "ID.545***990" }, { "email": "gud-***[email protected]" } ], "room_avatar": "https://xxxx-multichannel.xxxx.com/img/***", "topic_id": "445***766", "topic_id_str": "445

user_id reflects the configured primary identifier. Phone number by default for now and for BSUID is waiting Meta global release. wa_bsuid always contains the BSUID regardless of configuration. For phone-less customers, user_id and wa_bsuid will contain the same BSUID value.

  • WhatsApp Webhook Forwarder

The WhatsApp Webhook Forwarder relays incoming Meta webhook events to your configured endpoint. To set up your forwarding URL, refer to Setting the Webhooks.

{ "app_code": "ben-***", "channel_id": 123, "contacts": [ { "profile": { "name": "no phone", "username": "Ezra_Steuber74" }, "user_id": "ID.200474***21" } ], "messages": [ { "from": null, "from_user_id": "ID.20047****321", "id": "eb6071ba-93e8-4d3f-9da2-7ca***d2c3a7", "text": { "body": "settup_2026-07-29T07:43:56.850Z" }, "timestamp": "1785311037", "type": "text" } ], "messaging_product": "whatsapp", "metadata": { "display_phone_number": "628***98668", "phone_number_id": "325****848" } }

The message.from field is always present in the webhook Qiscus forwards to the client, returning an empty value when unavailable — even if the original webhook from Meta omits the message.from field entirely.

WhatsApp Business API

This section covers identifier changes specific to Username and BSUID. For the full list of supported message types and API usage, refer to WhatsApp Business API — Type of Message.

The to field now supports three types of recipient identifiers phone numberBSUID, or username. You do not need to change which field you use; simply put the right identifier in to and the platform handles the rest.

Value in to

How it's handled

Phone number (e.g., 628xxx)

Sent directly to Meta as "to"

BSUID (e.g., ID.1809xxx)

Automatically converted to "recipient" before calling Meta API

Username (e.g., johndoe)

Qiscus looks up the BSUID from CDP, then sends via "recipient"

No code change is required if you are already using "to". Just pass the identifier you have — phone, BSUID, or username — and the platform resolves it automatically.

Rules & Constraints:

  • Format username without @ (e.g., "johndoe", not "@johndoe")

  • If the customer has never chatted before (not in CDP), username cannot be resolved → error

  • Auth/OTP Templates cannot be sent to username-only customers (no phone number) — this is a Meta restriction

  • Usernames can change at any time → for long-term reliability, store BSUID in your own system and pass it via "to" or "recipient" directly


  Last updated