Introduction
Personalization is a tactic that continues to present a challenge for many organizations. Your supporter community is smarter than they have ever been, and they expect a personalized experience from the websites they visit to the emails they receive.
To keep their attention, build relationships, and drive people to action, everything must feel tailored and uniquely designed for your supporters. The more personalized their experience, the happier and more likely they are to engage with your calls to action.
Infosys research has consistently proven that there is a desire from people for better personalization, with 31% of people surveyed saying that they would like to see their online experience “far more personalized than it currently is.” In addition to that, 59% of people “who have experienced personalization believe it has a noticeable influence on their site engagement.” Reflecting to your community what they have done to support your organization and what you need them to do next is an important part of increasing trust between them and your mission.
Furthermore, if you want to have people advocate on your behalf, you need to make it as easy for them as possible. Using tools that allow you to make dynamic asks based on historic engagement is not just a nice-to-have, but a necessity for staying at the forefront of advocate engagement. So let’s dive into the NationBuilder tools and tactics that can set you on your way to doing all of the above—ranging from relatively basic tactics to others that are more complex and powerful.
Using smart fields to send 1:1 style emails at scale
When talking about personalization in emails, the first place to start is with smart fields. Smart fields allow you to display dynamic information to recipients in emails. For example, if you’d like to display the ‘last donation amount’ to your recipients, you can use the relevant smart field for that.
This is one of the great advantages of having an integrated database and email system since the information is living right there and will update dynamically—so if the recipient donates two minutes before you send the email, it will send the most up to date data without you needing to take any further action.
There are over forty smart fields, find more information on those here.
Below are a few examples of emails using smart fields, one for donations and one for recruiters:
Taking personalization to the next level with liquid
Smart fields are a great entry point for personalizing emails, but in order to go the extra mile you will want to use something called liquid. NationBuilder uses the open-source liquid template programmatic language to access objects and criteria from within your database. This can be used to display dynamic, customized content on a website or within emails. It is hugely powerful and one of the great benefits of using a fully integrated platform such as NationBuilder.
You might be thinking: “displaying dynamic content—how is that different from smart fields?” The answer is: it isn’t. In fact, smart fields are actually built on liquid. They’re just made to be a bit more user friendly, but effectively they’re the same thing and you can use either smart fields or liquid to display fields.
For example, if you look at the screenshot below, on the right hand side you can see the smart field for the first name/friend (in red) followed by the liquid for the same (in orange) and then again for the email address.
Smart fields are easier to use (they don’t require you to type out the code) however, liquid allows you to do lots more. The smart fields chosen are the most used strings of code, but there is a much longer list of values that you can display using liquid.
Liquid for displaying fields (objects)
Below are some examples of what fields you can display using liquid and should be helpful for getting you started and for inspiration—note that this is not an exhaustive list. Our full documentation is available on liquid objects here and liquid template examples here.
Pro Tip: Copy and paste the text from this document into the source code (<> button) of any email blast in your nation order to get the following examples pre loaded in an email draft.
Demographic Data:
AGE: {{ recipient.age}}
LANGUAGE: {{ recipient.language}}
Donation Data*
AVERAGE DONATION AMOUNT: {{ recipient.donations_amount_average_format }}
Social Media Data
TWITTER HANDLE: {{ recipient.twitter_login }}
LINKEDIN PROFILE: {{ recipient.linkedin_profile_url }}
Address Data
BILLING ADDRESS FULL: {{recipient.billing_address.one_line}}
MAILING ADDRESS STATE: {{recipient.mailing_address.city}}
WORK ADDRESS ZIP: {{recipient.work_address.zip}}
Electoral Geography Data**
CONSTITUENCY (UK): {{recipient.federal_district}}
STATE UPPER DISTRICT (USA): {{recipient.state_upper_district}}
Relational Data
RECRUITER NAME: {{ recipient.recruiter.first_name }} {{ recipient.recruiter.last_name }}
FOLLOWERS COUNT: {{ recipient.followers_count }}
Custom Fields***
T Shirt Size: {{ recipient.custom_values_for_display['t_shirt_size'] }}
(where ‘t_shirt_size’ is the custom field slug)
A few helpful pointers to note about the above:
Liquid for displaying fields in subject lines and preview text
It is also possible to use liquid to display text in your subject line and/or preview text.
Here are a few helpful pointers to note about the above:
When displaying liquid fields, you will need to use two brackets to open and close: {{ liquid code}}
* Lots of donation data can be found in smart fields, but this can be a particularly helpful field for making appropriate quantities on donation asks.
** Electoral districts will vary from country to country. More information on that here.
Liquid for displaying fields in subject lines and preview text
It is also possible to use liquid to display text in your subject line and/or preview text.
The most common use case for this is using a first name in a subject line which can really help to make your emails stand out in a crowded inbox, help supporters feel valued, and have a really good impact on email engagement. In the screenshot below, which is an email encouraging people to recruit friends and family, I’m using {{recipient.first_name_or_friend}}, followed by a question (do you know anyone who can help?), and then in the preview text I’m using the liquid for the recruiter count {{recipient.recruits_count}} to further personalize the email to make it seem more considerate and encourage action.
And then when I send myself the preview email, it looks like this:
Customize your default salutation
You can also tinker with some of your liquid code to make changes to the defaults. For example, when we have the ‘first name or friend’ option in a smart field it is set up to say ‘first name’ as long as that field is populated, but if it’s empty it will default to ‘friend’, e.g. “Hi Friend.”
If you wanted to change that to something else (e.g. supporter or comrade) or another language etc, then you can do that using the following (where I have changed the default to the word ‘supporter.’
{{ recipient.first_name | default:'Supporter' }}
And this is what it looks like in an email (preview on the left, editor on the right):
This can be useful whenever the output might be blank for some users, for example, if you want to show supporters their address data and rather than it just being blank you say something like (“no address data available”) in the case of an empty field.
Liquid Conditionals (Liquid Tags)
You can get a whole load more value from liquid when you start to use liquid logic and liquid conditionals. This is where it will effectively ask a question before displaying relevant data.
So you can build in your email to say if certain criteria are met (e.g. has a tag, a field = x, # of donations > y, recruit count < Z), then display A, or if not, display B. The content (i.e. ‘A’ or ‘B’) can be paragraphs, photos, buttons, tables, links, or a combination of the above.
In this example below, looking at the right hand side (the editor), I’m going to use an If/Else variable (or ‘if loop’ as some may know it). And I’m going to use ‘tags’ as the criteria to query. Put simply, if the recipient has the tag “RSVP: London Launch: Jan 2020”, they will get the first bit of the email, and if they haven’t, they will not. In the screenshot, you can see on the right (in the editor) the ‘liquid’ I’ve used in the blue text.
So there is an intro that will go to everyone (We hope you are well.), an ‘if this’ then displays this text bit (with the red button call to action), an ‘else’ I.e. if they don’t meet those criteria - display this text (with the green button call to action), an ‘endif’ which closes the conditional logic and then a sign off of ‘thank you,’ which will go to everyone.
As you can see, in the preview on left hand side, the ‘recipient’ (which in the email editor viewer is always the person you are logged in as) does not have the relevant tag, so it will get the %else% logic (as you can see in the preview on the left with the green button) but if I was to go in and attribute that tag to the profile I’m logged in as and click save, it would display the other text with the red button.
One thing that’s important to call out is that unlike with the liquid displayed in the previous example, there is now just one bracket + a ‘%’ for the conditional logic. E.g. {% logic %}
Examples of Liquid Conditionals
For all the examples below, you can click here to access the source code (<> button) and add it to your own email editor. From here, you can copy/paste and modify the logic to use it for your own purposes.
If you are familiar with NationBuilder you will be familiar with tags. They are the virtual yellow sticky notes you can see in people records that can be easily added/removed one by one, in batch using lists, via imports, page actions, or via saved filters. Because of their versatility, they are incredibly helpful when it comes to using them for targeting supporters and personalization.
Tags, example 1 (basic):
In this example below, the logic is: ‘if has this tag,’ then ‘elsif’ this tag and then else for none of the above. The logic will work chronologically, so it will first look to see if anyone has the first tag I’ve asked about, then it will look to see if it has the second tag, and if it has neither it will go to the else. If it has both the first and the second it will return the content for the first as the logic works chronologically so you can effectively create a hierarchy if need be.
In this instance the record I’m signed in as has the second tag but not the first, so it’s returning in the second condition the ‘elsif’.
Tags can be used for many things - like RSVPs or attendees to events, or different types of volunteers. In this example, I'm looking at tags based on issues people care about and I’ve displayed a different image that will be relevant to their issue. For those I don’t have that data on, I’m displaying the organization logo.
Given tags’ versatility of tags they can be really useful for items that don’t have liquid lookups or where you don’t know the code. In this example, I’m going to do it on language that doesn’t have a liquid lookup in NationBuilder (see full documentation here).
Tags, example 2 (using smart fields)
The process I took here was I created a filter on Language = English, saved that filter, and created an auto tag “Language: English” to be appended and dynamically checked every 24 hours. I then did the same with French.
Now that I have my two language tags, I can create an ‘if loop’ to say ‘if’ the language is English - give me English text, if it is French - give me French text and if neither (i.e. not known) then give text saying ‘we don’t have your preferred language saved’. In the example below, the record I’m logged in as has neither of the tags so it would receive the ‘else’ content.
Using auto tags can also be helpful if for example you’re unsure of how to use liquid for other things or you want to create rules for different categories that use multiple levels of filter criteria which can be very difficult to build out with liquid. For example, high value donor target, medium value donor target, etc.
Sometimes, you might want to group various tags when segmenting your emails. This is possible to do by broadening out your liquid code to say ‘if your tag is X OR Y, ‘then this, else this. For example below, I attended either the conference in 2019 or 2020.
Tags, example 3 (using ‘or’ logic within your ‘if loop’)
As well as being able to use OR you can also replace that with AND and that’s not just limited to using tags but can also be used with other liquid conditions.
Volunteer
The next example is for volunteers. Here I’ve got slightly different calls to action and buttons depending on whether the person is marked as a volunteer.
Note how I’ve put the tag immediately in front of the text here to save myself a bit of space and make it more readable. It’s also worth noting that if you do this the text reads from immediately after the bracket closing, so to avoid having a blank space at the beginning of the content, you’ll want it to go straight in.
When it comes to donations and finances, this is where you can really get a lot of value by segmenting your asks to different levels of donors.
Next up is a relatively basic example of a donor vs non-donor. Part 1 asks if they can donate their average donation amount (as mentioned above) and the other has a general ask to donate. You could also have these pages link to different donation pages or use different parameters that pre-fill a different donation amount when they go through.
Example: Donor # 1:
For a slightly more complex example, here I’m trying to break down the ask depending on the number of times people have donated to try and drive them towards becoming a recurring donor.
Option 1 is if they are a recurring donor, ask them to fundraise (with a recruiter link). Since I have that first, that effectively means I won’t run the risk of asking any existing recurring donors to become recurring donors. You’ll notice I’ve actually used a tag for this one, again linked to a saved filter for recurring donor status = active.
Then, I asked anyone who has donated three or more times (but by the logic, is not a recurring donor) if they could become a recurring donor. Then I’m reaching out to anyone who has donated once, with a personalized ask acknowledging their donations in the past (with their average donation amount) and then to all others (i.e.non-donors) with a call to action to become a first time donor. In the following example, I’ve fallen into the category of someone who has donated three or more times but is not a recurring donor.
Example: Donor #2:
Again, you might want to be more granular here and take other things into consideration, like the date of their most recent donation or break up their maximum donation amount, but this is an example of what can be done.
Personalizing on gender can be useful, especially if you’re sending emails in languages with different gendered salutations. In this version, I’ve done it in English as if you’re writing a formal letter so these apply to Dear Mr, Mrs, First name, etc.
Example: Gender:
Personalizing based on address can be very helpful. This basic example shows all people whose address is California and asks them to support a specific proposition. And for anyone who isn’t a California resident, the ask defaults to reaching out to their friends who live in the state on that issue.
Example: Address #1:
Another good example I’ve seen used well is querying if an address exists at all. This can be especially helpful if you have a process whereby collecting address data is useful (e.g. for mailing out membership cards).
This example displays the address on file for those who have it, and for others prompts them to fill it. This could be a good and relatively easy thing to add at the end of a newsletter for example.
Example: Address #2:
And there’s a whole lot further you can do with addresses, including when you bring in electoral districts. So, for example, I’ve seen customers have detailed emails with different asks depending on the constituency or district they live in and the political affiliation of their representatives, with personalized calls to action. While this can be time consuming to build the first time around, it can often be reusable again and again with just some small changes, which can be so invaluable for use at scale.
Just as you can display custom fields in emails, you can also query them in liquid logic.
Again, this example is for something like t-shirt size, stating what the records state if it is on file, and if it doesn't exist, then letting them know and prompting an update.
Example: Custom Fields:
If the custom field is numeric, you can also do greater than or less than in a similar way to what we saw with the donation count in the earlier example.
If you have complex conditions you want to query, then it is possible to nest your logic. So, for example, if you wanted to query volunteers vs. non volunteers and language: English vs. non language English, then that is possible to do, as you can see in the below example, which has been color coded to show which logic is related to each other. In that example, I am a non volunteer and do not have the tag “Language: English”, so “International Non-Volunteer” is returned.
Example: Nesting your liquid logic:
Testing your emails
The most important thing to do when personalizing and using liquid is to make sure it’s appropriately tested before unleashing it into the world. Here are a few tips to consider:
Remember, the preview will always show relevant data for whoever is logged in. To change what a person would see, change the details in the record you’re logged in as (add a donation, delete a tag, etc).
You can also test using the test email, send to a few colleagues, and test accounts with different values in their records.
Always think about the hierarchy of the logic you build. Make sure you have put in checks to ensure that every ask is relevant to the person in that condition.
Consider when people might have empty fields, and ensure you have relevant language or defaults set up so the email will make sense for them.
When copying and pasting, be aware of <span> parameters occurring in the liquid source code and breaking it up. You’ll be able to identify these by accessing the source code (the <> button in your editor) and checking to see if strange characters have occurred.
If you’re getting errors you can always copy and paste your liquid code directly into the span parameters.
Formatting (italics, boldening, underlining) of your liquid can lead to errors.
When copying and pasting, you can also get extra inverted quote marks appearing.
Overall, when something isn't looking like it should, check in the Source Code and you should be able to identify it.
Happy Personalizing!
In the above, I’ve shared some strategic and technical examples of what’s possible with NationBuilder tools such as Smart Fields and Liquid to personalize your emails and encourage your supporters to take action. This is just the tip of the iceberg and it can be very powerful when done at scale.
Source code examples
To load all the examples used above into an email blast in your own nation, just click on the below links, then copy and paste it into the source code (<> button) in your email blast: