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

# Contact Info Request Messages

> Ask a WhatsApp contact to share their phone number with a single tap. Essential for contacts who adopted a username and hid their number.

Send a message with a **Share Contact Info** button. When the contact taps it and confirms, their phone number arrives back in the conversation as a regular inbound `contact` message.

This matters most for contacts who adopted a [WhatsApp username](/guides/whatsapp/usernames) and hid their phone number: it is the official way to recover a number you can call, text or verify.

## Send a Contact Info Request

The prompt goes in `text`. There is no `content` object: WhatsApp owns the button, so there is nothing to configure.

<CodeGroup>
  ```typescript TypeScript theme={null}
  const message = await zavu.messages.send({
    to: "US.13491208655302741918",
    channel: "whatsapp",
    messageType: "request_contact_info",
    text: "Share your phone number so our team can call you back."
  });
  ```

  ```python Python theme={null}
  message = zavu.messages.send(
      to="US.13491208655302741918",
      channel="whatsapp",
      message_type="request_contact_info",
      text="Share your phone number so our team can call you back."
  )
  ```

  ```ruby Ruby theme={null}
  message = client.messages.send(
    to: "US.13491208655302741918",
    channel: "whatsapp",
    message_type: "request_contact_info",
    text: "Share your phone number so our team can call you back."
  )
  ```

  ```go Go theme={null}
  message, err := client.Messages.Send(context.TODO(), zavudev.MessageSendParams{
      To:          zavudev.String("US.13491208655302741918"),
      Channel:     zavudev.String("whatsapp"),
      MessageType: zavudev.String("request_contact_info"),
      Text:        zavudev.String("Share your phone number so our team can call you back."),
  })
  ```

  ```php PHP theme={null}
  $message = $client->messages->send([
      'to' => 'US.13491208655302741918',
      'channel' => 'whatsapp',
      'messageType' => 'request_contact_info',
      'text' => 'Share your phone number so our team can call you back.',
  ]);
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.zavu.dev/v1/messages \
    -H "Authorization: Bearer zv_live_xxx" \
    -H "Content-Type: application/json" \
    -d '{
      "to": "US.13491208655302741918",
      "channel": "whatsapp",
      "messageType": "request_contact_info",
      "text": "Share your phone number so our team can call you back."
    }'
  ```
</CodeGroup>

`to` can be a phone number or a BSUID. Asking a phone-number contact is valid too, for example to confirm the best callback number.

## Receiving the Answer

The reply arrives as a standard `message.inbound` webhook with `messageType: "contact"`, carrying the shared number in `content.contacts`:

```json theme={null}
{
  "type": "message.inbound",
  "data": {
    "messageId": "msg_xyz789",
    "from": "US.13491208655302741918",
    "channel": "whatsapp",
    "messageType": "contact",
    "content": {
      "contacts": [
        {
          "name": "Sheena",
          "phones": ["+16505551234"]
        }
      ]
    }
  }
}
```

<Note>
  When the sender was only known by BSUID, Zavu automatically links the shared phone number to that contact. You do not need to update the contact yourself: from that point on, the phone number and the BSUID resolve to the same contact and conversation.
</Note>

## In Templates

Outside the 24-hour window, use a template with a `request_contact_info` button instead. See [Template Button Types](/guides/whatsapp/templates/overview#button-types).

## Specifications

| Property     | Requirement                         |
| ------------ | ----------------------------------- |
| text         | Required, max 1024 characters       |
| content      | Not used                            |
| channel      | WhatsApp only                       |
| Button label | Fixed by WhatsApp, not customizable |

<Note>
  Like every non-template message, a contact info request needs an open [24-hour conversation window](/guides/whatsapp/overview). Outside the window, open the conversation with a template first.
</Note>

## Use Cases

* Recovering a callable number for a [username contact](/guides/whatsapp/usernames) known only by BSUID
* Confirming the best callback number before a support call
* Collecting a number for SMS fallback or delivery notifications
* Identity checks that require a verified phone number
