Displaying literal curly braces {{ }} in Marketo

Marketo can be, in a word, greedy.

When it detects Mustache-style double-curly-brace notation — like {{lead.Some Field}} — that either

  1. matches a known field (in the case of a {{lead.token}}), or
  2. simply looks like like a token (in the case of a {{my.token}})

the app grabs ownership and outputs the value of the underlying field/token.

And if it detects a {{lead.token}}-like sequence that doesn’t match a known field, it’ll throw a validation error.

Both cases are problematic if you meant to output literal double curly braces in the body of a page or email.

(If you’re wondering why you’d want literal content like “{{lead.Some Field}}” on a page, well, consider that software companies use Marketo and they may want to show sample code. And in general, no characters should ever be forbidden — that’s my take!)

The most obvious way to escape token-lookalike expressions doesn’t work. HTML entity-encoding in the Rich Text editor...

{{lead.Email Address;}}

... doesn’t take because the entities get converted back to the {{}} characters when you hit Save. So effectively you haven’t done anything different.

It’s still possible, though.


In both LPs and HTML emails, just wrap one of the curly braces in a <span>:

<span>{</span>{lead.Email Address}<span>}</span>

Now Marketo won’t see the characters {{ right next to each other, and you’ll get the literal “{{lead.Email Address}}” output you want.

In Text

In the Text part of an email, you can use — why do all of my posts have something to do with Velocity? — a Velocity {{my.token}}. Thanks to order-of-operations, a one-liner like this will work:

{{lead.Email Address}}

(See also my earlier post Even when Velocity isn’t doing anything, it’s doing something good.)

  • The goal is to have the text be correct when copied-and-pasted. So putting Unicode Word-Joiner &#8288; characters in-between curly braces wouldn’t cut it. (Though that trick is certainly useful in other cases.)

  • You might wonder why I didn’t suggest a Text {{my.token}} instead of VTL, e.g.:


My reasoning is that Lead-Tokens-in-Text-My-Tokens are currently not supported (so the literal value will be output) but there’s some non-zero chance that might change, so might as well not rely on it. In contrast, the Velocity world is less likely to get expanded functionality (I wish!).