Re: Learn from your peers webinar Q&A Follow-up | Cracking the Personalization at Scale Code using Marketo Engage

Marketo Employee

Learn from your peers webinar Q&A Follow-up | Cracking the Personalization at Scale Code using Marketo Engage

Missed the live webinar? No problem, we’ve got you covered. Find the recording and the slides below for your on-demand learning.


Session highlights:

  • Why is personalization important?
  • Key personalization use cases and techniques to use for each. Features and techniques available within Marketo Engage we will teach you how to use: Tokens, Segmentations, Dynamic Content & Snippets, and Velocity Scripting.
  • Advanced velocity scripting use cases including personalizing content using data sourced from custom objects.

See slides

Watch recording


We’ve worked with Darshil Shah (@Darshil_Shah1) and Courtny Edwards-Jones (@Courtny_Edwards) to answer the questions the audience submitted during the live webinar and we are posting on their behalf.


Check out the answers below. Comment below if you have additional feedback or questions to share. Happy learning! 

Question Answer
If I edit a snippet will it update all the emails that use it? You can choose to update and approve a snippet without creating drafts - which will update all the assets that use that snippet, or you can choose to create drafts which will create a draft of any asset that uses that snippet and you'll need to individually approve the email/landing page. Learn more here.
What content shows if a person is a member of more than one segment? Segments are mutually exclusive so the first segment a person qualifies for is the content they'll be shown. Keep this in mind when mapping content and when building your segments.
Can all email module types available in Marketo be made dynamic based on a person's segmentation? Dynamic content can only be added where you have a section wrapped with the "mktEditable" "mktoText", i.e., the modules that can be edited using the WYSIWYG editor and can't be applied to variables.
Can email script update data on the person fields? No, velocity can only read data from the custom / standard Marketo/synced objects for personalization in emails. It cannot update data in the database.
Outside of the linked Apache Velocity user guide, are there any other known resources out there to help learn velocity scripting? (tutorials, video content, etc.) There aren't many sources available specifically for learning velocity scripting other than the official product documentation, but as I said in the presentation, VTL is quite similar to Java, but only simpler, so if you start learning Java for the basics of programming, e.g., how loops, conditionals function, mathematical operators, various string functions, etc, then you can follow the VTL documentation. Also, I find Sanford Whiteman's velocity articles quite informative. Lastly, we have a lot of questions and articles about velocity scripting on Marketing Nation community which could also serve as a good learning resource.
Outside of form fills, is there any other way you collect information for personalization? Or, has all the data you've collected for highly personalized experiences been through forms? What types of forms? Surveys, webinars, etc.? We collect through many different channels including event attendance, data enrichment, market intelligence research and BDR qualification. In the past I've created a bespoke in-house NPS program which also allowed for rich data collection.
Can we insert more than one email script token in an email? Yes - you can insert more than one 1 VTL script token similar to how you could insert more than token in an email
How do you localize button links in Marketo?  You can create tokens for the button links in the program template you use to clone for creating your MOPs programs, and then update the CTA button token link with the correct link during the program build.
What can you share about thinking / requirements for the HTML template builds in order to ensure this sort of outcome can be achieved? Ensure your email has editable modules. Dynamic content can only be added where you have a section wrapped with the "mktEditable" "mktoText", i.e., the modules that can be edited using the WYSIWYG editor and can't be applied to variables.
Courtny, how do you keep track on all the variations sent out from a QA point of view? Example, you receive a personalized email, and when clicking the "Italian" version that takes you to a webinar... you land into a 404 error. How to cope with all of that at scale? We ran a QA process through our Demand Center/Campaign Ops team so that every country/language combo was previewed in edit mode (testing personalization the right way, that Darshil spoke about) and links were all clicked to test. As with all automation there is an element of risk, but because we do our big rock content launches this way, it was worth it for us to take the extra 45min - 1 hr as a last step before launch to test. We could break the segmentations up between a team of two or three to test quickly. 
How does the reporting work with multiple personalized modules / emails?  You can use the UTMs in the CTA of the personalized content to track the CTA performance and form-fills (if applicable on the destination resource) down the line. Additionally, you can also pull the person's segment membership as a filter in the email performance smart list or alternatively pull the Segmentation filter to Group people by their segment membership in the report's setup tab.
Could you share some code or a template for the preheader content module? Below is a sample reference only Marketo editable text module code with display property set to hidden so it doesn't show up/occupy any space on the email editor. The content in it is however readable by the email clients ans since this module is added at the top of the email, it is taken as the pre-header text by the email clients.

<tr class="mktoModule" id="Preheader" mktoName="Preheader">
   <table  cellpadding="0" cellspacing="0" align="center" border="0" width="100%" style="border-collapse: collapse; margin:0 auto; min-width:100%;">
        <td style="display:none !important; visibility:hidden; mso-hide:all; font-size:1px; color:#ffffff; line-height:1px; max-height:0px; max-width:0px; opacity:0; overflow:hidden;">
          <div class="mktoText" id="Preheader-text" mktoname="Preheader Text Module">
              Preheader text goes here
