> ## Documentation Index
> Fetch the complete documentation index at: https://help.treble.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# WhatsApp Usernames & Business-Scoped User IDs (BSUID)

> Meta is changing how WhatsApp contacts are identified. Here's what a BSUID and a WhatsApp username are, what changes for your inbound and outbound messages, and how Treble handles it for you.

Meta is rolling out a change to how WhatsApp identifies the people you talk to. Until now, every contact was identified by their **phone number**. That's changing: WhatsApp users can now adopt a **username** and, if they do, may choose not to share their phone number with businesses at all.

To make this possible, Meta now sends a new, permanent identifier with every contact: the **Business-Scoped User ID (BSUID)**. This page explains what it is, what changes, and what (if anything) you need to do.

<Note>
  **Nothing breaks if you do nothing.** Treble resolves contacts, keeps conversations connected, and sends messages correctly whether a contact is identified by phone number, username, or BSUID only. This page is here so you understand *why* you might see a contact without a phone number, and what that means.
</Note>

## What is a BSUID?

A **Business-Scoped User ID** is a unique, Meta-generated identifier for a WhatsApp user, scoped to your business. It's the one identifier Meta always includes with an inbound message or message status, whether or not the user has a username or shares their phone number.

* It looks like a country-code-prefixed string, for example `US.13491208655302741918`.
* It's **scoped per business portfolio** — the same person messaging two different businesses gets a different BSUID for each one.
* It **cannot be used for authentication (OTP) templates** — those still require a phone number, since they're tied to number-based verification.

## What is a WhatsApp username?

A username is an optional, human-readable handle (like `@yourname`) a WhatsApp user can reserve for their account, similar to a username on other messaging or social apps. A user who has a username **can choose to hide their phone number from businesses** — in that case, you'll see their username (if they message you with one set) and their BSUID, but not their number.

<Info>
  A username is optional and user-controlled. A phone number can also come back into view later — Meta shows it again if there's been a recent interaction (within the last 30 days) or if the contact exists in your business's contact book.
</Info>

## Why this is happening

Until now, the phone number was the anchor for everything: how a contact was identified, matched, and messaged. Meta is decoupling that — a phone number becomes *something a contact might share*, not something you can always count on.

<Steps>
  <Step title="April 2026">
    BSUIDs start appearing in inbound webhooks for all contacts, regardless of whether they've set a username.
  </Step>

  <Step title="June 29, 2026">
    Reservation of usernames opens globally — both for WhatsApp users and for businesses (see the FAQ below for how to set one up for your own number). Activation then rolls out by country through the following weeks.
  </Step>

  <Step title="July 2026 onward">
    Sending APIs accept a BSUID directly (via the `recipient` parameter) as an alternative to a phone number (`to`).
  </Step>
</Steps>

Adoption is entirely voluntary on the end user's side — most of your contacts will keep messaging you with their phone number visible, exactly as before.

## How Treble identifies a contact

Treble tracks **three** identifiers for every contact instead of just one:

| Identifier   | Where it comes from                      | Always present?                   |
| ------------ | ---------------------------------------- | --------------------------------- |
| Phone number | The classic `wa_id`                      | No — omitted once a user hides it |
| Username     | The WhatsApp handle, if the user set one | No — optional                     |
| BSUID        | Meta's `user_id` field                   | Yes — always sent                 |

When Treble needs to find or create a contact, it checks these in order: **phone number first**, then **BSUID**, then **username**. This keeps existing phone-based contacts matching exactly as they always have, and only falls back to BSUID/username when there's no phone number to work with.

<div class="hr" />

## Inbound messages

```mermaid theme={null}
flowchart LR
    A[Contact sends a WhatsApp message] --> B{Phone number included?}
    B -- Yes --> C[Match/create contact by phone]
    B -- No --> D{BSUID already known?}
    D -- Yes --> E[Match existing contact by BSUID]
    D -- No --> F[Create new BSUID-only contact]
    C --> G[Conversation continues normally]
    E --> G
    F --> G
```

When an inbound message arrives without a phone number, Treble:

