How to Use Dynamic Content in Infusionsoft/KEAP Emails
September 27, 2019

It’s exciting to finally see Dynamic Content available in emails for Infusionsoft. I raised this point back in Nov 2017, in the Certified Partners Facebook page and it finally got noticed. This is a big step forward for Email personalisation and segmentation. With Liquid, you can have filters, conditions, and determine different text/images for different segments/personas. No more ugly webs of decision diamonds to do the same.

This opens up a whole lot of possibilities in email segmentation and bringing Infusionsoft email functionality back on par with others like Klayvio and Campaign Monitor. Bearing in mind the complexities of the Campaign Builder, and other moving parts, I’m glad they sorted out this technical challenge.
So, how does this work, and what can this achieve?
Well we used to have big decision diamonds to create different personalised email messages based on:
(1) personas (e.g. SME owner, Marketing Manager, Sales Manager)
(2) data in fields (example, emails with gmail.com, interests, industry type),
(3) buying history (example Total Order more than $X)
(4) data in tags (example, existing customer tag). If there are many conditions it could end up like this:

Using Dynamic Content in the emails, you end up crafting conditions into the emails themselves ending up with this:

How awesome is that!
The only challenge is you have to be some sort of programmer to understand the way to code them. It’s not difficult for some people with an engineering/computing background, but might be challenging for those that will just get a headache looking at formulas.
Liquid code can basically be categorised into Objects, Tags and Filters
Objects are the Fields, Tags, or even Orders objects in Infusionsoft/KEAP. It tells Liquid where to show content, and is denoted by {{ }} or [[ ]], double curly or square braces.
Tags (not referring to Infusionsoft tags) create the logic and control flow for the templates. It is denoted by curly braces and the percent sign: {% and %}
Filters change the output. It;s used within an output and separated by the pipe character “|”
A FEW EXAMPLES NEXT (warning … you may get progressively concerned about the complexity of writing this code yourself. Fear not, you can always get help www.martechva.com, starting from $15/hour. Get a quote to code your emails)
What you write: {{ contact.firstname }}
What is displayed: George
Contact is an object in Infusionsoft, with a table of fields. You can see what fields are available for each object in the Table Schema. Custom Fields are denoted with a “_” before the field name, example:
{{ contact._WhereWeMet }}
Question to be answered: Can we insert other objects like an Order or even Note? Either the Last Order or last Note… or we can determine which Order or which Note…
What you write: Hi {{ contact.firstname | default: ‘there’ }}
If firstname is George, then
What is displayed: Hi George
If firstname is empty, then
What is displayed: Hi there
This is absolutely amazing. In the past, we had to make sure all firstname fields were properly populated…
Say you would like to have a different statement based on a field value like number of employees … this could be persona based or field data.
{% if contact.numberofemployees > 50 %}
Displays: With a large organisation like yours, communication is key.
{% elsif contact.numberofemployees > 5 %}
Displays: In SMBs, the key is balance
{% else %}
Displays: In a micro-org like yours, you need to save every dollar
{% if contact.email1.address contains ‘@gmail.com’ %}
<a href=”https://help.keap.com/help/gmail-sync”>Gmail sync for Keap </a> captures the email communications in Gmail into your contact record.
{% else %}
<a href=”https://help.keap.com/help/gmail-sync”>Gmail sync for Keap </a> and <a href=”https://help.keap.com/help/microsoft-sync”>Microsoft email sync </a> for Keap captures the email communications into your contact record.
{% endif %}
Since we are able to add HTML in Liquid, other than inserting links, we can also insert images as well. Picture this … Conditional Images …
This level of usage will require basic understanding of HTMLs that you can use. Or simply learn to read and replace codes written for you once. You can just duplicate and replace.
{{ today.date }} 2019-08-13
{{ today.date | short }} 8/13/19
{{ today.date | medium }} Aug 13, 2019
{{ today.date | long }} August 13, 2019
{{ today.date | full }} Tuesday, August 13, 2019
This will work for custom dates in contacts as well example
{{ contact._preview date | full }} Tuesday, August 13, 2019
This solves the issue of dates fields appearing as 08/13/19, as well
And wait that’s not all … you can also add formulas to dates !!!
{{ today.date | plus_days:14 | full }} Tuesday, August 27, 2019
This adds 14 days to today’s date …
Use cases:
“ Your offer will expire on xxxxx “
“ Early Bird price ends XXX”
There are tons of possibilities if you know the entire Liquid library of codes available for you to make your email sing and dance. You can read all about liquid codes here.
OR you can get us to code for you !!! (Get a quote to code your emails starting from $15/hour)
Hello ~Contact.Firstname~,
~Date.DayOfWeek~
{% capture day %}{{‘now’|date: ‘%A’}}{% endcapture %}
{% case day %}
{% when ‘Sunday’ %} Check out our Sunday specials!
{% when ‘Monday’ %} Check out our Monday specials!
{% when ‘Tuesday’ %} Check out our Tuesday specials!
{% when ‘Wednesday’ %} Check out our Wednesday specials!
{% when ‘Thursday’ %} Check out our Thursday specials!
{% when ‘Friday ‘%} Check out our Friday specials!
{% when ‘Saturday’%} Check out our Saturday specials!
{% endcase %}
Instead of a if elsif statement, we can use the capture function and Case Statements to display different outputs. You can use “when” in place of “if” then “elsif”.
Dynamic Content in emails can be used to send highly relevant messages to segments of contacts, and therefore get more conversions. This is a well known technique called “rapport building”, by relating to their situation, fears, desires, and sense of community. A simple difference of inserting the industry instead of small business:
Hey Joe,
In spa businesses, there is this success story about XXX, a spa owner like yourself I’d like to share
instead of
In SMBs, there are success stories like XXX
This makes a whole lot difference to how you can start using personalisation to a greater effect in emails.