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

# Request Contact Info Templates

> Ask a customer you know only by their business-scoped user ID to share their phone number with one tap.

A Request Contact Info template asks the customer to share their phone number with one tap. It is built for customers you can reach only by their **business-scoped user ID** — for example, someone who contacted you through their WhatsApp username, so you never received their phone number.

When the customer taps the button, WhatsApp shares their number in the chat and the Gateway forwards a `contacts` message to your webhook.

## How it works

1. You create a template with a **Request Contact Info** button and wait for Meta's approval.
2. You send the template to the customer through the Messaging API.
3. The customer taps **Share Contact Info**.
4. WhatsApp posts the customer's contact card in the chat.
5. Your webhook receives an incoming message with `type: "contacts"` that contains the phone number.

***

## Create the template in the panel

Follow the normal [Create Template](https://docs.gateway.connexease.com/dashboard/app/templates.md) steps. In **Step 4 — Template Content**:

1. Write the body. Explain why you need the number — for example, to deliver an order.
2. Click **+ Add Button** and select **Request Contact Info**.
3. Click **Next**, review the summary, and click **Create**.

The button has no fields to fill in:

| Property | Behavior |
| :- | :- |
| **Label** | Fixed. WhatsApp writes the label (**Share contact info**) and translates it into the customer's language. You cannot edit it. |
| **Other buttons** | **+ Add Button** is disabled once this button is added. The template carries this single button. |

> [!TIP]
>
> The body is the only place you can explain the request, so state the reason clearly. Customers are more likely to share their number when they know why you need it.

***

## Send the template

The button is static, so you don't add a `button` component. Send only the components your header and body need.

```bash cURL theme={null}
curl -X POST https://api.gateway.connexease.com/v1/wa/message \
  -H "Authorization: Bearer sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "messaging_product": "whatsapp",
    "to": "905321234567",
    "type": "template",
    "template": {
      "name": "request_contact_for_delivery",
      "language": { "code": "tr" }
    }
  }'
```

```python Python theme={null}
import requests

requests.post(
    "https://api.gateway.connexease.com/v1/wa/message",
    headers={"Authorization": "Bearer sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "Content-Type": "application/json"},
    json={
        "messaging_product": "whatsapp",
        "to": "905321234567",
        "type": "template",
        "template": {"name": "request_contact_for_delivery", "language": {"code": "tr"}}
    }
)
```

```javascript Node.js theme={null}
await fetch('https://api.gateway.connexease.com/v1/wa/message', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'Content-Type': 'application/json' },
  body: JSON.stringify({
    messaging_product: 'whatsapp',
    to: '905321234567',
    type: 'template',
    template: { name: 'request_contact_for_delivery', language: { code: 'tr' } }
  }),
});
```

If the body has variables, add a `body` component exactly as for any other template. See [Send Template Messages](https://docs.gateway.connexease.com/api-reference/templates/overview.md).

***

## Receive the shared number

When the customer taps the button, your webhook receives an incoming message with `type: "contacts"`. The envelope is the same as every other incoming message — see [Incoming Message Events](https://docs.gateway.connexease.com/api-reference/incoming-message-event.md).

```json theme={null}
{
  "from": "905399876543",
  "id": "wamid.xxx",
  "timestamp": "1792148600",
  "type": "contacts",
  "context": {
    "from": "905321234567",
    "id": "wamid.ORIGINAL_TEMPLATE_MESSAGE"
  },
  "contacts": [{
    "name": {
      "formatted_name": "Ayşe Yılmaz",
      "first_name": "Ayşe",
      "last_name": "Yılmaz"
    },
    "phones": [
      { "phone": "+90 539 987 65 43", "wa_id": "905399876543", "type": "CELL" }
    ]
  }]
}
```

| Field | Type | Description |
| :- | :- | :- |
| `context.id` | string | The `wamid` of the Request Contact Info template you sent. Use it to match the reply to your request. |
| `contacts[].phones[].phone` | string | The shared phone number, formatted for display. |
| `contacts[].phones[].wa_id` | string | The WhatsApp ID of the number, without `+` or spaces. Use this value in the `to` field of later messages. |

> [!NOTE]
>
> Sharing is the customer's choice. If they never tap the button, no `contacts` message arrives. Don't build a flow that waits for it indefinitely.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.