WhatsApp: Surface BSUID across Inbox, API, and Workflows for phone-numberless contacts
A
Angel Berríos
Business Problem:
As Meta rolls out WhatsApp usernames, a growing share of inbound contacts arrive without a phone number. Their only identifiers are a display name (not unique), a BSUID (stable but buried in Channel Metadata JSON), and a username (human-readable but not surfaced in the UI). Agents cannot reliably identify who they're talking to, distinguish contacts with the same display name, or hand conversations over with a trustworthy reference. Integrations that rely on phone number as the API path identifier (e.g., POST /v2/contact/phone:<number>/comment) break entirely for these contacts.
Desired Outcome:
- Inbox visibility — Show the WhatsApp username on the contact record and conversation header, the same way the phone number appears today.
- API identifiers — Support username and BSUID as lookup identifiers in the Developer API alongside phone and contact ID (e.g., /v2/contact/bsuid:<id> or /v2/contact/username:<handle>), so integrations work without a phone number.
- Workflows & exports — Make username and BSUID available as variables in Workflows and in data exports, so these contacts can be routed, tagged, and reported on like any other.
Current Limitation:
BSUID is stored internally and accessible via Channel Metadata (View JSON), but not surfaced in the contact record, API paths, Workflows, or exports. Username is not displayed anywhere in the platform.
Current workaround:
Businesses can capture phone numbers shared by username-only contacts via an integration (Zapier/Make/n8n) and save them to the contact record automatically:
- Subscribe to respond.io's New Incoming Message webhook → check when a username-only contact's payload includes a phone number (wa_id), indicating they've just shared their number → trigger a respond.io Workflow via Incoming Webhook to update the contact field.
- The integration tool sends an HTTP request to a respond.io Workflow's Incoming Webhook URL → respond.io stores the payload in a variable → "Update Contact Field" step saves the phone number.
N
Nabilah Binti Salleh
Hello Angel Berríos - thanks for the thorough write-up. A few things that can help today, plus a note on what's coming:
- Capturing phone numbers when contacts share them: you can set up an integration (Zapier, Make, or n8n) to subscribe to respond.io's New Incoming Message webhook. When a username-only contact's payload starts including a phone number (wa_id) - meaning they've just shared it, trigger a respond.io Workflow via its Incoming Webhook URL to automatically save the number using the "Update Contact Field" step.
- User name in the Inbox module: we know it's not visible today. An improvement to display usernames in the contact fields is already in progress.
- API identifiers and Workflow/export support: Genuine gaps we're tracking. Your integration use case is strong signal we're factoring in.
We'll keep this updated as things ship. Appreciate you flagging it early.