There’s so much more you can do inside Marketo with custom development, but where do you start?
Put on your “developer” hat when you attend this session and see where you can take your instance further.
Top Tips include:
- How to streamline the deployment of localized forms in various languages
- A breakdown of UTM tracking and custom unsubscribe as it relates to forms
- How bulk API updates, bulk cloning, and program tagging can bring efficiencies to your Marketo management
"I didn't know Marketo could do that!" Do more with Custom Development
1. Custom Development
I Didn’t Know You Could Do That
In Marketo! Interesting and useful applications of Marketo’s development features
November 10, 2021 12:00 PM ET
Peter Liske | Director, Marketing Technology – Digital Pi
3. 3
HOUSEKEEPING
Technical Support
• Visit support.zoom.us
Slides & Recording
• This session is being recorded
• On-demand video and slides will be shared via email
with all registrants
Feedback & Survey
• Use the session chat to provide feedback and engage
with other attendees
• Tell us how we did in the post-session survey that will
pop up after the session
Questions & Chat
• Submit questions at any time via the Q&A panel
• Join in! Chat with attendees live using the chat
feature at the bottom of your Zoom screen
• Keep the conversation going on Twitter using
#MarketoTopTips
4. Velocity Tokens
● Email Content Customization
Marketo Rest API
● Asset/Program Management
● Data Management
Marketo Functional Areas We Will Explore
Marketo Forms 2.0 API
● Form Customization
5. 5
Poll: Rank your experience with Email Script Tokens
● None
● A little bit
● Extensively
8. 8
When to use Velocity?
● Conditional Formatting
● Dates
● Combining many fields into one
● Tabular Display
● Custom Objects
● Program Membership
● “Lookup” Tables
Good Primers on Velocity in Marketo:
● Sanford Whiteman (https://blog.teknkl.com/author/sanford/)
● Marketo Community
Upping your Token Game: Getting Started with Velocity Script
9. 9
VELOCITY LOOKUP TABLES
#set($var = {"key": "value", … })
#set($office = {648: "Baldwin Park",
654: "East La Whittier",
655: "El Monte Valley"})
Office 648 is ${office[648]}
Office 648 is Baldwin Park
10. 10
VELOCITY LOOKUP TABLES : lookup lead fields
#if ($lead.currentOfficeNumber != "")
#set( $OfficeID = $convert.toInteger($lead.currentOfficeNumber))
Office ID ${OfficeID} is ${office[$OfficeID]}.
#else
Your current office number is not set.
#end
11. 11
VELOCITY LOOKUP TABLES: nested tables
#set($var = {key: {key: value, …}, … })
The combined
length of all Email
Script Tokens in a
given email may not
exceed 100,000
bytes.
15. 15
Poll: What languages have you used for API integration:
● None (we dont use the API)
● Java
● JavaScript/Node
● Python
● .NET/C#
● Other...
16. 16
REST API (a few comments)
● Representational state transfer (REST)
● https://developers.marketo.com/rest-api/
● Libraries available for most popular languages
● Python library is well designed, easy to use for Python developers
https://github.com/jepcastelein/marketo-rest-python
17. 17
Asset API: What is it good for?
● Bulk Clone Programs or Smart Campaigns
● Update Program Tags and Tokens
● Mass update and approve Emails and Landing Pages
18. 18
Data API: What is it good for?
● Integrate a custom application or database
● Automate common UI tasks
○ Upload/Download List
○ Add/Remove/Query Program Membership
○ Bulk update fields
● Activity Data
● Update/Extract Custom Object Data
● Automate Merges
19. 19
Bulk Program Creation Example
Problem 1:
I need to create and configure nearly 100 programs that are nearly the same...
That is going to take 2000 Clicks!
Problem 2:
I just cloned a program 100 times...and now I need to make a Flow Step change to
each one!
20. 20
Bulk Program Creation: CSV for program data
Template Program ID New Name Folder ID Description Token: Subject Token: Asset Link
2456 Webinar:
Transforming...
107 2021 Nov 15 Webinar... Digital Transformation ... go.digitalpi.com/register123
2456 Webinar: Strategy.. 107 2021 Nov 18 Webinar... Strategy for Tracking ... go.digitalpi.com/register/345
2501 WhitePaper 201 WhitePaper Schedule... go.digitalpi.com/asset/716
2456 Webinar 201 2021 Dec 5 Webinar... Scheduling Assets... go.digitalpi.com/resgister/853
21. 21
Bulk Program Creation: Solution
Clone Program API
• program ID to clone
• names and description
• folder
Set Token API
• program ID
• token name, token value
Delete Program API
• program ID
24. 24
POLL: Merge
How do you manage duplicate records in Marketo?
● Manual merge
● Custom application
● Third-party tools
● We live with the pain
25. 25
Marketo Merge
Problem 1
I have thousands of Marketo duplicates I need to Clean up!
Problem 2
The Merge functionality does not set fields they way I want
26. 26
Marketo Merge Logic
● Losing lead activity is copied into winner’s activity log
Warning: This can kick off program Triggers
● Loser score added to winner’s score (behavior score)
Often seems “inflated”
● Winner’s fields persist -- unless they are empty
Not always desirable
● Loser will be deleted
Loser’s custom objects are NOT populated into winner
● Detailed SFDC Merge errors are not returned to Marketo
Lead – Contact merges causes implicit conversion
30. 30
Marketo Merge: API
API to Merge Leads
● Winning Lead ID
● Losing Lead ID[s]
● Merge in CRM (true/false)
API to Update Winner (post Merge)
● Update Fields
● Update Score
31. 31
Marketo Merge: Custom Script Requirements
● Pull duplicates from Static List
● Rules to pick winner:
● SFDC Type
● Key Fields
● Date
● Save key fields and scores from winners and losers
● Merge
● Update the winner fields accordingly
32. 32
Form API (a few comments)
• https://developers.marketo.com/javascript-api/forms/
• Customize behavior and look of Marketo Forms
• Consistent Look and Feel for a Website
• Usability Enhancements
• Validation Requirements
• Translation
• Requires JavaScript knowledge
33. 33
Form API (a few comments)
• https://developers.marketo.com/javascript-api/forms/
35. 35
Form API Example: Dynamic Translation
Problem 1:
I have a form that we need to translate to 20 languages!
Do I need to create 20 new forms?
Problem 2:
I have 20 versions of a form, and the picklist values are inconsistent, and now I
have a data problems!
37. 37
Form Dynamic Translation: Demo
● https://mktosbx.digitalpi.com/translate.html
Show Code in Browser
● https://mktosbx.digitalpi.com/translate.html?lang=fr
https://mktosbx.digitalpi.com/translate.html?lang=jp