Velocity script to vary the From Address based on segmentation | Community
Skip to main content
New Participant
February 5, 2019
Solved

Velocity script to vary the From Address based on segmentation

  • February 5, 2019
  • 2 replies
  • 4725 views

Hi everyone,

I've got a beans and bacon question for this amazing community here. The beans - segmentation. The bacon - Velocity scripting.

What I'm trying to do:

Use a token in the From Address field, to vary our sender email address. Do this by condition of segmentation that is referenced in the script token.

My testing methodology:

Purely by sending an email though the campaign. No test emails sends or previews.

What I've covered already:

Have ticked the check box in right hand panel for the variable. (Segmentation_Clubs_1003)

My Code:

#if($lead.Segmentation_Clubs_1003 == "Client1")

info@client1.com

#elseif($lead.Segmentation_Clubs_1003 == "Client2")

info@client2.com

#elseif($lead.Segmentation_Clubs_1003 == "Client3")

info@client3.com

#elseif($lead.Segmentation_Clubs_1003 == "Client4")

info@client4.com

#elseif($lead.Segmentation_Clubs_1003 == "Client5")

info@clent5.com

#elseif($lead.Segmentation_Clubs_1003 == "Client6")

info@client6.com

#elseif($lead.Segmentation_Clubs_1003 == "Clent7")

info@client7.com

#else

info@standard.com

#end

Results:

Email delivers but only displays the default from address (info@standard.com)

Any insight is much appreciated! Thank you!

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by SanfordWhiteman

Do it the collection-first way, it's both clearer and shorter:

#set( $senderByClub = {

"Client1" : "info@client1.com",

"Client2" : "info@client2.com",

"Client3" : "info@client3.com",

"Client4" : "info@client4.com"

} )

#set( $defaultSender = "info@standard.com" )

${display.alt($senderByClub[$lead.Segmentation_Clubs_1003],$defaultSender)}

The way you're doing it isn't wrong per se (although the use of == can get you into trouble and I recommend .equals() instead). But use the code above and see if it still fails.

Also, pls highlight code using the Advanced Editor:

https://s3.amazonaws.com/blog-images-teknkl-com/syntax_highlighter.gif

2 replies

Jay_Jiang
New Participant
February 5, 2019

Any reason why you wouldn't just use the built in Marketo dynamic content to change the email's from address?

SanfordWhiteman
New Participant
February 5, 2019

One reason is that you have to redo the dynamic content for every email, but the Velocity token can be shared by all email assets.

New Participant
February 5, 2019

That's correct. We need to add new values to this from time-to-time, and the solution will be applied to hundreds of active and new emails. A single scripting token would only need to be updated, rather than hundreds of emails each time.

SanfordWhiteman
SanfordWhitemanAccepted solution
New Participant
February 5, 2019

Do it the collection-first way, it's both clearer and shorter:

#set( $senderByClub = {

"Client1" : "info@client1.com",

"Client2" : "info@client2.com",

"Client3" : "info@client3.com",

"Client4" : "info@client4.com"

} )

#set( $defaultSender = "info@standard.com" )

${display.alt($senderByClub[$lead.Segmentation_Clubs_1003],$defaultSender)}

The way you're doing it isn't wrong per se (although the use of == can get you into trouble and I recommend .equals() instead). But use the code above and see if it still fails.

Also, pls highlight code using the Advanced Editor:

https://s3.amazonaws.com/blog-images-teknkl-com/syntax_highlighter.gif

New Participant
February 5, 2019

I'm getting a soft bounce when using this method.

SanfordWhiteman
New Participant
February 5, 2019

That's tested code (with a Seg from one of my instances) so that's surprising.

Output just the Segment value and see what happens.