Email Personalization

Email Personalization

Email Personalization

Personalized emails stand out within the inbox as highly relevant, tailor-made material. Personalized emails make an email more likely to be opened and clicked on, and most importantly, personalized emails strengthen customer experiences by sending the right content to the right people at the right time.

ℹ️
Personalization is essential to marketing practices because people want to be seen as individuals.

when creating an email campaign or auto responder email, you can personlize following email parameters:

  • Email subject
  • HTML email body
  • Plain text email body

Email Subject Personalization

When you click on the email subject, a personalization drop down will appear below the subject line:

image

HTML Email Content Personalization

In order to personalize the HTML content, simply click “Personalize” menu item on the toolbar and click the attribute you would like to insert:

image
ℹ️
In addition to subscriber attributes, you can also insert some other personalization merge tags into the email content. Scroll down for more information about conditional personalization, special merge tags and links.

Plain Text Personalization

Once you convert your HTML email content into plain text version with a single click, you can click on the plain text email editor and the personalization drop down list will be displayed below the text editor:

image

Stripo Drag-n-Drop Email Personalization

When creating your email in Oempro using the Stripo drag-n-drop email builder, click “Merge Tags” to insert subscriber attribures, special merge tags or links into the email:

image

Special Merge Tags

In addition to subscriber attributes, you can personalize the email content and subject with the following special merge tags:

%Date=...%
Inserts the date and time of the delivery. This date/time will be different for each recipient because it gets rendered just before the delivery for each recipient. For date format, please refer to PHP date format list. Example: %Date=F jS, Y%May 2nd, 2022
%Random:Letters|Numbers|Alpha:Length%
You can insert randomized letters, numbers, alpha numeric characters into the email content. Example: %Random:Letters:5% → adjwo %Random:Numbers:5% → 29489 %Random:Alpha:5% → a92K3
%Random:FirstName%
Octeth has 100+ first names defined. One of these first names will be randomly picked and inserted into the email content (or subject).
%Random:LastName%
Octeth has 100+ last names defined. One of these last names will be randomly picked and inserted into the email content (or subject).
%MFROMDomain%
This merge tag will be replaced with the MAIL FROM email address domain.
{{{var1|var2|var3|varn}}}
Content spinning feature is a very helpful feature and it helps you to make the email content unique for each recipient. Here’s an example; {{{Hello|Hi|Hey}}} %Subscriber:FirstName%, During the delivery, Octeth will pick a randomly picked variation from “Hello”, “Hi”, “Hey” variations.

Special Links

You can also insert some system links into the email content:

%Link:Forward%
This tag is replaced with a link to the forward to friend page. Recipients can enter their friends names and a copy of the email will be delivered to them. (*) This tag will be deprecated in future version releases!
%Link:WebBrowser%
This tag is replaced with a link to the web browser version of the received email.
%Link:ReportAbuse%
This tag is replaced with a link to the report abuse page. Recipients can file a spam complaint on this page.
%Link:SocialShare:Twitter%
This tag is replaced with a Twitter Share link. (*) This tag will be deprecated in future version releases!
%Link:SocialShare:Facebook%
This tag is replaced with a Facebook Like link. (*) This tag will be deprecated in future version releases!
%Link:Unsubscribe%
This tag is replaced with an unsubscription link. When a recipient clicks on this link, she gets unsubscribed immediately from the corresponding list.
%Link:Suppression%
This tag is replaced with an unsubscription link. When a recipient clicks on this link, the recipient email address is added to the global suppression list first and then unsubscribed from the corresponding list.
%Link:SubscriberArea%
This tag is replaced with a link to the subscriber area where recipient can manage her subscription preferences.
%RemoteContent=http://%
This merge tag allows the user to add dynamic remote content into the email body or subject from a third party URL. It’s a very useful and powerful feature to fetch remote content from your content pool based on recipient information. Example; %RemoteContent=http://mywebsite.com/content/%Date=Ymd%.html% This merge tag will fetch the content from `http://mywebsite.com/content/20220302.html if the email is sent on May 2nd, 2022.

Conditional Personalization

Starting from Oempro v5.0.0 version, we have introduced a brand new personalization engine and email content tags. We will remain our legacy personalization engine until Oempro v6 version release.

This new personalization engine introduces new syntax. From now on, instead of %...% syntax, the brand new {{ ... }} syntax will be used.

Here’s an example:

{{ Subscriber:EmailAddress }} will be replaced with the email address of the recipient.

In addition to standard personalization, our new personalization engine includes powerful conditional personalization.

Whitespace

Whitespace before or after the delimeters is allowed, however, in certain cases, whitespace within the tag is prohibited (explained in the following sections).

Some valid examples:

{{name }}
{{name }}
{{name}}
{{name  }}
{{
name
}}

Some invalid examples:

{{na me }}
{ {name} }

Comments

