Returns whether a list or string contains an item or substring

 boolean contains( mixed haystack , mixed needle )

Returns whether  haystackcontains needle.

  • If haystackis a string, returns trueif needleis a substring.
  • If haystackis a list, returns trueif needleis a member of that list.
  • If haystackis an object, returns trueif needleis a value (not a key) of that object.
  • Otherwise, will return false.


{contains('foobar','ooba') ? 'yes' : 'no'}                   = yes 
{contains('foobar','foobari') ? 'yes' : 'no'}                = no 
{contains(['a','b','c'],'b') ? 'yes' : 'no'}                 = yes 
{contains({"foo":"bar","baz":"bap"},"bar") ? 'yes' : 'no'}   = yes 
{contains({"foo":"bar","baz":"bap"},"foo") ? 'yes' : 'no'}   = no

Check if a subscriber is a member of a list, using the Profile object:


Check if a user has opted out of a specific template by referencing the Public Name:


Display One-Click Signup Link if User Is Not on Certain List

Use Case: You want to determine if each user is on your ‘Weekly Notifications’ Natural List, and if they aren’t, show them a one-click signup link using the sailthru_lists query parameter in order to enable them to add themselves. Note: You’ll notice that the contains() function allows you to check if an array contains a certain value(s). You can also use a bang (“!”) to check the opposite, that is, if it’s not in the array. Zephyr: (Based on example {profile.lists} array value [ "Daily Newsletter", "Sponsored Content", "Breaking News"].)
{if !contains(profile.lists,"Weekly Notifications")}
Click <a href="[Weekly Notifications]=1>here</a> to sign up to our Weekly Notifications list!
Output: Profile Not on Weekly Notifications:

Click here to sign up to our Weekly Notifications list!

Profile on Weekly Notifications:

(Nothing shown)

Please note that the “else” statement is optional. Explanation: This script uses an “if” statement to loop through the “lists” array on each user’s “profile” object, which are all the Natural Lists the user is currently a member of. Using the contains() function, we’re able to see if a particular Natural List is included in their lists array, i.e. they’re currently subscribed to that list. Using a bang (“!”) before contains(), the inverse is checked, i.e. if the user is not on that list. If they are not, a prompt is shown to encourage sign up. Using the “sailthru_lists” query parameter, the user is signed up with one click.