From journey to mailbox: create marketing lists based on customer behavior

Digital channels dominate marketing, but physical mailings remain relevant for many companies – especially in combination with digital touchpoints. But how do you choose the right contacts for mailing? And how do you automate this process efficiently?

In this article, you will learn how to use Customer Insights – Journeys to create an automated selection for your analog mailing campaign. We will show you how to generate a static marketing list from an email campaign based on user behavior, which can then be used for mailing or similar.

In the initial scenario, samples were only to be sent to contacts who had previously confirmed this by clicking on an offer e-mail. The click in the email is recorded in the journey and places the contact on a marketing list, which then allows targeted further processing.

Here you can find out how to implement this process in just a few steps – and how to reuse it later.

Create trigger

First, we create a custom trigger in Customer Insights – Journeys. In addition to the contact, this requires an entity reference to marketing lists. This way, we can later select any marketing list in a journey if the trigger is to be activated.

Create a new marketing list

Next, we need to create a static marketing list. I tend to add marketing lists to the sitemap in Customer Insights – Journeys anyway, as many marketing teams still work with the entity on a regular basis. If marketing lists are not present in the sitemap, then simply use an alternative app (e.g. Sales Hub) or the browser add-in “Levelup” to navigate to the table, or manipulate the URL by opening any table view and deleting everything after "&pagetype=entitylist&etn=" and then entering the name “list”.

With the new marketing list, it is important that you set “Targeted At” to Contacts and select the “List Type” statically. Everything else is irrelevant for our purpose.

Create a Power Automate Flow for the logic

The trigger allows us to define WHEN a contact should be added to a marketing list within Customer Insights – Journeys. HOW this happens must be defined with a Power Automate flow. To do this, go to Power Automate and create a new automated flow. It is important that the trigger “Dataverse: When an action is performed” is selected.

We can find the previously created trigger in the “Cxp” catalog under the “Custom” category. The table name here is always “none” and the action name is the same as we named the trigger before. As always in new Power Automate flows, I like to trigger the flow once initially and get the triggerOutputs()?['body'] in a Compose action so that I understand the data structure better.

Testing the trigger

A customer trigger can be triggered manually for testing at any time. To do this, open the trigger data record and enter any values in the fields provided and click on “Send test”. A short time later, the flow you have just created is triggered.

Trigger Output

As a result of the trigger test, we receive the following JSON object in the compose action. This is great to work with: In line 4 we find the GUID of the marketing list and in line 13 the GUID of the contact.

{
    "InputParameters": {
        "msdynmkt_marketinglist": {
            "Id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxb09",
            "LogicalName": "list",
            "Name": null,
            "KeyAttributes": [],
            "RowVersion": null
        },
        "msdynmkt_signalingestiontimestamp": "2025-03-03T11:33:36.95Z",
        "msdynmkt_signaltimestamp": "2025-03-03T11:33:36.921Z",
        "msdynmkt_signaluserauthid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx163",
        "msdynmkt_profileid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx163",
        "msdynmkt_bindingid": ""
    },
    "OutputParameters": {},
    "SdkMessage": "msdynmkt_addtostaticlist_112247613",
    "RunAsSystemUserId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxb69"
}

Structure and sequence of the Power Automate flow

First, I set two variables for the IDs of the contact and the marketing list so that I can easily reuse the values later.

Contact ID@{triggerOutputs()?[‘body/InputParameters/msdynmkt_profileid’]}
List ID@{triggerOutputs()?[‘body/InputParameters/msdynmkt_marketinglist/Id’]}

We should then check whether the contact may already exist on the marketing list, because then the action would throw an error later, which we want to avoid. To carry out the check, we can perform a “List rows” action for the “listmembers” table. We can then use the length() function to check whether at least one value was found. If so, the flow can be aborted at this point.

Filter rows_entityid_value eq ‘@{variables(‘Contact’)}’ and _listid_value eq ‘@{variables(‘Marketing List’)}’
Conditionlength(outputs(‘Check_for_presence_of_contact_in_the_list’)?[‘body/value’]) is greater than 0

If no value was found, we can add the contact to the marketing list with a “bound action”. That’s all for the flow. The flow can be reused later for all possible scenarios and marketing lists.

Create the journey

To use the trigger and actually react to user behavior, we create a new journey in Customer Insights – Journeys. In this case, we start with a segment to which an email is sent. With a series, I now wait 2 weeks for the recipient to click on the desired link. The advantage of the series over the “Wait for Trigger” in combination with “Email Link clicked” is that other links in the email can also be clicked beforehand – more information on this here in Pauline’s blog.

If the link is now clicked in the defined period, the path of our journey continues and we can trigger our custom trigger. We have to specify a list. Switch here from “Attribute” to “Value” to be able to select a static value and thus specify the desired marketing list.

If the recipient now clicks on the link, the journey can switch to the “Exit condition met” path and triggers our trigger. This starts the Power Automate Flow and places the recipient contact on the static marketing list 😍.

Where do we go from here?

Marketing lists, especially static marketing lists, continue to be central components in sales and marketing for many companies. They currently have some key handling advantages over the customer insights segment:

  • Filter members to show the sales manager their own contacts, for example.
  • Simple manual addition or removal, even for sales employees – this may be necessary, especially if marketing and sales work very closely together.
  • Export any columns from the contact or linked data records to Excel using the standard export function, for example to create a mailing list.

The static marketing list offers the necessary flexibility here, which the segments, mainly designed for automation do not currently provide. With marketing lists based on user behavior, digital and analog touchpoints can be optimally combined to efficiently manage hybrid campaigns.

Image by pikisuperstar on Freepik


Stay informed

Never miss a new post and simply subscribe to the newsletter.

Leave a Comment

Your email address will not be published. Required fields are marked *