--- 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.**  ### 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.**     ## 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.**   ## 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 %}