# Inbound contact cards

> One or more shared contact cards. Note the two contacts keys: data.contacts is the sender profile Meta attaches to every webhook, data.message.contacts is the card the customer shared.

Canonical: https://docs.whabuzz.com/events/inbound-contacts/

One or more shared contact cards. Note the two `contacts` keys: `data.contacts` is the sender profile Meta attaches to every webhook, `data.message.contacts` is the card the customer shared.

**Event type:** `message.inbound`. Fixture payloads are the WhaBuzz Demo tenant's real ids with a fictional customer number; `id`, `tenant_id` and `created_at` in envelopes are illustrative.

## A shared contact card {#contacts}

What Meta POSTs to WhaBuzz (`fixtures/meta/contacts.json`):

```json
{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "26059971920328384",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "14692311132",
              "phone_number_id": "1013622581841046"
            },
            "contacts": [
              {
                "profile": {
                  "name": "Kerry Fisher"
                },
                "wa_id": "16505551234",
                "user_id": "US.13491208655302741918"
              }
            ],
            "messages": [
              {
                "from": "16505551234",
                "from_user_id": "US.13491208655302741918",
                "id": "wamid.HBgLMTY1MDU1NTEyMzQVAgASGBQzQUY5QTdGNkU0RTFGMkI3QzFB11AA=",
                "timestamp": "1760591523",
                "type": "contacts",
                "contacts": [
                  {
                    "addresses": [
                      {
                        "city": "Hyderabad",
                        "country": "India",
                        "country_code": "IN",
                        "state": "TS",
                        "street": "1 Example Road",
                        "type": "HOME",
                        "zip": "500075"
                      }
                    ],
                    "birthday": "1990-01-31",
                    "emails": [
                      {
                        "email": "friend@example.com",
                        "type": "WORK"
                      }
                    ],
                    "name": {
                      "first_name": "Ravi",
                      "formatted_name": "Ravi Kumar",
                      "last_name": "Kumar"
                    },
                    "org": {
                      "company": "Example Co",
                      "department": "Ops",
                      "title": "Lead"
                    },
                    "phones": [
                      {
                        "phone": "+1 650-555-1235",
                        "wa_id": "16505551235",
                        "type": "CELL"
                      }
                    ],
                    "urls": [
                      {
                        "url": "https://example.com",
                        "type": "WORK"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          "field": "messages"
        }
      ]
    }
  ]
}
```

What your endpoint receives, as the body of a signed POST. `raw` is abbreviated here; on the wire it is the full body above.

```json
{
  "id": "evt_01JAB3K9X2S8C4M7Q1V5R6T0YZ",
  "type": "message.inbound",
  "api_version": "2026-10-16",
  "created_at": "2025-10-16T05:12:03.481Z",
  "tenant_id": "a578246e-b97f-48e6-ae42-939ec3ccf917",
  "waba_id": "26059971920328384",
  "phone_number_id": "1013622581841046",
  "display_phone_number": "14692311132",
  "wamid": "wamid.HBgLMTY1MDU1NTEyMzQVAgASGBQzQUY5QTdGNkU0RTFGMkI3QzFB11AA=",
  "wa_id": "16505551234",
  "user_id": "US.13491208655302741918",
  "dedupe_key": "msg:wamid.HBgLMTY1MDU1NTEyMzQVAgASGBQzQUY5QTdGNkU0RTFGMkI3QzFB11AA=",
  "data": {
    "messaging_product": "whatsapp",
    "metadata": {
      "display_phone_number": "14692311132",
      "phone_number_id": "1013622581841046"
    },
    "contacts": [
      {
        "profile": {
          "name": "Kerry Fisher"
        },
        "wa_id": "16505551234",
        "user_id": "US.13491208655302741918"
      }
    ],
    "message": {
      "from": "16505551234",
      "from_user_id": "US.13491208655302741918",
      "id": "wamid.HBgLMTY1MDU1NTEyMzQVAgASGBQzQUY5QTdGNkU0RTFGMkI3QzFB11AA=",
      "timestamp": "1760591523",
      "type": "contacts",
      "contacts": [
        {
          "addresses": [
            {
              "city": "Hyderabad",
              "country": "India",
              "country_code": "IN",
              "state": "TS",
              "street": "1 Example Road",
              "type": "HOME",
              "zip": "500075"
            }
          ],
          "birthday": "1990-01-31",
          "emails": [
            {
              "email": "friend@example.com",
              "type": "WORK"
            }
          ],
          "name": {
            "first_name": "Ravi",
            "formatted_name": "Ravi Kumar",
            "last_name": "Kumar"
          },
          "org": {
            "company": "Example Co",
            "department": "Ops",
            "title": "Lead"
          },
          "phones": [
            {
              "phone": "+1 650-555-1235",
              "wa_id": "16505551235",
              "type": "CELL"
            }
          ],
          "urls": [
            {
              "url": "https://example.com",
              "type": "WORK"
            }
          ]
        }
      ]
    }
  },
  "raw": {
    "…": "the complete Meta POST body, byte for byte, as shown above"
  },
  "raw_path": "entry[0].changes[0].value.messages[0]"
}
```
