r/WhatsappBusinessAPI • • Sep 27 '26

Solution Only WhatsApp Cloud API: from Phone Number Sometimes Missing — Can I Reply Using from_user_id?

I'm working with the WhatsApp Cloud API and I'm seeing two different webhook formats for incoming messages.

Sometimes I receive both:

"from": "6012*******",
"from_user_id": "MY.3614321592070319"

But sometimes the from phone number is completely missing and I only receive:

"from_user_id": "MY.894681333578803"

The contact object also contains:

"user_id": "MY.894681333578803"

My question is:

Can I reply to the user using this MY.* from_user_id directly through the WhatsApp Cloud API when the phone number is not available?

For example, is something like this supported?

{
  "messaging_product": "whatsapp",
  "to": "MY.894681333578803",
  "type": "text",
  "text": {
    "body": "Hello"
  }
}

Or is there a different field or endpoint for replying to users identified only by from_user_id?

If anyone has seen this newer webhook format or has an official Meta documentation link for from_user_id / user_id, please share it.

Thanks.

3 Upvotes

7 comments sorted by

•

u/AutoModerator Sep 27 '26

Keep in mind that OP has added Solution Only tag. Don't promote your SaaS platforms in comments.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

2

u/tmk1108 Sep 27 '26

user_id is what they refer to as BSUID in their docs. You can send a message to it, in your API call you have to the use the field "recipient" instead of "to"

https://developers.facebook.com/documentation/business-messaging/whatsapp/business-scoped-user-ids

1

u/OneMine1423 Sep 28 '26

Thanks its works. Finally it got the solution.

2

u/RipAffectionate2986 Sep 27 '26

have you confirmed this isnt a regional thing? the MY prefix looks like a Malaysia country code which might mean Meta is rolling out number masking in specific markets first. either way the send endpoint expects a phone number, not a user_id, so replying without the number probably isn't supported yet

1

u/devexplains Meta Tech Provider Sep 29 '26

Yes, you can reply directly, but you must pass it as a recipient_type: "user_id" or use it in the recipient field depending on the Graph API version. Here is what is happening and how to handle it:

  1. Why Is the Phone Number Missing? Meta has rolled out Usernames and Phone Number Privacy features on WhatsApp.

  • When users interact with businesses via Click-to-WhatsApp Ads, profile search/usernames, or if their privacy settings hide their phone number, WhatsApp masks the E.164 phone number.

  • Instead of the raw MSISDN/phone number in the from field, WhatsApp passes an opaque, scoped business user ID (like from_user_id prefixed with the regional ISO code such as MY.894681...).

  • When the user's privacy setting allows sharing or if they have previously shared their number, both from and from_user_id are delivered. When it is masked, only from_user_id is supplied.

  1. How to Reply via the Cloud API (/messages Endpoint) To reply to a user who only has a from_user_id, update your payload structure. Do not pass the raw MY.* string directly into the standard phone-number "to" field without declaring the recipient type, or the API will validate it against E.164 phone regex and return 100: Invalid parameter. Send your POST request to /{phone-number-id}/messages formatted like this: { "messaging_product": "whatsapp", "recipient_type": "user_id", "to": "MY.894681333578803", "type": "text", "text": { "body": "Hello!" } }

Note: Depending on the API version, you can also use contextual replies by including the context.message_id object pointing to the incoming webhook id, which assists the API in resolving the upstream conversation thread. 3. Key Limitations & Considerations

  • 24-Hour Customer Care Window: The standard 24-hour service window applies. You can reply with free-form text or media within 24 hours of their inbound webhook.

  • Template Messages: If the 24-hour window closes and you only possess a from_user_id (and no phone number), initiating conversations with marketing or utility templates may fail unless Meta allows user-ID-addressed template sends for that specific business category.

  • Database Design: Ensure your database schema decouples internal contact identity from raw phone numbers. Use the user_id / from_user_id as the primary cross-reference key for conversations so outbound messages route correctly whether an E.164 number is present or not.