1. Looks up the contact by BSUID. If it already knows this BSUID (from a previous message, or because the phone number was recovered before), the conversation continues exactly as it would for any other contact.
2. If it's the first time seeing this BSUID, Treble creates a new contact anchored to it. The contact behaves normally in your flows, reports, and conversation history — it just won't have a phone number field until one becomes available.
3. If the contact later shares a phone number (see [Recovering a phone number](#recovering-a-phone-number) below), Treble automatically links it to the existing BSUID-anchored contact — no duplicate is created, and the conversation history stays intact.

## Outbound messages

Sending a message works the same whether you're targeting a contact by phone number or by BSUID — Treble handles the difference for you automatically. Campaigns, templates, and automations don't need any changes.

<Warning>
  **Authentication (OTP) templates always require a phone number.** If a contact is BSUID-only and you need to send them an authentication template, you'll need their phone number first — see the next section.
</Warning>

## Recovering a phone number

If you have a contact without a phone number and genuinely need it (for example, to send an authentication template, or to sync with a CRM that only matches by phone), Treble supports WhatsApp's **Request Contact Info** button.

<Steps>
  <Step title="Send the button">
    Add a message with the **Request Contact Info** button to your flow, targeted at the BSUID-only contact.
  </Step>

  <Step title="The contact taps and consents">
    If they agree, WhatsApp shares their phone number back with you — this is always consent-based, the contact has to explicitly agree.
  </Step>

  <Step title="Treble saves it automatically">
    The phone number is linked to the existing contact automatically. No manual work, no duplicate contact.
  </Step>
</Steps>

<Info>
  This button is still in Meta's private beta and rolling out gradually. Once it's generally available, no changes are needed on your end to start using it.
</Info>

<div class="hr" />

## HubSpot support

Treble's [HubSpot integration](/en/docs/integrations/hubspot/welcome) supports BSUID and username-based contacts out of the box.

* Two HubSpot contact properties are created automatically the first time your HubSpot integration syncs: **WhatsApp Business Scope ID** (`whatsapp_business_scope_id`) and **WhatsApp Username** (`whatsapp_username`).
* When Treble looks up a contact in HubSpot, it checks phone number first, and falls back to BSUID or username when there's no phone number to search by.
* New contacts created from Treble include these fields automatically, the same way `treble_created` and other Treble-managed properties do.
* Existing HubSpot contacts get these fields filled in automatically over time as they interact — no manual backfill needed on your side.

<Accordion title="What if I already have a custom property with one of these names?">
  Unlikely, but if you do, it's not a conflict from our side — Treble only ever *reads* these fields to match contacts, so if you're already populating something useful there, that works in your favor.
</Accordion>

### The one real limitation

If a contact **already exists in your CRM** because they messaged you before *with* their phone number, and that same person later sends a new message **without** sharing their phone number (username/BSUID only), Treble won't be able to recognize it's the same person — the old contact was never tagged with their username/BSUID, and that's the only information available at that point. In that specific case, a **new, separate contact** gets created in your CRM instead of matching the existing one.

This isn't something we can work around — it's a direct consequence of Meta letting users hide their phone number after the fact. It's also a narrow edge case: it only affects contacts who first messaged with a phone number and later hide it, without ever triggering an interaction that would have let Treble tag their existing record first.

For CRM integrations other than HubSpot, phone-number-only matching is still the current behavior — we're extending this same BSUID/username support to our other CRM integrations next.

<div class="hr" />

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Do I need to change anything in my flows or templates?">
    No. Sending, conversations, reporting, and templates all keep working the same way. This is handled transparently by Treble.
  </Accordion>

  <Accordion title="Will my reports and metrics be affected?">
    No, nothing changes about how reporting works for you.
  </Accordion>

  <Accordion title="Can I still reach a contact who hides their phone number?">
    Yes — you send to them the same way, Treble resolves the right recipient (phone, BSUID, or username) automatically.
  </Accordion>

  <Accordion title="What happens to authentication (OTP) templates for a BSUID-only contact?">
    They can't be sent until you have a phone number for that contact. Use the [Request Contact Info button](#recovering-a-phone-number) to ask for it, with their consent.
  </Accordion>

  <Accordion title="Is this something I opt into?">
    No — this is a WhatsApp Business Platform feature that Meta is rolling out. Treble supports it automatically; there's no setting to turn on.
  </Accordion>

  <Accordion title="Does this affect my Phone Number ID or existing conversations?">
    No. Your Phone Number ID stays the same, and existing conversations aren't impacted.
  </Accordion>

  <Accordion title="Can I set up a username for my own business number?">
    Yes, if your WABA/number meets Meta's eligibility requirements (verified business, approved display name). This is configured directly in Meta's WhatsApp Manager (**Account tools → Phone numbers → select number → Profile tab → Username**), or via Meta's Username API — Treble doesn't have a UI for reserving it, since it's a Meta-side account setting.
  </Accordion>

  <Accordion title="I'm outside the countries where this has rolled out yet — does it matter?">
    Not for your day-to-day use of Treble. The rollout of username *reservation and activation* is happening gradually by country, entirely on Meta's schedule. Regardless of that schedule, Treble's handling of BSUID-only contacts is active everywhere, so you're covered whenever it does reach your market. Check Meta's WhatsApp Manager directly for the current status in a specific country — we can't guarantee it from our side.
  </Accordion>
</AccordionGroup>

<div class="hr" />

## Sources

For the full technical details straight from Meta:

* [Meta for Developers — Business-Scoped User IDs](https://developers.facebook.com/documentation/business-messaging/whatsapp/business-scoped-user-ids/)

## Next steps

<CardGroup cols={2}>
  <Card title="HubSpot Integration" icon="hubspot" href="/en/docs/integrations/hubspot/welcome">
    See everything Treble syncs with HubSpot.
  </Card>

  <Card title="Meta and Treble" icon="facebook" href="/en/docs/meta/overview">
    Understand the bigger picture of how Treble works with Meta.
  </Card>
</CardGroup>
