I am experimenting with having a "Preferred Channel" picklist field on a Custom Preference Center Page hosted on CloudPages and would like to restrict field values to a specific subset of picklist values that are located as different rows in a designated Data Extension. I'd like to have this data attribute be limited to a single value, selected by the end user, within an expected range of values, so that it can be used as in Attribute Decision Split within Journey Builder.

Data Extension Details:
Data Attribute: Preferred Channel, Text(50)
Data Attribute: MatchId, Number, Default '1'

Data Extension Rows (3):
'Preferred Channel', 'MatchId' (Headers)
'Email', '1'
'SMS', '1',
'Phone Call', '1'

Here is the code that I'm currently working on, but I'm not able to return the values

var @matchId, @picklistValues, @preferredChannel, @numRowsToReturn, @rowCount, @i /*Declare variables*/
set @matchId = '1' /*Matching Key to return correct rows from designated Data Extension*/
set @numRowsToReturn /* Default: returns up to the first 2000 rows*/
set @picklistValues = LookupOrderedRows('Preferred Channel Picklist', @numRowsToReturn, 'Preferred Channel asc', 'MatchId', @matchId)
/*Grabs all rows (up to 2000) from the 'Preferred Channel Picklist' Data Extension, sorted by the Preferred Channel Data Attribute where rows have a
matching matchId of '1', which is the default value for all rows designated in this Data Extension*/
set @rowCount = rowcount(@picklistValues) /*Determine row count based on number of rows that exist in the data extension, up to 2000*/

if @rowCount > 0 then

  for @i = 1 to @rowCount do

    var @preferredChannel
    set @row = row(@picklistvalues, @i) /* get row based on counter */
    set @preferredChannel = field(@row,"Preferred Channel")

    if @i == 1 then


    <li style="border-bottom: 1px solid #ebeced;">

    if @i == @rowcount then

    next @i


%%[ else ]%%

No rows found

%%[end if]%%


Note: I believe I'll need to do some additional work for those values to return as a dropdown in the picklist, but I wanted to confirm my approach, or if there is potentially an easier way to achieve managing attribute splits for "Preferred Channel' in Journeys based on a single attribute.

  1. You need to set @numRowsToReturn = 0, if you don't LookupOrderedRows() will fail
  2. You have a typo in variable name to return the output, instead of %%=v(@prefferedChannel)=%% use %%=v(@preferredChannel)=%%
  3. At the end of your code there is incorrect end if with space, instead of %%[end if]%% do %%[endif]%%
  4. At the very end there is a uncessesary ]%% - remove it

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.