Email Script: Velocity and Alternating URLs in One Email Confirmation | Community
Skip to main content
Allison_Isett
Level 2
June 3, 2019
Question

Email Script: Velocity and Alternating URLs in One Email Confirmation

  • June 3, 2019
  • 1 reply
  • 3162 views
Hello, 
I'm hoping to get some developer insight related to switching a confirmation email's URL content based on day/time
with Velocity. Note, that I am not a developer-
I am trying to put together a script that will use one parent engagement program confirmation email that can include a personalize webinar URL based on the date of the event. The 5 webinars are nested inside of an engagement program, where I was hoping to set the script at the parent program level and the confirmation email would also trigger from the parent engagement program. 
I am getting hung up on where I would need to set the webinar dates, and URLS display the URLs? Can I set the webinar dates and URLs directly in the script token, or do I have to use separate my.tokens to set them and reference them in the script?

If the calendar date is less than Webinar 1 date
Display my webinar url 1
If the calendar date is after Webinar 1 and before Webinar 3 date
Display my webinar url 2
If the calendar date is After Webinar 2 date and before the Webinar 4 date
Display my webinar url 3
If the calendar date is After Webinar 3 date and before Webinar 5 date
Display my webinar url 4
If the calendar date is after webinar 4
Display my webinar url 5
#set( $defaultTimeZone = $date.getTimeZone().getTimeZone("America/New_York") ) 
#set( $defaultLocale = $date.getLocale() )
#set( $calNow = $date.getCalendar() )
#set( $ret = $calNow.setTimeZone($defaultTimeZone) )
#set( $calConst = $field.in($calNow) )
#set( $ISO8601 = "yyyy-MM-dd'T'HH:mm:ss" )
#set( $ISO8601DateOnly = "yyyy-MM-dd" )


#if ($calNow.get($calConst.$date.getCalendar) <= {{my.webinar 1 DT}} )
#set ($mywebinardate= "{{my.webinar 1 DT}}")
#set ($mywebinarurl= "https://event.on24.com/wcc/r/2021571/16048F8C9FD8F66DE96DBE1ECEE3DFEB")
#elseif ($calNow.get($calConst.$date.getCalendar) <= {{my.webinar 2 DT}} )
#set ($mywebinardate= "{{my.webinar 2 DT}}")
#set ($mywebinarurl= "https://event.on24.com/wcc/r/2021573/51B046F601D036C3D8F47F3A80F4E779")

##print the myvalue
$mywebinardate
$mywebinarurl
#end>
This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.

1 reply

SanfordWhiteman
Level 10
June 3, 2019
I am getting hung up on where I would need to set the webinar dates, and URLS display the URLs? Can I set the webinar dates and URLs directly in the script token, or do I have to use separate my.tokens to set them and reference them in the script?

You can use another token, but another Velocity token, not a generic token.

If {{my.token1}} has

#set( $webinarDate = "2019-06-0712:00:00" )
#set( $webinarTZ = "America/New_York" )

and {{my.token2}} does the date processing, then you just to include {{my.token1}} before (that is, anywhere above) {{my.token2}} in the email.

{{my.token1}}{{my.token2}}

Splitting across different "data", "config", and "code" tokens is definitely a best practice for maintainability.

Allison_Isett
Level 2
June 3, 2019

Thanks Sanford. 

So would I set the various webinar dates in 1 velocity token that is referenced in the date processing? Also, what about the various URLs? Would they also be in their own V-Token? 

This is what I have so far in my "Date processing token" and I'm getting stuck: 

#set( $defaultTimeZone = $date.getTimeZone().getTimeZone("America/New_York") )
#set( $defaultLocale = $date.getLocale() )
#set( $calNow = $date.getCalendar() )
#set( $ret = $calNow.setTimeZone($defaultTimeZone) )
#set( $calConst = $field.in($calNow) )
#set( $ISO8601 = "yyyy-MM-dd'T'HH:mm:ss" )
#set( $ISO8601DateOnly = "yyyy-MM-dd" )


#if( $calNow.get($calConst.$date.getCalendar) > {{my.webinar 1 DT}})
#set {{$mywebinardate= "{{my.webinar 1 DT}}")
#set {{$mywebinarurl= "https://event.on24.com/wcc/r/2021571/16048F8C9FD8F66DE96DBE1ECEE3DFEB")

My confirmation email needs to have these two varying values, that are dependent on the date populated: 

Event Date and Time: {{my.webinardate}}

Link: {{my.webinarurl}}

But where would my data processing token go in this scenario? What am I getting wrong?

SanfordWhiteman
Level 10
June 3, 2019

Can you highlight the code using the Advanced Editor's syntax highlighter so it's readable? (Use Java as it's closest to Velocity.) Then we'll continue.

I can already see you changed from the code I suggested. Don't do that! I wasn't just sketching out a concept, that was actual valid Velocity. When you change things with adding double curly braces and such, that's breaking the syntax.