> For the complete documentation index, see [llms.txt](https://docs.360dialog.com/partner/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.360dialog.com/partner/messaging/sending-and-receiving-messages/text-messages/interactive-messages/address-messages-india-and-singapore-only.md).

# Address Messages (India and Singapore only)

{% hint style="warning" %}
This feature is only available for businesses based in Singapore and their Singapore customers, and businesses based in India and their Indian customer&#x73;**.**
{% endhint %}

Address messages are a type of [interactive message](/partner/messaging/sending-and-receiving-messages/text-messages/interactive-messages.md) used by businesses to collect or update address information from their customers.&#x20;

It consists of four main components: `header`, `body`, `footer`, and `action` and Inside the action component business can specify the name “`address_message`” and relevant parameters.&#x20;

The steps involved in an Address Message are the following:

1. Business sends an address message with the action name `address_message` to the user
2. User interacts with the message by clicking on the CTA button, which brings up an Address Message screen. The user fills out their address and submits the form
3. After the address message form is submitted by the user, the partner receives a webhook notification, which contains the details of the address submitted by the user

#### **Sample India Address Message**

<figure><img src="/files/HFfH4Hi87RzVp2aw3BbP" alt=""><figcaption></figcaption></figure>

#### **Sample Singapore Address Message**

<figure><img src="/files/hLJwV1hGq5DVAopd8bqR" alt=""><figcaption></figcaption></figure>

The table below outlines which fields are supported in which country specifically:

<table><thead><tr><th width="194">Field Name</th><th>Display Label</th><th>Input Type</th><th>Supported Countries</th><th>Limitations</th></tr></thead><tbody><tr><td><code>name</code></td><td>Name</td><td>text</td><td>India, Singapore</td><td>None</td></tr><tr><td><code>phone_number</code></td><td>Phone Number</td><td>tel</td><td>India, Singapore</td><td>Valid phone numbers only</td></tr><tr><td><code>in_pin_code</code></td><td>Pin Code</td><td>text</td><td>India</td><td>Max length: 6</td></tr><tr><td><code>sg_post_code</code></td><td>Post Code</td><td>number</td><td>Singapore</td><td>Max length: 6</td></tr><tr><td><code>house_number</code></td><td>Flat/House Number</td><td>text</td><td>India</td><td>None</td></tr><tr><td><code>floor_number</code></td><td>Floor Number</td><td>text</td><td>India</td><td>None</td></tr><tr><td><code>tower_number</code></td><td>Tower Number</td><td>text</td><td>India</td><td>None</td></tr><tr><td><code>building_name</code></td><td>Building/Apartment Name</td><td>text</td><td>India</td><td>None</td></tr><tr><td><code>address</code></td><td>Address</td><td>text</td><td>India, Singapore</td><td>None</td></tr><tr><td><code>landmark_area</code></td><td>Landmark/Area</td><td>text</td><td>India</td><td>None</td></tr><tr><td><code>unit_number</code></td><td>Unit number</td><td>text</td><td>Singapore</td><td>None</td></tr><tr><td><code>city</code></td><td>City</td><td>text</td><td>India, Singapore</td><td>None</td></tr><tr><td><code>state</code></td><td>State</td><td>text</td><td>India</td><td>None</td></tr></tbody></table>

#### Additional Action Parameters <a href="#additional-action-parameters" id="additional-action-parameters"></a>

The business can pass additional attributes such as `values`, `validation_errors`, or `saved_addresses` as part of the interactive action parameters. You can find information on each of their usage below.

<table><thead><tr><th width="343">Action Parameter</th><th>Usage</th></tr></thead><tbody><tr><td><code>values</code></td><td>Businesses prefill this for address fields (eg. prefilling the city address field with “Singapore”)</td></tr><tr><td><code>saved_addresses</code></td><td><p>For businesses, they can pass in saved addresses previously associated with the user.</p><p>For users, they are presented with the option to choose the saved address instead of manually filling it in</p></td></tr><tr><td><code>validation_errors</code></td><td>Businesses can throw errors in the address fields and WhatsApp will prevent the user from submitting the address until the issue(s) are/is resolved.</td></tr></tbody></table>

### Send an Address Messages

Use this [endpoint](https://docs.360dialog.com/docs/messaging-api/api-reference/messages#post-messages) to send an end-to-end encrypted address message to the user:

```json
{
            "messaging_product": "whatsapp",
            "recipient_type": "individual",
            "to": "PHONE_NUMBER",
            "type": "interactive",
            "interactive": {
                 "type": "address_message",
                 "body": {
                       "text": "Thanks for your order! Tell us what address you’d like this order delivered 
                        to."
                 },
                "action": {
                      "name": "address_message",
                      "parameters": "JSON String Payload"
                 }
            }
     }
```

To send an address message **without any saved addresses**, WhatsApp will prompt the user or business with an address form to enter a new address.

**India**

```json
{
      "messaging_product": "whatsapp",
      "recipient_type": "individual",
      "to": "+91xxxxxxxxxx",
      "type": "interactive",
      "interactive": {
        "type": "address_message",
        "body": {
          "text": "Thanks for your order! Tell us what address you’d like this order delivered to."
        },
        "action": {
          "name": "address_message",
          "parameters": "{\"country\":\"IN\",\"values\":{\"name\":\"CUSTOMER_NAME\",\"phone_number\":\"+91xxxxxxxxxx\"}}"
        }
      }
   }
```

**Singapore**

```json
{
      "messaging_product": "whatsapp",
      "recipient_type": "individual",
      "to": "+65xxxxxxxxxx",
      "type": "interactive",
      "interactive": {
        "type": "address_message",
        "body": {
          "text": "Thanks for your order! Tell us what address you’d like this order delivered to."
        },
        "action": {
          "name": "address_message",
          "parameters": "{\"country\":\"SG\",\"values\":{\"name\":\"CUSTOMER_NAME\",\"phone_number\":\"+65xxxxxxxxxx\"}}"
        }
      }
   }
```

To send an address message with saved addresses, WhatsApp will prompt the user or business with an option to select among the saved addresses or add an address option. Users can ignore the saved address and enter a new address.

**India**

```json
{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "91xxxxxxxxxx",
  "type": "interactive",
  "interactive": {
    "type": "address_message",
    "body": {
      "text": "Thanks for your order! Tell us what address you’d like this order delivered to."
    },
    "action": {
      "name": "address_message",
      "parameters": "{\"country\":\"IN\",\"saved_addresses\":[{\"id\":\"address1\",\"value\":{\"name\":\"CUSTOMER_NAME\",\"phone_number\":\"+91xxxxxxxxxx\",\"in_pin_code\":\"400063\",\"floor_number\":\"8\",\"building_name\":\"\",\"address\":\"Wing A, Cello Triumph,IB Patel Rd\",\"landmark_area\":\"Goregaon\",\"city\":\"Mumbai\"}}]}"
    }
  }
}
```

**Singapore**

```json
{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "+65xxxxxxxxxx",
  "type": "interactive",
  "interactive": {
    "type": "address_message",
    "body": {
      "text": "Thanks for your order! Tell us what address you’d like this order delivered to."
    },
    "action": {
      "name": "address_message",
      "parameters": "{\"country\":\"SG\",\"values\":{\"name\":\"CUSTOMER_NAME\",\"phone_number\":\"+65xxxxxxxxxx\"},\"saved_addresses\":[{\"id\":\"address1\",\"value\":{\"name\":\"CUSTOMER_NAME\",\"phone_number\":\"+65xxxxxxxxxx\",\"sg_post_code\":\"018937\",\"address\":\"9 Straits View, Marina One West Tower\",\"unit_number\":\"Suite 29-00\",\"city\":\"Singapore\"}}]}"
    }
  }
}
```

#### Check Your Response <a href="#response" id="response"></a>

A successful response includes a `messages` object with an ID for the newly created message.

```json
{
  "messaging_product": "whatsapp",
  "contacts": [{
      "input": "PHONE_NUMBER",
      "wa_id": "WHATSAPP_ID",
    }]
  "messages": [{
      "id": "wamid.ID",
    }]
}
```

An unsuccessful response contains an error message. See[ Error Messages ](broken://pages/-MNcrLvdW3fbJD7J3Wif)for more information.

### Send an Address Message with Validation Errors

An address message should be re-sent to the user in the case of a validation error on the business server. The business should send back the set of values previously entered by the user, along with the respective validation errors for each invalid field, as shown in the sample payloads below.

**India**

```json
{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "91xxxxxxxxxx",
  "type": "interactive",
  "interactive": {
    "type": "address_message",
    "body": {
      "text": "Thanks for your order! Tell us what address you’d like this order delivered to."
    },
    "action": {
      "name": "address_message",
      "parameters": "{\"country\": \"IN\",\"values\": {\"name\": \"CUSTOMER_NAME\",\"phone_number\": \"+91xxxxxxxxxx\",\"in_pin_code\": \"666666\",\"address\": \"Some other location\",\"city\": \"Honolulu\"},\"validation_errors\": {\"in_pin_code\": \"We could not locate this pin code.\"}}"
    }
  }
}
```

**Singapore**

```json
{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "12065550107",
  "type": "interactive",
  "interactive": {
    "type": "address_message",
    "body": {
      "text": "Thanks for your order! Tell us what address you’d like this order delivered to."
    },
    "action": {
      "name": "address_message",
      "parameters": "{\"country\": \"SG\",\"values\": {\"name\": \"CUSTOMER_NAME\",\"phone_number\": \"+65xxxxxxxxxx\",\"sg_post_code\": \"666666\",\"address\": \"Some other location\",\"city\": \"Singapore\"},\"validation_errors\": {\"sg_post_code\": \"We could not locate this pin code.\"}}"
    }
  }
}
```

### Receive Notifications for Address Submissions

Businesses will receive address submission notifications through [webhooks](/partner/onboarding/webhook-events-and-setup/webhook-events-partner-and-messaging-api.md), such as the one shown below.

```json
{
    "messages": [
        {
           "id": "gBGGFlAwCWFvAgmrzrKijase8yA",
           "from": "PHONE_NUMBER",
           "Interactive": {
               "type":  "nfm_reply",
               "action":  "address_message",
               "nfm_reply": {
                   "name": "address_message",
                    "response_json": “<response_json from client>”,
                    "body": “<body text from client>”,
            }
           "timestamp": "1670394125",
           "type": "interactive"  
        }
    ]
}
```

The webhook notification has the following values.

| Field Name        | Type   | Description                                                                                |
| ----------------- | ------ | ------------------------------------------------------------------------------------------ |
| `interactive`     | Object | Holds the response from the client                                                         |
| `type`            | String | Would be `nfm_reply` indicating it is a Native Flow Response (NFM) from the client         |
| `nfm_reply`       | Object | Holds the data received from the client                                                    |
| `response_json`   | String | The values of the address fields filled by the user in JSON format that are always present |
| `body` (Optional) | String | Body text from client, what the user sees                                                  |
| `name` (Optional) | String | Would be `address_message` indicating the type of NFM action response from the client      |

An address message reply as an NFM response type for an India address message request is show below.

```json
{
   "messages": [
      {
          "context": {
	  "from": "FROM_PHONE_NUMBER_ID",
	  "id": "wamid.HBgLMTIwNjU1NTAxMDcVAgARGBI3NjNFN0U5QzMzNDlCQjY0M0QA"
           },
          "from": "PHONE_NUMBER",
         "id": "wamid.HBgLMTIwNjU1NTAxMDcVAgASGCA5RDhBNENEMEQ3RENEOEEzMEI0RUExRDczN0I1NThFQwA=",
         "timestamp": "1671498855",
         "type": "interactive",
         "interactive": {
	 "type": "nfm_reply",
	"nfm_reply": {
	      "response_json": "{\"saved_address_id\":\"address1\",\"values\":{\"in_pin_code\":\"400063\",\"building_name\":\"\",\"landmark_area\":\"Goregaon\",\"address\":\"Wing A, Cello Triumph, IB Patel Rd\",\"city\":\"Mumbai\",\"name\":\"CUSTOMER_NAME\",\"phone_number\":\"+91xxxxxxxxxx\",\"floor_number\":\"8\"}}",
                    "body": "CUSTOMER_NAME\n +91xxxxxxxxxx\n 400063, Goregaon, Wing A, Cello Triumph,IB Patel Rd, Mumbai, 8",
                    "name": "address_message"
                }
            }
        }
    ]
}
```

### Feature Not Supported

In the case where the client does not support `address_message`, messages are silently dropped and an error message is sent back to the business in a webhook. The webhook notification that would be sent back is shown below:

```json
{
  "statuses": [
    {
      "errors": [
        {
          "code": 1026,
          "href": "https://developers.facebook.com/docs/whatsapp/api/errors/",
          "title": "Receiver Incapable"
        }
      ],
      "id": "gBGGFlAwCWFvAgkyHMGKnRu4JeA",
      "message": {
        "recipient_id": "+91xxxxxxxxxx"
      },
      "recipient_id": "91xxxxxxxxxx",
      "status": "failed",
      "timestamp": "1670394125",
      "type": "message"
    }
  ]
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.360dialog.com/partner/messaging/sending-and-receiving-messages/text-messages/interactive-messages/address-messages-india-and-singapore-only.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
