Glossary of variable filters

Learn how to use variable filters to adjust and manipulate the data you show in an SMS or email message.

Klaviyo’s email and SMS editors support most built-in Django filters, in addition to a small number of custom filters. For example, the title filter can be used to apply title case formatting to a piece of text pulled in from a customer profile or event data. In this glossary, you will find a compilation of different filters, what they do, and examples of how they should be formatted.

Learn how to use these filters to customize the profile and event data you use in messages to your subscribers. 

Glossary

FilterDescriptionExamples
addAdds an argument to your variable, where both the argument and variable are integers. If either number is a float (a non-integer number), all decimals will be ignored. 

To add together floats, see floatadd below
If your_variable is 5, {{ your_variable|add:2 }} will render as 7
base64_encodeEncodes a value in Base-64 format. A common use case is encoding an email address so it can be passed within a UTM parameter.{{ person.email|base64_encode }}
concatCombines two strings together.If your variable is "hello", {{ your_variable|concat:' world' }} will render as "hello world"
countReturns the number of characters in a string.If your variable is “hello”, {{ your_variable|count }} will return 5
defaultSupplies a default value to be used if the variable is empty.“Hey {{ first_name|default:'friend' }}!” would render like this, given no first name is provided:

Hey friend!
dictfilterFilters a dictionary to match the criteria of an argument. This filter takes three arguments: 
1. Item key
2. Operator
3. Comparison value
If your variable is [{'a': 2}, {'a': 3}], {{ your_variable|dictfilter:"a>2" }} would render as [{'a': 3}]
divideDivides a variable by the number supplied.If your variable is 10, {{ your_variable|divide:4 }} will render as 2.5
escapeEscapes a string’s HTML. The specific replacements made are:

< is converted to <

> is converted to >

' (single quote) is converted to '

" (double quote) is converted to "

& is converted to &

Use this filter if your event data passes HTML-encoded data, to allow it to display without extra symbols.
{{ your_variable|escape }}
floataddAdds the argument to a variable’s value, where both the argument and variable are numbers.If your variable is 4.1, {{ your_variable|floatadd:2.2 }} will render as 6.3
floatformatSpecifies the number of decimal places to display. A common use case is to show a price with two decimal places, regardless of how many digits are supplied.If your variable is 5 or 5.0003, {{ your_variable|floatformat:2 }} will render as 5.00
format_date_stringFormats a date variable as a string following this format: Feb. 11, 2016, 4:46 p.m.{{ your_variable|format_date_string }}
gtWithin an if statement, compares whether a variable’s value is greater than the filter’s argument.If your_variable is 3, {% if your_variable|gt:2 %} will evaluate as true
gteWithin an if statement, compares whether a variable’s value is greater than or equal to the filter’s argument.If your_variable is 2, {% if your_variable|gte:2 %} will evaluate as true
httpizePrepends “http://” to a web address, if not already presentIf your variable is "www.klaviyo.com", {{ your_variable|httpize }} will render as "http://www.klaviyo.com"
httpsizePrepends “https://” to a web address, if not already presentIf your variable is "www.klaviyo.com", {{ your_variable|httpsize }} will render as "'https://www.klaviyo.com"
joinConverts a list to a string, with all list items connected by the string you supply.If your variable contains the list ['a', 'b', 'c'], {{ your_variable|join:'//' }} will render as a // b // c
list_to_stringConverts a list into a string, with proper list punctuation.If your variable contains the list ['apple', 'banana', 'orange'], {{ your_variable|list_to_string }} will render as apple, banana and orange
lookupSearches a list for the index provided. If the list is not indexed, numbers can be used instead (starting with 0). 

Normally, the lookup filter can be used interchangeably with dot notation (using a dot between values), except in cases where the key being searched contains a special character or begins with an underscore. 

Once lookup notation has been used in a given tag, any subsequent keys must also use lookup notation. For example, {{ catalog_item|lookup:"variant".name }} would not work; {{ catalog_item|lookup:"variant"|lookup:"name" }} is the correct notation.
If your variable is [‘apple','banana','orange'], {{ your_variable|lookup:0 }} will render as apple
lowerConverts a string to all lowercaseIf your variable is HELLO, {{ your_variable|lower }} will render as hello
ltWithin an if statement, compares whether a variable’s value is less than the filter’s argument.If your_variable is 3, {% if your_variable|lt:2 %} will evaluate as false.
lteWithin an if statement, compares whether a variable’s value is less than or equal to the filter’s argument.If your_variable is 2, {% if your_variable|lte:2 %} will evaluate as true.
md5_hashConverts a value to an MD5 hash.{{ your_variable|md5_hash }}
missing_imageIf a provided image is invalid, supplies a blank image, so no error displays.{{ your_variable|missing_image }}
missing_product_imageIf a provided product image is blank, supplies a placeholder image.{{ your_variable|missing_product_image }}
multiplyMultiplies your variable by the number providedIf your variable is 10, {{ your_variable|multiply:7 }} will render as 70.0
percentizeConverts a number to a percentage, with the number of decimal places specified in the argument. If no argument is included, 0 decimals will be shown.If your variable is .25, {{ your_variable|percentize }} will render as 25% and {{ your_variable|percentize:2 }} will render as 25.00%
remainderReturns the remainder of a variable divided by an argument.If your variable is 5, {{ your_variable|remainder:2 }} will render as 1.0
round_downRounds a number down to the nearest whole number. Optionally, you may specify the number of digits to round down to.If your variable is 2.912, {{ your_variable|round_down }} will return 2.0, and {{ your_variable|round_down:2 }} will return 2.91
round_upRounds a number up to the nearest whole number. Optionally, you may specify the number of digits to round up to.If your variable is 2.912, {{ your_variable|round_up }} will return 3.0, and {{ your_variable|round_up:2 }} will return 2.92
sha_1Converts a value to an SHA-1 hash.{{ your_variable|sha_1 }}
sha_256Converts a value to an SHA-256 hash.{{ your_variable|sha_256 }}
sliceCan be applied to a list or string. If applied to a list, it provides the list items specified. If applied to a string, it provides the characters specified.If your variable is hello world: 
{{ your_variable|slice:':5' }} renders as hello
{{ your_variable|slice:'3:8' }} renders as lo wo
{{ your_variable|slice:'8:' }} renders as rld
splitSplits a string based on a specific character and returns a list.{{ your_variable|split:',' }}

If your variable contains the string apple, orange, banana, the output will be: ['apple', ' orange', ' banana']
sum_listSums all the values of a list, if the list contains numbers.If your variable is [1,2,3,4,5], {{ your_variable|sum_list }} would render as 15.0
titleConverts a string to title case.If your variable is hello world, {{ your_variable|title }} will render as Hello World
trim_slashRemoved a trailing slash in a URL.If your variable is "www.klaviyo.com\", {{ your_variable|trim_slash }} will render as "www.klaviyo.com"
upperConverts a string to uppercase.If your variable is hello, {{ your_variable|upper }} will render as HELLO
urldecodeConverts a URL encoded string to a normal string{{ your_variable|urldecode }}

This glossary is not exhaustive; review the full list of Django’s built-in filters.

Additional resources