Learn what it takes to personalise a campaign within Marketo and make your marketing feel more human with Alex Munro from expert360.
The terms 'personalisation' & '1-to-1' get thrown around a lot in marketing, and when we're applying them in martech platforms they are often limited to more traditional (and far simpler) segmentation, targeting & positioning approaches. Come see what personalisation can be in Marketo and how to progressively apply different approaches and features to make our marketing feel more human.
4. Why are we all here?
The point of user groups is to…
• Create a sense of community
• Share knowledge, valuable insights and actionable learnings
• Champion people in our region who are doing awesome things
• Help you strengthen your knowledge of the platform
• Help you make connections that will push you forward in your career
5. 5
• You do not talk about the Marketo User Group.
The first rule of User Group is…
1. Spread the word – if you know someone who’s interested, let them know!
2. You’re among friends – speak up, no question is a dumb question.
3. Be respectful to speakers and other members – please put your phone on silent.
4. Share your feedback – this is our party and we’ll talk APIs if we want to.
5. No soliciting - but, do feel free to reach out to agencies and consultants after today’s session if
you need to talk to someone
6. On MUG days we wear purple. (Or Adobe red… if you feel the need…)
6. Become a MUG sponsor!
For our next Sydney MUG, we are looking:
● For a venue
● For speakers to share their experiences
● For sponsors [for food and beverage]
● Recommendations on topics you care about!
Talk to one of the MUG leaders to find out more and be part of an exciting
journey.
7. Where do we all hang out?
https://nation.marketo.com/t5/Sydney-User-Group-Discussions/gp-p/sydney-user-group-discussions
8. 8
Agenda
3:30 - 4:00 Registration and Networking
4:00 - 4:10 Introductions, Housekeeping + Agenda
4:10 - 4:15 Let’s hear from our sponsor
4:15 - 4:35 Personalisation - Making your marketing more human
4:35 - 4:40 Break
4:40 - 5:00 Q&A - Breakout Session
5:00 - 5:30 Networking
18. A bit about me
Alex Munro
Digital Marketing Manager
Expert360
alex@amunro.com.au
linkedin.com/in/alexmunro/
Started with Marketo back in 2010 doing B2B emails
Emails & Lead Management for a Recruiting Company
Did 3 years of implementation, training & campaign
execution & insights with Datarati
Spent 3 years with Ivy College & AIM running the MA
side of their post-merger systems integration
Attempted a ‘Student Lifecycle Management’ meme
Joined Expert360 to apply Marketo & automation to a
2-sided Marketplace and integrate Martech deeper.
Inadvertently closed the loop and came back to ‘recruitment marketing’
19. personalise [ pur-suh-nl-ahyz ]
verb (used with object), per·son·al·ised, per·son·al·is·ing
4. to design or tailor to meet an individual's specifications, needs, or preferences:
a personalised search engine; personalised learning; personalised marketing
1. to have marked with one's initials, name, or monogram:
to personalize stationery.
2. to make personal, as by applying a general statement to oneself
3. to ascribe personal qualities to; personify
2. to make personal, as by applying a general statement to oneself
20. Why Personalise?
● Make users/customer feel seen, understood and valued
● A stepping stone to a two-way dialogue with your brand
● Provide more value to customers early on in the relationship
21. What Personalisation is not
● Segmentation/Personas
Dividing the market into groups according some relevant characteristics
● Targeting
Deciding which Segments you want to go after and how to best reach them
● Positioning
Messaging you choose to communicate your offering/value to target segments
These are Prerequisites
22. How?
● Use what you know (or can learn) to spark joy
○ What they’ve told you (but ask for a minimum)
○ What they’ve done (but try not to freak them out)
○ What you know about similar people (assuming your segments are spot-on)
● Build functionality as a progressive enhancement (start simple, fail gracefully)
● Don’t always personalise
Disney doesn’t swap out Elsa’s name for your kid’s, yet...
23. A quick review of available tools in Marketo
Emails Landing Pages
Person Tokens ✅ ✅
Program Tokens ✅ ✅
Email Scripting ✅ ❌
Dynamic Content
(with Segmentations)
✅ ✅
ContentAI
(Predictive Content)
✅ ✅
24. ES/ Person & Account Fields ✅ ❌
ES/ Custom Objects & Opportunities ✅ ❌
ES/ Pseudo-Custom Objects ✅ ✅
A quick review of available tools in Marketo
Emails Landing Pages
Person Tokens ✅ ✅
Program Tokens ✅ ✅
Email Scripting ✅ ❌
Dynamic Content
(with Segmentations)
✅ ✅
ContentAI
(Predictive Content)
✅ ✅
25. Person & Account Fields ✅ ❌ 🤔
Custom Objects &
Opportunities ✅ ❌ 🤔
Pseudo-Custom Objects ✅ ✅ 🤔
A quick review of available tools in Marketo
Emails Landing Pages SMS
Person Tokens ✅ ✅ 👍
Program Tokens ✅ ✅ 👍
Email Scripting ✅ ❌ 🤔
Dynamic Content
(with Segmentations)
✅ ✅ 😨
ContentAI
(Predictive Content)
✅ ✅ Stay tuned 😉
26. What else do we need?
Data
(duh)
Some notes on architecting your instance
Forms & Ext. Lead Gen Activity Enrichment
Ingestion / Processing Smart Campaigns & Lists
Targeting/Segment Data Presentation Data
Campaign Execution
Content
🌈 Right People, Right Message, Right Time 🌈
CRM, ERP etc
28. Basics | separating input & targeting/presentation data
Input Layer
Enrichment
Webhook
Job Function: Marketing
Job Seniority: Manager
Company: Expert360
Employees: 30-50
Location: Sydney
Industry: Technology
Targeting Data
Existing CRM data
Job collective: marketer
Comp. collective: tech
company
Last Content: Personalisation
Whitepaper
Category Affinity: Category A
Presentation Data
Activity Data
Processing Campaigns/Lists
⚡Data Value Changes - Job Title
📃Change Data Value
- IF Job Title contains ‘Manager’
THEN seniority = ‘Manager’
- IF Job Title contains ‘Director’
THEN seniority = Director’
⚡Visits Web Page
Web page contains ‘/categoryA’
⭐Change Score
- Category A Score + 1
💡 Request Campaign
- ‘Calculate Categories’ ⤵
⚡Data Value Changes - Job Title
🔎Job Function = ‘Marketing’
📃Change Data Value
- Job Collective = ‘marketer’
⚡Campaign is Requested
Call Webhook
- ‘Calculate most engaged category’
29. Building in Segments & Adding to Nurture
Input Layer
Enrichment
Webhook
Job Function: Marketing
Job Seniority: Manager
Company: Expert360
Employees: 23-50
Location: Sydney
Industry: Technology
Targeting Data
Existing CRM data
Segmentation:
Buyer Persona = Martech Users
Job collective: marketer
Comp. collective: tech
company
Last Content: Personalisation
Whitepaper
Category Affinity: Category A
Presentation Data
Activity Data
Processing Campaigns/Lists
🔎Job Function = ‘Marketing’
& 🔎Job Seniority = ‘Manager’
& 🔎Employees = ‘30-50’
OR
🔎Job Function = ‘Marketing’
& 🔎Job Seniority = ‘Manager’,
‘Specialist’, ‘Coordinator’
& 🔎Employees = ‘50-100’
OR
🔎Job Function = ‘Marketing’
& 🔎Job Seniority = ‘Director’, ‘Manager’
& 🔎Employees = ‘10-30’
Add to List
‘Personas - Martech Users’
🌱 Add to Engagement Program
‘Martech Users’
Combine your Targeting
Data to create segments
31. What can we try?
We want to [ pur-suh-nl-ahyz]
● to ascribe personal qualities to; personify
● to design or tailor to meet an individual's specifications,
needs, or preferences
Using:
● What they’ve told you
● What they’ve done
● What you know about
similar people
Let’s do 4 things to this Email:
● Personify - Lead Ownership or a Mascot
● Tailor - Referencing what’s happened to date
● Tailor - Be the concierge to your marketing hotel
● Provide Value - Help them find their other content
To:
● Make them feel seen
● Start a dialogue
● Provide extra value
32. 1. Personify
Assign to a Lead Owner who’ll be
their best point of contact
OR
Create a personality they can
connect with in the meantime
(set your default admin user in
your CRM to be something useful)
33. 2. Tailor
Reference what they’ve done to
date
Is this an old lead coming back for
more content?
OR
Someone downloading content
for the first time?
Lets get Email Scripting
What can we use?
● Compare Created Date to today’s date?
● Check whether their Status shows they’re a new lead?
● Try and check for past Form Fills?
● What if we just check their history of content
downloads?
34. Getting Tricky | Using Text Areas as Pseudo-Custom Objects
Input Layer
Job collective: marketer
Comp. collective: tech company
Last Content: Personalisation
Whitepaper
Category Affinity: Category A
Presentation Data
⚡Fillls out Form - Content Download
📃Change Data Value - Downloads (text area)
{{lead.Downloads}},
{“name” : ”{{my.title}}”,
“date” : ”{{system.dateTime}}”,
“type” : ”{{my.type}}”,
“url” : ”https://{{my.url}}”,
}
📧 Send Email - Content Download
Build a JSON block by appending
download information from
Program Tokens each time the
form is filled, seperated by ‘,’
Downloads: …….
📂Whitepaper - Tips for Marketers
Tokens: {{my.title}} = Tips for Marketers
{{my.type}} = Whitepaper
{{my.URL}} = sydmug.com/resources/tips
{{my.img}} = https://sydmug.com/images/tips.jpg
35. Script to use Pseudo-
Custom Object
1. Loads our field we populated
on the last slide
2. Cleans it up
3. Converts it into an Object
within Velocity that your
Script can further interrogate
and use
4. What that Object now looks
like, as a Velocity Map (JSON)
[
{
"name":"Tips for Marketers",
"date":"2020-03-02 21:54:37",
"type":"Whitepaper",
"url":"https://sydmug.com/tips-for-marketers"
},
{
"name":"A Marketer's Guide to Email Scripting",
"date":"2020-01-01 21:58:48",
"type":"Product Guide",
"url":"https://sydmug.com/email-scripting"
}
]
#if( $lead.downloads.isEmpty() )
#set( $Prep = '[]' )
#end
#set( $Prep = $lead.downloads )
#set( $Prep = '[' + $Prep + ']')
#set( $Prep = $Prep.replace("[,", "[") )
#set( $Content = '#set( $Content = ' + $Prep + ' )' )
#evaluate($Content)
1
2
3
4
ES
36. #if( $lead.downloads.isEmpty() )
#set( $Prep = '[]' )
#end
#set( $Prep = $lead.downloads )
#set( $Prep = '[' + $Prep + ']')
#set( $Prep = $Prep.replace("[,", "[") )
#set( $Content = '#set( $Content = ' + $Prep + ' )' )
#evaluate($Content)
#set( $name = $Content[0].name )
#if( $Content.size() = 1 )
For a first read, <em>${name}</em> is a great intro to doing
cool marketing with SydMUG.
#else
Thanks for being such an avid reader of our work.
#end
blog.teknkl.com/marketo-json-fields-in-velocity/ 🙏
Script to use Pseudo-
Custom Object
1. Checking whether this this
the first content download
and setting our message
2. Setting another message if
it’s not
ES
1
2
37. Script to use Pseudo-
Custom Object
1. Checking whether this this
the first content download
and setting our message
a. Changing the
message based on
what type of content
was downloaded
2. Setting another message if
it’s not
#if( $lead.downloads.isEmpty() )
#set( $Prep = '[]' )
#end
#set( $Prep = $lead.downloads )
#set( $Prep = '[' + $Prep + ']')
#set( $Prep = $Prep.replace("[,", "[") )
#set( $Content = '#set( $Content = ' + $Prep + ' )' )
#evaluate($Content)
#set( $name = $Content[0].name )
#if( $Content.size() = 1 )
#if( $Content[0].type == ‘whitepaper’ )
For a first read, <em>${name}</em> is a great intro to
doing cool marketing with SydMUG.
#elseif( $Content[0].type == ‘presentation’ )
It’s great you’re interested in how to use our tools.
If you’re finding yourself lost to check out our <a
href=’sydmug.com/whitepapers’>Why Marketing
Automation</a> Series.
#else
It’s great to have you join our SydMUG family.
#end
#else
Thanks for being such an avid reader of our work.
#end
ES
1
2
1a
39. 3. Tailor
Be the concierge to your marketing
hotel
⚡Fils out Form - Content Download
📃Change Data Value - In email alert
#set( $Prep = $lead.inemailalert )
#set( $Alert = '#set( $Content = [' + $Prep + '] )' )
#evaluate($Alert)
#if($Alert[0].level == '1')
#set($color = 'green')
#elseif($Alert[0].level == '2')
#set($color = 'orange')
#elseif($Alert[0].level == '3')
#set($color = 'red')
#else
#set($color = 'blue')
#end
<div class="float-center">
<a href="https//$Alert[0].url"
style="color:white">$Alert[0].text</a>
</div>
What if add a relevant message to
an email for certain leads?
Choice 3 - Member of Smart List = ‘Renewals Due in Next 30 days’
{"text" : "We like you, let’s continue this","level" : "1",
"url" : "sydmug.com/billing",}
Choice 2 - Member of Smart List = ‘House is on Fire’
{"text" : "Your wife called...","level":"2","url": "tel:000",}
Choice 1 - Member of Smart List = ‘Invited but not registered for MUG’
{"text" : "We’ve a matter of critical importance", "level" :
"3", "url" : "sydmug.com/register",}
ES
40. What might
go wrong?
A lead may not have an owner?
● Tokens can have defaults
● We can check and set in a SC
A lead may not have an owner we
like or would want to show
We’re not separating our Input &
Targeting data from our
Presentation
#set($genericOwners = ["marketing@sydmug.com", "sfdc@sydmug.com",
"integration@sydmug.com"])
{{my.SafeOwnerFirst_name}} ${SafeOwnerFirst_Name}
{{my.SafeTokens}}
#if( $lead.Lead_Owner_Email_Address.isEmpty() )
#set( $SafeOwnerEmail = 'muggy@sydmug.com')
#set( $SafeOwnerFirst_Name = 'Muggy')
#set( $SafeOwnerLast_Name = '')
#set( $SafeOwnerJob_Title = '')
#set( $SafeOwnerPhone_Number = '1300 000 000')
ES
#elseif($genericOwners.contains($lead.Lead_Owner_Email_Address))
#set( $SafeOwnerEmail = 'muggy@sydmug.com')
#set( $SafeOwnerFirst_Name = 'Muggy')
#set( $SafeOwnerLast_Name = '')
#set( $SafeOwnerJob_Title = '')
#set( $SafeOwnerPhone_Number = '1300 000 000')
#else
#set( $SafeOwnerEmail = $lead.Lead_Owner_Email_Address)
#set( $SafeOwnerFirst_Name = $lead.Lead_Owner_First_Name)
#set( $SafeOwnerLast_Name = $lead.Lead_Owner_Last_Name)
#set( $SafeOwnerJob_Title = $lead.Lead_Owner_Job_Title)
#set( $SafeOwnerPhone_Number =
$lead.Lead_Owner_Phone_Number)
#end
41. Write all that every time?
Folders can have tokens, they cascade down your folder structure, but can be overwritten in each program
42. 3a. Tailor
Be the concierge to your marketing
hotel
Can we go further? We send the link,
so they have the link, but they all get
lost in their inboxes.
⚡Fillls out Form - Content Download
📃Change Data Value - Downloads (text area)
{{lead.Downloads}},
{“name” : ”{{my.title}}”,
“date” :
”{{system.dateTime}}”,
“type” : ”{{my.type}}”,
“url” :
”https://{{my.url}}”,}
📧 Send Email - Content Download
43. 3a. Tailor
Building the landing page
<script type="application/json" data-selector="downloads">
[{{lead.Downloads}}]
</script>
<script type="text/javascript">
var Downloads =
document.querySelector(‘script[type="application/json"][dat
a-selector="experts"]');
Downloads = Downloads.textContent.replace(/"/g, '"');
Downloads = Downloads.textContent.replace("[,", "[");
Downloads = JSON.parse(Downloads);
Downloads.forEach(function (e) {
// make a card, but only once for each (maybe sort
them)
});
</script>
44. But you said SMS?
Ok
🌱 Member of Engagement Program - is any
📃Change Data Value
- IF Delivery Preference is ‘SMS’
THEN Temp = ‘{{lead.Email Address}}’
📃Change Data Value
- IF Delivery Preference is ‘SMS’
THEN Email Address = ‘{{lead.Phone Number}}@sms.clicksend.com’
📧 Send Email
- IF Delivery Preference is ‘SMS’
THEN Email = ‘SMS Email’
ELSE Email = ‘Regular Email’
📃Change Data Value
- IF Email contains ‘@clicksend.com.au’
THEN Email Address = ‘{{lead.Temp}}’
clicksend.com/au/sms/email-to-sms/
<html><body>
--Start-Message--Hi {{My.Safe First Name}}!
This week’s {{my.Type}} to check out is {{my.Title}}.
Download it here:
<a href="https://{{my.URL}}"> </a>--Stop-Message--
</body></html>
SMS Email
45. But you said SMS?
Ta Da
clicksend.com/au/sms/email-to-sms/
Marketo
Email
Click Send
Email
Gateway
● Tokens
● Email Scripting
● Dynamic
Content
Click Send
SMS
Your
Recipient’s
Phone
Click Send
SMS
Zapier
Fake Form
Submission
Smart
Campaigns
● Transforms Email
● Delivers to
Number
● Receives Reply● Maps Reply to
Marketo Form
Fields
● Receives Reply
Data
● Builds SMS
History JSON
● Determines
next message
Two-Way SMS with Email Scripting & native link tracking
46. What we’ve done ● Configed to give us the right data
● Used Lead & Program Tokens
● Created basic Email Scripts
● Built a pseudo-custom object
● Built a personalised microsite
● Implemented SMS delivery
47. Where to
from here?
● Send a lot of content to a lot of
people whilst building your content
history object
● Record who does and doesn’t meet
your goal (sign-up/sale/revenue)
● Talk to me about building a next-
best-content engine
48. Wrapping Up ● Get your segments right
● Get your messages right
● Degrade gracefully
● Build in complexity gradually
but
● Plan to collect more data