ConvertKit comes with a handy templating language called Liquid. Liquid allows you to add just enough logic to your emails (broadcast or sequence emails) to be really potent. But it isn’t always easy to understand, especially if you are not technical.

I’m going to talk you through two examples to explain what it all means and how you can use it to your advantage. Once you understand the basics of Liquid conditions, the world really is your oyster.

Personalizing by name

When you create an email in ConvertKit, you have the option to add the subscriber’s name as a greeting. The easiest way to do this is to use the personalize button in the toolbar in the email editor.

You can then click on Subscriber’s name (with fallback) and ConvertKit will add this block for you:

{% if subscriber.first_name != blank %}
  Hello {{ subscriber.first_name }},
{% else %}
{% endif %}

This will probably look like gobbledygook at first, but it isn’t as complicated as it first appears. Let’s take a look line by line.

{% if subscriber.first_name != blank %}

The first part is {% raw %}{%{% endraw %} character and the last is the {% raw %}%}{% endraw %} character. These are called tags and everything between these two characters is logic.

The next part is called an if statement. This allows you to show different blocks of text to different people, depending on a specific condition. In this case, this is saying that if the subscriber’s first name is not blank (in other words, it exists in ConvertKit), then proceed to the next line.

And the next line will use the first name in the email greeting:

Hello {{ subscriber.first_name }},

So if the subscribers first name is Sarah, the greeting will be “Hello Sarah”.

But what if you haven’t stored the first name for a particular subscriber? The following two lines will handle that:

{% else %}


In plain English, this is saying for everyone else (that is everyone else without a first name), the greeting will be Hello.

And finally it ends with:

{% endif %}

This is just saying that this is the end of this block of logic.

Personalising by tag

Now that I’ve talked you through this example, you should have a better understanding of Liquid. So now you can start to personalise the content of your emails, rather than just the body copy. Let’s take a look at the following example:

{% if subscriber.tags contains "GDPR: Re-consent required" %}

Please click there to consent

{% endif %}

Instead of checking for the subscriber’s first name, this is checking if the subscriber has a specific tag. In this case, if a subscriber has the * GDPR: Re-consent required* tag applied, then add the proceeding p.s. to the email:

p.s. Thanks for completing the GDPR question

You can also include text for subscribers who don’t have a particular tag. The following will show a block of text to subscribers who do not have the GDPR tag applied.

{% unless subscriber.tags contains "GDPR: Re-consent given"%}​

p.s. Don’t forget to click this link if you still want to get these emails! Keep sending me emails

{% endunless %}

Testing the logic

You can test that your Liquid code is working, and that subscribers are going to see the correct text, by previewing the broadcast email. You’ll find this option on the final step of sending a broadcast email. In the “Preview as subscriber” section, search for a subscribers name. The email preview will then change with will show the actual content that this subscriber will see. By doing this, you can check that your Liquid code is set up correctly.

Wrapping up

Understanding and using Liquid in ConvertKit will give you a new super power and allow you to take your emails to a new level.

Need help setting this up?

If would like help setting up Liquid code like this for your ConvertKit account, let me know.

Similar Posts