You can add comments to your templates by wrapping the text in {{# #}}.

Example

{{#This will not be parsed or shown in the resulting HTML #}}

{{#
They can be multi-line too.
#}}

Prevent Parsing

You can prevent the parser from parsing blocks of code by wrapping it in {{ noparse }}{{ /noparse }} tags.

Example

{{noparse }}
    Hello, {{name }}!
{{/noparse }}

Basic Example:

{{#Parsed: Hello, World! #}}
Hello, {{name }}!

{{#Parsed: <h1>Oempro is Awesome!</h1> #}}
<h1>{{title }}</h1>

{{#Parsed: My real name is Oempro User!</h1> #}}
My real name is {{Subscriber:FirstName }} {{Subscriber:LastName }}

Conditionals

Conditionals in Oempro are simple and easy to use. It allows for the standard ifelseif, and else but it also adds unless and elseunless.

The unless and elseunless are the EXACT same as using {{ if ! (expression) }} and {{ elseif ! (expression) }} respectively. They are added as a nicer, more understandable syntax.

All if blocks must be closed with the {{ endif }} tag.

Variables inside of if Conditionals, do not, and should not, use the Tag delimeters (it will cause wierd issues with your output).

A Conditional can contain any Comparison Operators (==!====!==><<=>=). You can also use any of the Logical Operators (!not||&&andor).

Examples

{{if Subscriber:FirstName }}
    <p>My name is {{Subscriber:FirstName }} {{Subscriber:LastName }}</p>
{{else }}
    <p>I don't know what my name is</p>
{{endif }}

{{if Subscriber:CustomField18 == 'customer' }}
    <p>You are a Customer!</p>
{{elseif Subscriber:CustomField18 == 'trial' }}
    <p>You are a trial User.</p>
{{else }}
    <p>I don't know what you are.</p>
{{endif }}

{{unless age > 21 }}
    <p>You are too young.</p>
{{elseunless age < 80 }}
    <p>You are to old...it'll kill ya!</p>
{{else }}
    <p>Go ahead and drink!</p>
{{endif }}

The not Operator

The not operator is equivilent to using the ! operator. They are completely interchangable (in-fact not is translated to ! prior to compilation).

Undefined Variables in Conditionals

Undefined variables in conditionals are evaluated to null. This means you can do things like {{ if foo }} and not have to worry if the variable is defined or not.

Checking if a Variable Exists

To check if a variable exists in a conditional, you use the exists keyword.

Examples

{{if exists Subscriber:CustomField100 }}
    Foo Exists
{{elseif not exists Subscriber:CustomField100 }}
    Foo Does Not Exist
{{endif }}

You can also combine it with other conditions:

{{if exists Subscriber:CustomField100 and Subscriber:CustomField100 !== 'test' }}
    Something here
{{endif }}

The expression exists foo evaluates to either true or false. Therefore something like this works as well:

{{if exists Subscriber:CustomField100 == false }}
{{endif }}

JSON Custom Fields

If the subscriber custom field value is a JSON data, the personalization engine can detect this and you can personalize your email content with any values inside the custom field.

For example, if the custom field value is:

{"key1":"val1","key2":"val2","key3":"val3"}

You can personalize your email content with any of these values:

{{Subscriber:CustomFieldXXX:key2 }}
ℹ️
XXX represents the target custom field ID.

Helper Personalization Functions

You can modify email content and recipient info with the following helper functions.

⚠️
Personalization functions listed below are available in Octeth v5.0.3 and higher versions unless otherwise noted.
  • fn_strtolower()
  • Make a string lowercase.

    {{ fn_strtolower value="TEST CONTENT" }}
  • fn_fallback()
  • Make a string lowercase.

    ⚠️
    The fallback personalization function is available in Octeth v5.1.0 and higher versions.
    Hey {{ fn_fallback value="{{ Subscriber:CustomField1 }}" else="there!" }}
  • fn_strtoupper()
  • Make a string uppercase.

    {{ fn_strtoupper value="test content" }}
  • fn_ucwords()
  • Uppercase the first character of each word in a string.

    {{ fn_ucwords value="test content" }}
  • fn_ucfirst()
  • Make a string's first character uppercase.

    {{ fn_ucfirst value="test content" }}
  • fn_trim()
  • Strip whitespace character from the beginning and end of a string

    {{ fn_trim value="test content " }}
  • fn_dateformat()
  • Format a Unix timestamp or YYYY-MM-DD date. Check this page for date format syntax.

    {{ fn_dateformat value="1664651010" format="jS M, Y" }}
    {{ fn_dateformat value="2022-10-03" format="jS M, Y" }}
  • fn_time()
  • Return current Unix timestamp.

    {{ fn_time }}
  • fn_htmlentities()
  • Convert all applicable characters to HTML entities.

    {{ fn_htmlentities value="test content &" }}
  • fn_htmlspecialchars()
  • Convert special characters to HTML entities.

    {{ fn_htmlspecialchars value="test content &" }}
  • fn_lcfirst()
  • Make a string's first character lowercase.

    {{ fn_lcfirst value="tESt cOnTEnT" }}
  • fn_md5()
  • Calculate the md5 hash of a string.

    {{ fn_md5 value="text to encrypt" }}
  • fn_sha1()
  • Calculate the sha1 hash of a string.

    {{ fn_sha1 value="text to encrypt" }}
  • fn_number_format()
  • Format a number with grouped thousands.

    {{ fn_number_format value="193002" decimals="2" ds="." ts="," }}
    ℹ️
    ds represents decimal separator, ts represents thousands separator.
  • fn_wordwrap()
  • Wraps a string to a given number of characters.

    {{ fn_wordwrap value="this is a very long email content which should be wrapped into a smaller one" }}
  • fn_nl2br()
  • Inserts HTML line breaks before all newlines in a string.

    {{ fn_nl2br value="line #1
    line #2
    line #3
    line #4" }}

You can set the value of these helper functions to another personalization tag as shown in the example below:

{{ fn_strtoupper value="{{ Subscriber:EmailAddress }}" }}

💠
image

Footer Social Icons

©Copyright Octeth, Inc. All rights reserved.