--- title: "Self-Service Email Opt-Out Preference Manager" slug: "self-service-email-opt-out-preference-manager" status: "new" updated: 2026-07-21T20:44:44Z published: 2026-07-21T20:44:44Z canonical: "knowledge.technolutions.net/self-service-email-opt-out-preference-manager" stale: true --- > ## Documentation Index > Fetch the complete documentation index at: https://knowledge.technolutions.net/llms.txt > Use this file to discover all available pages before exploring further. # Self-Service Email Opt-Out Preference Manager Use an authenticated portal to show a person the message groups they have opted out of and provide a link to manage their email communication preferences. This pattern can help users understand why they may not be receiving certain communications and gives them a self-service path to resubscribe. > [!WARNING] > 📝 Note > > The screenshots in this article use an Applicant Status Portal example, but the pattern is not admissions-specific. You can use the same general approach in any authenticated user-facing portal where the portal method query can identify the logged-in person. > [!TIP] > ⭐ Get Inspired > > This article was adapted from [a post by Technolutions staff](https://community.technolutions.net/get-inspired/post/allow-email-opt-out-re-subscribe-within-a-status-portal-IMjBXaX9WmJYpZY) in the Slate Community Forums' Get Inspired space. Have a great idea for a Get Inspired post? [Let us know](https://community.technolutions.net/get-inspired/new?post_type=gnHx7As1gZ8r6Ld)! ## Adding the portal method query exports Add two subquery exports to the query associated with the portal method: - `subscription-page`: Creates a link to the recipient's unsubscribe management page. - `optout-groups`: Returns the message groups from which the person has opted out. ### Creating the subscription page export The `subscription-page` export creates a single URL that points to the unsubscribe management page for the person. 1. Open the query associated with the portal method. 2. Add a **Subquery Export**. 3. Configure the following settings: - **Name:** `subscription-page` - **Output:** Concatenate - **Row Offset:** `1` - **Row Limit:** `1` 4. Add a join from **Person** to **Messages**. 5. Add a filter for **Message Status** in **Optout**. 6. Add a literal value for your unsubscribe management URL prefix. Replace the example host with your database URL: ```URLprefix https://yourdatabaseurl.edu/go?r=optout&mid= ``` 7. Add an export for **Messages → GUID**. 8. Select **Save.** ![A subscription page subquery export that concatenates an opt-out URL prefix with a message GUID.](https://cdn.us.document360.io/cd8ea7a6-07f3-4846-a554-627ac016d3e3/Images/Documentation/01-zWbG18hsNbK1VZ494wKMl.webp) ### Creating the opt-out groups export The `optout-groups` export returns a dictionary that Liquid markup can loop through in the portal view. 1. Add another **Subquery Export**. 2. Configure the following settings: - **Name:** `optout-groups` - **Type:** Independent subquery - **Category:** Related - **Base:** Message Opt-Out - **Output:** Dictionary - **Row Offset:** `1` 3. Add a subquery filter that compares the **Message Opt-Out** recipient to the person's email address. 4. Add an export for **Message Opt-Out → Group**. 5. Rename the export `optout-name`. 6. Select **Save.** ![An independent Message Opt-Out subquery export configured with Dictionary output.](https://cdn.us.document360.io/cd8ea7a6-07f3-4846-a554-627ac016d3e3/Images/Documentation/02-s3wW3CmKlFlGBeaeSyBSx.webp) ![A comparison subquery filter that matches the Message Opt-Out recipient to the person email address.](https://cdn.us.document360.io/cd8ea7a6-07f3-4846-a554-627ac016d3e3/Images/Documentation/03-YH6uMXnp0y2Y5shSA2p5O.webp) ![A Message Opt-Out Group export renamed optout-name.](https://cdn.us.document360.io/cd8ea7a6-07f3-4846-a554-627ac016d3e3/Images/Documentation/04-0FgSyOjyRDN6HQQjuNmy1.webp) ![The completed opt-out groups dictionary subquery export.](https://cdn.us.document360.io/cd8ea7a6-07f3-4846-a554-627ac016d3e3/Images/Documentation/05-BHNaya09ZSixmUO59QYrO.webp) ## Adding the portal widget Add a Static Content widget to the portal view that should display the email preference information. In the Applicant Status Portal example, the widget is named **Email Preferences**. 1. Open the portal view. 2. Add a **Static Content** widget. 3. Add a filter so the widget appears only for records with message opt-outs. In the example, the filter looks for a person with a message status in **Optout**. 4. Select **Save.** ![A Static Content widget named Email Preferences.](https://cdn.us.document360.io/cd8ea7a6-07f3-4846-a554-627ac016d3e3/Images/Documentation/06-L5lTAzw2BD2aqn2LJKT7x.webp) ![A filter that limits the Email Preferences widget to records with message opt-outs.](https://cdn.us.document360.io/cd8ea7a6-07f3-4846-a554-627ac016d3e3/Images/Documentation/07-anl3ETgicQBBIsGf3fAXc.webp) ## Adding the Static Content source In the Static Content widget, use Liquid markup to loop through the `optout-groups` dictionary export and use the `subscription-page` merge field as the link URL. ```xml

Below is a list of your email opt-out preferences:

 {% for result in optout-groups %}    {{result.optout-name}}
 {% endfor %}

 Manage your email communication preferences.

``` > [!NOTE] > 💡 Tip > > Keep export names computer friendly so they can be referenced reliably in Liquid markup. Use lowercase names without spaces, such as `subscription-page`, `optout-groups`, and `optout-name`. ## Testing the portal display Use impersonation to test how the widget appears for records with different opt-out states. 1. Open the portal. 2. Select **Impersonate.** 3. Search for a test record with one or more message group opt-outs. 4. Confirm that the widget lists the expected message groups. 5. Select the preference-management link and confirm that it opens the unsubscribe management page. 6. Test a record without message group opt-outs and confirm that the widget does not appear. ![The portal impersonation option used to test the email preferences widget.](https://cdn.us.document360.io/cd8ea7a6-07f3-4846-a554-627ac016d3e3/Images/Documentation/08-mpr7zdcZJop0bSo3q3STY.webp) ![The email preferences widget shown in an Applicant Status Portal example.](https://cdn.us.document360.io/cd8ea7a6-07f3-4846-a554-627ac016d3e3/Images/Documentation/09-RmqBQiUI3YPtmJeGBVsbX.webp) ## Related articles - [Opt Out of Specific Communications with Message Groups](https://knowledge.technolutions.net/docs/en/opt-out-of-specific-communications-with-message-groups) - [The Unsubscribe Management Page](https://knowledge.technolutions.net/docs/en/the-unsubscribe-management-page) - [Using Liquid Markup in Portals](https://knowledge.technolutions.net/docs/en/using-liquid-markup-in-portals) - [The For Tag and Liquid Looping](https://knowledge.technolutions.net/docs/en/liquid-markup-looping) - [Portal Security Scopes & Access Filters](https://knowledge.technolutions.net/docs/en/portal-authentication-methods)