Velocity Script is enabled OOTB or there is some configuration in LP or Email Template to enable it? Yes, it's enabled OOTB. No need to do any additionally setup/config/reach out to support to enable it in your instance.
Also can i use velocity script in RTE? Velocity can only be supported in Marketo emails. Can't use velocity in Web personalization. You can reference the Web personalization JS library for event tracking and dynamic customization of a webpage. Web Personalization JS library documentation page:
We're doing Bizible reporting and found that using tokens for links make them untrackable. Is there a workaround/solution for this? This is only a impediment if you are tokenizing the link, you can still add the link directly into the HTML rich text token - linked in the body copy or design a snippet with a rich text token instead of text token, and hard code the link into the HTML. So although it will not give perfectly accurate view of clicks it will still be something to track. But as mentioned, we worked with sales and marketing to align on the true success metrics of the content launches - which were form fills to view the content, so we didn't track email metrics closely.
VTL and email script token can only be used for the body of the email correct? No, it can be used in the subject line, from name/address, reply-to address as well.
HI, for the segmentations, how can we pull the reporting for each segment?  Email & People Performance reports in Marketo will allow you to group reporting by segment. Instructions on how to group and filter by segment are here:
can we add a new record into a custom object via smart campaign? instead of API or list upload No, you can create/update records in a custom object only by using custom object API or by loading a custom object records list in Marketo

Custom Object API -

Load Custom Object data using a list in Marketo -
Are there recommended training videos or courses where we could learn velocity scripting? Unfortunately, there aren't many resources for specifically learning VTL. However, VTL is quite similar to Java (only simpler) which has a ton of resources online. So, if you start by learning basics of Java e.g., variables, looping, conditionals, string functions, etc, an then look at VTL product documentation, you should be in a good spot. Additionally, I'd also suggest checking out Marketing Nation community as we have a lot of VTL questions answered on it.
What type of documentation did you create to orchestrate this whole process? We created a shared repository including a flow chart of the snippets, tokens, token nomenclature & definition, and content flow. We also created a campaign plan that we standardized & follow still now for big rock content roll out.
Does Adobe have plans to actually add some of these solutions to the out-of-the-box tool? (for example, dynamic preheader)  The email editor experience will remain the same for this year. We recommend you follow our Champions’ tips to include making the email preheader dynamic part of your personalization strategy.
Is there a plan to introduce the ability to use multiple segmentations in Dynamic content, so users who are unable to use Velocity Scripting can create this content themselves? Velocity can reference a person's segmentation membership for personalizing content they're sent.
You covered personalization in emails and landing pages, how do we begin personalization on our website (using the Marketo cookie or RTP real-time-personalization)? Using Munchkin cookie, you can get the lead info using Marketo API and personalize their web-view. Additionally, RTP could also help you in personalizing the web-experience of a known/anonymous visitor based on their lead, behavioral, and demographic data. However, as a side-note, if you ever use API, then make sure you're not making direct call to Marketo from the client side, as you'd be opening up a massive vulnerability in your setup. Always, route the API calls to a secure server from the client-side. Store the API credentials on your server and not on the client side.
Can you please go over how we can test the dynamic email content instead of test sends again? It's pretty simple! You open up the email in Preview mode, select the apt entity based on which you wish to see the personalize email content - List, Person, Segmentation (only available when dynamic content has been added using segmentation in the email), select the appropriate value and you should see how the email would look like.

Check out this "Preview an Email with Dynamic Content" product doc page -
Custom object suppport many to one relationship? A single custom object cannot be linked to more than one record in the person/edge custom objects. However, a single-person record can have multiple custom objects associated with it.
is it possible to clone smart lists within a program? For example when you have sent an invite 1 and want to send a reminder invite to the same audience? It is possible to clone a smart list (and include all qualifying members) but if you want to clone a list (sometimes referred to as a static list) you can clone the actual list but for lists with over 1000 members - the members won't be cloned. 
Darshil, I am seeking some advice on how I can sync "Campaign Management" fields from Marketo to the “Salesforce Campaign Object” everytime we set-up a campaign in Marketo and sync it over to Salesforce? So basically, we will be adding these fields to every campaign we set-up in Marketo in the future and we would like these fields to be synced to the Salesforce Campaign from Marketo. The OOTB SFDC <> Marketo campaign sync takes care of syncing your campaigns together. This syncs Channel, Period Cost, Members, and Progression steps. Happy to elaborate on this more or answer further if this is not something you're looking for.

Check it out here -


Level 9 - Community Advisor + Adobe Champion

Re: Learn from your peers webinar Q&A Follow-up | Cracking the Personalization at Scale Code using Marketo Engage

I loved the tip about making the pre-header dynamic - especially useful when creating dynamic emails in 8 languages.

Level 10 - Community Advisor + Adobe Champion

Re: Learn from your peers webinar Q&A Follow-up | Cracking the Personalization at Scale Code using Marketo Engage

Absolutely, you don't wanna leave the pre-header with the default/catch-all content when the rest of the email is dynamic. I'm glad you liked the pre-header tip. Thanks!