This MO event type represents a contact message received from an end user. It
is triggered when the user shares their contact information. The event is
delivered to the client’s webhook endpoint and includes structured contact
details, which are described in the following parameters and example.
The recipient's phone number in international format
Yes
FromBsuid
String?
BSUID of the customer who sent the message. Omitted when empty. See Usernames
No
contactName
String?
Optional display name associated with the contact
No
messageContent
Object
The actual content of the message (text, image, etc.)
Yes
The phone number is not guaranteed. When the customer talks to you over a WhatsApp username, Meta omits it and the identifier arrives in the BSUID property instead. Do not use the phone number as the primary key of the contact — see BSUID in Webhooks.
Message Content Parameter
Property
Data Type
Description
Required?
contact
Object
The actual content of the contacts
Yes
Contact
Property
Data Type
Description
Required?
firstName
String
Contact's first name
Yes
middleName
String?
Contact's middle name
No
lastName
String?
Contact's last name
No
formattedName
String
Full formatted name (e.g., "First M. Last")
Yes
suffix
String?
Name suffix (e.g., "Jr.")
No
prefix
String?
Name prefix (e.g., "Dr.")
No
company
String?
Company or organization
No
department
String?
Department within the organization
No
title
String?
Job title
No
birthday
DateTime?
Birth date
No
addresses
Object?
Object address
No
emails
Object?
Object Email
No
phones
Object?
Object PhoneNumber
No
urls
Object?
Object URL
No
Origin
String?
How the customer shared their information: contact_request (they tapped the button of a Share contact info template) or other (they shared a contact card in the chat on their own). Omitted when empty.
No
What arrives depends on Origin. With contact_request Meta sends the customer's phone number only — no vCard. The full contact card (name, company, phones, emails, addresses and URLs) arrives only with other. Do not build your process around fields that will not be there; the phone number does arrive in both cases. See BSUID in Webhooks.