Velocity script to vary the From Address based on segmentation | Community
Skip to main content
Level 2
Feb 5, 2019 1:06 AM UTC
Solved

Velocity script to vary the From Address based on segmentation

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.
SanfordWhiteman
SanfordWhitemanAccepted solution
Level 10
Feb 5, 2019 1:40 AM UTC

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

10 replies

Jay_Jiang
Level 10
Feb 5, 2019 2:17 AM UTC

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

Translate
SanfordWhiteman
Level 10
Feb 5, 2019 2:24 AM UTC

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.

Translate
Level 2
Feb 5, 2019 5:51 PM UTC

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.

Translate
SanfordWhiteman
SanfordWhitemanAccepted solution
Level 10
Feb 5, 2019 1:40 AM UTC

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

Translate
Level 2
Feb 5, 2019 7:58 PM UTC

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

Translate
SanfordWhiteman
Level 10
Feb 5, 2019 9:17 PM UTC

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.

Translate