0

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
          outputline(concat("<ul>"))
        endif

    ]%%

    <li style="border-bottom: 1px solid #ebeced;">
                %%=v(@prefferedChannel)=%%
           </li>
    %%[

    if @i == @rowcount then
          outputline(concat("</ul>"))
        endif

    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 Answer 1

1
  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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .