# Auto Subscribe

::: tip Note

Auto Subscribe is not available with the EMQX Serverless edition.

:::

Auto Subscribe is an enhanced MQTT feature supported by the EMQX Broker. When the auto subscription function is enabled, users can automatically subscribe clients to predefined topics upon successful connection. This eliminates the need for clients to send explicit `SUBSCRIBE` requests, as the EMQX Broker handles the subscription process automatically.

Prior to EMQX 5.0, this feature was known as Proxy Subscription.

## Configure Auto Subscribe in Console

1. Go to your deployment in the EMQX cloud Console. In the left menu, click **Monitor** -> **Auto Subscribe**.

2. On the **Auto Subscribe** page, click the **+ Add** button at the upper right corner.

3. In the **Add Auto Subscription** dialog, type the test topic `a/1` in the **Topic** text box. Leave other settings as default.

   - **Topic**: Type the topic to which the client will automatically subscribe. You can dynamically build the topic using placeholders. For details, see [Placeholders](#placeholders).
   - **QoS**: Specify the quality of service of the topic. Options: `0`, `1`, and `2`.
   - **No local**: Options: `False` or `True`.
   - **Retain as Published**: Specify if the message sent with the specified topic will be retained. Options: `False` or `True`.
   - **Retained Handling**: Options: `0`, `1`, and `2`.

   ![add_auto_subscription](./_assets/add_auto_subscription.png)
   
   Click the **Confirm** button. The auto subscribe topic `a/1` is created successfully.

Now, the auto subscription function is enabled. New subscribers will subscribe to the topic `a/1` automatically once they are connected to the EMQX Broker.

## Try Auto Subscription Using MQTTX

Topic `a/1` is configured as the auto-subscribe topic in [Configure Auto Subscribe in Platform Console](#configure-auto-subscribe-in-platform-console). The following procedure demonstrates how a client subscribes to the topic `a/1` automatically once it is connected to the EMQX Broker.

1. Open the [MQTTX Web](https://mqttx.app/web-client#/recent_connections). 

2. Click the **New Connection** to create a client connection as a publisher. Configure the following fields:

   - **Name**: Enter `Demo`.
   - **Host**: Enter the address in the **MQTT Connection Information** section on your deployment **Overview** page.
   - **Port**: Enter `8084`.
   - **Username** and **Password**: Configure the authentication information in your deployment's **Access Control** -> **Authentication** page and enter the credentials here.

   Leave other settings as default and click **Connect**.

3. Create another MQTT client connection named `Subscriber`.

4. Select client `Demo` in the **Connections** pane. Enter `a/1` as the topic. Send a message to this topic.

   - The client `Subscriber` receives the message automatically without creating a new subscription.

   - The client `Demo` also receives the message as it is also a new connection.

     ::: tip

     In the publish/subscribe pattern, a client can be both sender and subscriber.
     
     :::

5. Go to the EMQX Cloud console. From the left menu, click **Monitor** -> **Subscriptions**. You can see two subscriptions automatically subscribe to topic `a/1`.

   ![auto_subscribe_subscriptions](./_assets/auto_subscribe_subscriptions.png)

## Placeholders

Auto Subscribe supports placeholders to dynamically build topics. The format of the placeholder is `${}`. The variables supported by the placeholder are:

- `${clientid}`: Client ID.
- `${username}`: Client username.
- `${host}`: IP address when the client connects to the EMQX Broker.

For example, when the client ID is `emqx_c` and the configured topic is `a/${clientid}`, the client will automatically subscribe to the topic `a/emqx_c` after connecting to EMQX Broker.