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

# Manage Subscription Preferences with Landing Pages

> Build an email preference center with MoEngage landing pages so users can choose which email categories they receive, stored on their profile natively.

Use landing pages to build a preference center—a branded page where your users choose which email categories they want to receive, including the option to unsubscribe from all email. MoEngage stores their choices on their profile natively, so your future email campaigns are sent according to each user's preferences.

This page covers building the preference center in the drag-and-drop editor. For a fully custom HTML landing page, use the [JavaScript bridge methods](#use-a-fully-custom-html-landing-page) instead.

> [!NOTE]
>
> **Prerequisites**
>
> * Access to the *Landing Pages* feature. If you don't have it, contact your MoEngage Customer Success Manager (CSM) or the Support team.
> * Subscription categories and groups configured for email. The landing page reads the categories and groups you have already defined. To set them up, see [Configure Subscription Categories](/docs/user-guide/campaigns-and-channels/email/getting-started-with-email/configure-subscription-categories).

# Use Cases

A landing page preference center supports the following use cases:

* **Branded preference center**: Match the preference page to your brand's look and feel—logo, fonts, and colors—instead of using the default styling.
* **Granular opt-in and opt-out**: Let users subscribe to or unsubscribe from specific categories, such as newsletters, promotions, or product updates, instead of only unsubscribing from all email.
* **Lower unsubscribe rates**: Offer category-level choices as an alternative to opting out of everything, so users stay subscribed to the content that is relevant to them.
* **Self-serve preference updates**: Let users update their own email preferences at any time, stored natively in MoEngage without any manual sync.

# How It Works

## What You Build

In the landing page editor, you build the preference center using either the [Subscription Categories element](#use-the-subscription-categories-element) or a [custom form](#build-a-custom-form-mapped-to-categories) mapped to your categories, and then publish it. MoEngage connects the page directly to the email subscription categories you configured in settings.

## What Your Users See

When a user opens a page built with the Subscription Categories element, it shows their current preferences with the categories they are subscribed to already selected. The user changes their selections and saves, and MoEngage stores the updates on their profile so that future email campaigns respect them. A custom form behaves differently—see [Build a Custom Form Mapped to Categories](#build-a-custom-form-mapped-to-categories).

> [!NOTE]
>
> For MoEngage to fetch and save a user's preferences, it must be able to identify the user (resolve their MoEngage ID). This is resolved automatically when the preference center link is delivered through a MoEngage channel, such as an email campaign. If the page is opened without this context, MoEngage can't identify the user, so it can't prefill or save preferences.

You can build the preference center in two ways:

| Approach | When to use it |
| - | - |
| [Subscription Categories element](#use-the-subscription-categories-element) | You want to show all of your configured categories and groups. This is the most common use case and requires the least setup. |
| [Custom form mapped to categories](#build-a-custom-form-mapped-to-categories) | You want to collect preferences for only specific categories, or design the fields yourself. |

# Use the Subscription Categories Element

The **Subscription Categories** element pulls in every subscription category and group you have configured for email, so you don't have to recreate them on the page.

> [!TIP]
>
> To start from a ready-made page, select the **Your Own Preference Centre** template in the template gallery when you create the landing page. It already includes the Subscription Categories element connected to your configured categories, so you can style it and publish it without building the page from scratch. The steps below cover adding the element to any page yourself.

![Landing page template gallery showing the Your Own Preference Centre and Preference Update Success templates.](https://mintcdn.com/moengage/6H3W54wYHH0YyChf/images/lp-preference-templates.png?fit=max\&auto=format\&n=6H3W54wYHH0YyChf\&q=85\&s=b7ea59ed8021f04ab908717302ad2b65)

1. In the landing page editor, open the elements panel and scroll to the **Custom** section.

![Subscription Categories element highlighted in the Custom section of the landing page editor's Add Elements panel.](https://mintcdn.com/moengage/6H3W54wYHH0YyChf/images/lp-subscription-categories-element.png?fit=max\&auto=format\&n=6H3W54wYHH0YyChf\&q=85\&s=12fbf27bf187820b78463cd8e205ced9)

2. Drag the **Subscription Categories** element onto the canvas. All your configured categories appear automatically, each with its display name, description, and a checkbox.

![Dragging the Subscription Categories element onto the canvas, where all configured categories appear with checkboxes.](https://mintcdn.com/moengage/6H3W54wYHH0YyChf/images/lp-subscription-categories-canvas.gif?s=8b04b5c9cb30bfb7e39496215764cc77)

> [!NOTE]
>
> The element always reflects the categories and groups defined in your email subscription settings. You can't remove individual categories from the element—to change which categories exist, edit them in [Configure Subscription Categories](/docs/user-guide/campaigns-and-channels/email/getting-started-with-email/configure-subscription-categories).

## Configure the Element

Select the element to open its settings. The settings have two tabs: **Subscription Categories** and **Styling**.

On the **Subscription Categories** tab, configure the content and appearance:

| Setting | Description |
| - | - |
| Preference layout | Choose how the categories are laid out. |
| Show category description | Show or hide the description under each category. |
| Button text | The label for the save button. The default is *Update Preferences*. |
| Unsubscribe all description | The description shown for the built-in *Unsubscribe from all* option. |
| Background color | The background color of the element. |
| Button background color | The background color of the save button. |
| Button text color | The text color of the save button. |
| Button hover color | The button background color on hover. |

On the **Styling** tab, apply the [common styling options](/docs/user-guide/content/landing-pages/create/landing-page-editor#common-styling-options-for-elements) such as showing the element on desktop, padding, and margins.

![Configuring the Subscription Categories element across its Subscription Categories and Styling settings tabs.](https://mintcdn.com/moengage/6H3W54wYHH0YyChf/images/lp-subscription-categories-settings.gif?s=dc363a3a9a70eaababaeaa32aee755eb)

# Build a Custom Form Mapped to Categories

If you want to collect preferences for only specific categories—rather than showing the full list—build the fields yourself with the **Form** element and map each field to a subscription category.

1. In the elements panel, under **Essentials**, drag a **Form** element onto the canvas.

![Form element listed under the Essentials section of the landing page editor's Add Elements panel.](https://mintcdn.com/moengage/6H3W54wYHH0YyChf/images/lp-form-element-essentials.png?fit=max\&auto=format\&n=6H3W54wYHH0YyChf\&q=85\&s=6cd5704b3b76211d778591934f47b99e)

2. Select a field in the form to open the field editor. On the **Field** tab, set the **Type** to **Checkbox** or **Radio**—these are the only two field types you can map to a subscription category. Use a **Checkbox** so users can both opt in and opt out. A single Radio option can't be cleared once selected, so a user can't unsubscribe from that category.

![Field editor Type dropdown showing Radio and Checkbox options for a form field.](https://mintcdn.com/moengage/6H3W54wYHH0YyChf/images/lp-form-field-type.png?fit=max\&auto=format\&n=6H3W54wYHH0YyChf\&q=85\&s=16bed6f0a547ee67a8ac2ba17f118e70)

3. Add a label for the field—for example, *Promotions*—and give it a single option, such as *Opt-in for Promotions*.

![Custom form with Promotions and Marketing labels, each with a single opt-in option.](https://mintcdn.com/moengage/6H3W54wYHH0YyChf/images/lp-form-custom-labels.png?fit=max\&auto=format\&n=6H3W54wYHH0YyChf\&q=85\&s=6cd7620b107766f1b74f244bc96f98be)

4. Select the field, open the field editor's **Advanced** tab, and in the **Subscription categories** list, select the category to map the field to.

![Mapping a radio field to a subscription category using the Subscription categories dropdown on the field editor's Advanced tab.](https://mintcdn.com/moengage/6H3W54wYHH0YyChf/images/lp-form-advanced-subscription-categories.gif?s=9106093bd35573b0fe7614a5d8840ed3)

When the user submits the form, MoEngage sets each mapped category based on the input:

* **Selected** (checked, or any value entered) sets the subscription to `true`.
* **Not selected** (unchecked, or left blank) sets the subscription to `false`.

> [!WARNING]
>
> A custom form submits the state of its fields as shown. Unless the form reflects a user's current subscriptions when it opens, submitting it sets every mapped category the user didn't select to `false` and unsubscribes them—even from categories they were subscribed to before. To load and pre-select each user's current preferences automatically, use the [Subscription Categories element](#use-the-subscription-categories-element) instead.

> [!WARNING]
>
> A custom form maps preferences correctly only when each label has exactly one option mapped to one category. Follow these rules:
>
> * **One option per label.** Use a single checkbox or radio option under each label, mapped to a single subscription category.
> * **Don't add multiple options under one label mapped to the same category.** If more than one option maps to the same category, the category is set to `true` whenever any option is selected, which produces an incorrect preference.
> * **Free-text inputs are treated as a boolean.** If a mapped text field is left blank, the category is set to `false`; if the user enters any value, it is set to `true`.

## Show a Confirmation Page

Unlike the Subscription Categories element, a custom form doesn't show a built-in confirmation after a user saves their preferences. To confirm the update, publish a separate confirmation page and set it as the destination of the form's submit button.

1. Create a landing page using the **Preference Update Success** template—a ready-made page that shows a "Your preferences have been updated" message—and publish it. Copy its published URL. You can also build and publish your own confirmation page instead.
2. In your preference form, select the submit button and click the **Link** icon.
3. On the **URL** tab, in the **Link to** field, enter the published confirmation page URL. For more information about link options, refer to [Landing Page Editor](/docs/user-guide/content/landing-pages/create/landing-page-editor#common-styling-options-for-elements).

When a user submits the form, MoEngage saves their preferences and redirects them to your confirmation page.

![Preference Update Success template showing a Thank you confirmation that the user's preferences have been updated.](https://mintcdn.com/moengage/6H3W54wYHH0YyChf/images/lp-preference-update-success.png?fit=max\&auto=format\&n=6H3W54wYHH0YyChf\&q=85\&s=347a7c935deccae04259872fcf92b1c7)

# Publish and Share the Preference Center

After you finish building the page, publish it and deliver it to your users so they can manage their preferences.

1. Publish your landing page and copy its URL.
2. Deliver the page through a MoEngage channel—for preference management, this is typically an [email campaign](/docs/user-guide/campaigns-and-channels/email/create/create-an-email-campaign). For example, add the URL as the manage-preferences link in your email. Delivering through a channel lets MoEngage identify each user and personalize the page for them.

> [!TIP]
>
> To make this page the one users reach from the **Manage preferences** link in your email footer, set its URL as the custom landing page in **Settings** > **Channel** > **Email** > **Subscription Categories**. Because the footer link carries the user's identity, the page prefills and saves preferences natively, without the connector or API steps used for externally hosted pages. For more information, refer to [Configure Subscription Categories](/docs/user-guide/campaigns-and-channels/email/getting-started-with-email/configure-subscription-categories#custom-landing-page).

When a user opens a page built with the Subscription Categories element, they see their current preferences with their subscribed categories already selected. They change their selections and click the save button (by default, **Update Preferences**), and MoEngage updates the subscription categories on their profile.

![Published preference center as an end user sees it, with subscription categories, descriptions, checkboxes, and an Unsubscribe from all option.](https://mintcdn.com/moengage/6H3W54wYHH0YyChf/images/lp-subscription-categories-published.png?fit=max\&auto=format\&n=6H3W54wYHH0YyChf\&q=85\&s=af3c3d50267e5f4c10fd1a8527b23152)

To confirm that updates are saved, check the **Subscription Categories** section of the [user profile](/docs/user-guide/campaigns-and-channels/email/getting-started-with-email/configure-subscription-categories#view-user-preferences).

# Use a Fully Custom HTML Landing Page

If you host a fully custom HTML landing page instead of building it in the drag-and-drop editor, use the MoEngage JavaScript bridge to read and write subscription categories:

* `Moengage.getEmailSubscription()` fetches the user's current preferences so you can pre-fill the form.
* `Moengage.updateEmailSubscription(<subscription_object>)` writes the user's updated preferences back to MoEngage.

```javascript JavaScript theme={null}
Moengage.updateEmailSubscription({
  is_globally_unsubscribed: false,
  categories: {
    "New_Product_Launches": true,
    "Price_drop_alerts": false
  }
});
```

For the method reference and examples, see [JavaScript Bridge for On-Site Messaging and Landing Pages](/docs/developer-guide/components-for-sdk/javascript-bridge/javascript-bridge-for-on-site-messaging-and-landing-pages#email-subscription-preferences).


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