How to capture recipient preferences from your preference lists

Understanding your audience's preferences are crucial. Imagine having the ability to peek behind the curtain and witness the precise moments when contacts choose to engage or disengage with your content. Well, buckle up because, with preference lists and custom reports, you can do just that!

Before we begin, you will need to have at least one preference list. If you do not have one, you can create one. To do this, go to the menu, make your way over to Lists > Preference Lists and create a new preference list. If you need help creating the list you can follow the instruction outlined in our documentation here.

Now that you have a preference list, We will create our own custom view that connects preference list data with contact data. After that, we will create a custom report that pulls in data from that custom view.

Creating a custom view:

Click into the Analytics section from the left navbar.

Select View.

Click New.

For this type of view, we want to join the following tables together:

  • PreferenceList
  • PreferenceListEntry
  • Recipient
  • Contacts

Here is an example of how this should be connected together:

We are ready to build our custom report!

Creating a custom report:

On the left navbar, click into Analytics again.

Select Custom Reports.

Click the Create button and select "Advanced Report"

Enter the following settings:

  • Data Source: Custom Views
  • Table/View: CustomPreferenceListRecipientContacts (if you named your custom view differently, then select that view instead)
  • Report Type: Tabular
  • Report Name: Preference List Member Details (This can be any name you want)
  • Report Description: Enter anything you want here.
  • Shared Report: Check this if you want to share this report with other users.
  • Select Folder: Select the folder you want to store this report in.

Click Save.

In the Columns tab, add the fields you want to see in the report by clicking the Add New button

The fields that I will add for this example are:

  • PreferenceList.Name
  • Contacts.Email
  • PreferenceListEntry.Optin
  • PreferenceList.CreateDate
  • PreferenceList.UpdateDate

This report is currently not filtering on anything and that is fine if you want to report across all of your preference lists. If you are only interested in one specific preference list, then you can add a filter of:

PreferenceList.PreferrenceListID Equals {enter in the ID of the preference list}

When you preview the report, it should look similar to this:

The PreferenceListEntry.Optin will say true or false, depending if they are opted in or not.

The CreateDate field will give you the date when that contact or lead was added to the preference list.

The UpdateDate will give you the last time this entry was updated in the list.


By creating a personalized view and harnessing the power of custom reports, you've gained insights that will elevate your communication strategy. You're not just equipped with data; you have a roadmap for action.

Take this knowledge and weave them into your strategy, tailoring your approach based on when contacts opt in or out. Whether it's adjusting content, refining timing, or enhancing personalization, the data from your custom report is your guide.

Your communication strategy is now a dynamic, evolving entity, and the information you've unlocked is the key to its ongoing enhancement. 

  • This is great! Thank you for putting this together. Looking at the report preview, I can see how this detailed data can be valuable. 

  • Great post Lori! This info will be very valuable to customers, partners and Sugar employees.

    James Brown

    Professional Services Manager


  • Hi  

    Many thanks for this info. It's relevant for our team as we're working on the initial design for our preference centre. With the proposed reforms to the Australian Privacy Principles likely to come in 2024, we need a report to identify when a user has subscribed (or unsubscribed) to a list. 

    I've followed your steps and tested it in our UAT account. I created a new preference list and 6 minutes later, added a test account as a subscriber to this list (added via a test email / clicking on the preference page link). What I noticed when I ran the report was the 'preference list create date' is populating the same day and time as the 'preference list update date' field. How do I get the report to give the date/time when someone has unsubscribed or subscribed from it? Or have I missed a step in this process?  



  • Therese,

    Thank you for letting me know that this article was helpful! Regarding the report, I believe that the PreferenceList.CreateDate is the timestamp for when the email address was added to the list and not when when the preference list itself was created. 

    The PreferenceList.UpdateDate would be the same as the CreateDate until the same email address goes back to the list and changes their preference. Once they change their preference to something else, then the UpdateDate should reflect that timestamp for when they last made a change to their preference.

    Please let me know if this helps to clarify these fields or if you are seeing different behavior when you change your preference.


  • Thanks for this quick reply  

    I've tested it again (via the preference link in the email, changing from what was already opted in to opt-out). It records the preference change, but the timestamp doesn't change. 

    What you've described above is exactly what we need. The report doesn't show the timestamp activity when a user updates their preferences. I'll pop a ticket into Support with some screenshots.



  • Perfect. Submitting a support ticket so that wee can investigate this further was exactly what I was going to ask you do! 

  •   I received the case and just added an update but I wanted to post here as well so that if anyone else wants this use case they can see my method to get the needed data. 

    The issue with the dates is that the preferencelist.updatedate only shows when the last time the name or description of the list has been changed.  To see when individual records changed, we need to use the preferenceListOptInHistory.EventDate.  The view above will pull in that field so it can be seen in the report along with what value the contact submitted for their status.  I built it off the contacts table so it just requires a filter that pulls in records with a preferenceListEntry.Optin value of 1 or 0.