Personalization Guide
Personalization is your ability to use the data you have about your audience to understand how your content best fits their needs or interests. This ensures visitors and customers get messaging tailored to them.
DailyStory's Personalization engine utilizes a contact's profile properties and custom fields to build simple replacement personalization, such as displaying a person's first name, or more complex personalization to show varying blocks of content.
In most cases, personalization is as simple as displaying a person's first name:
Hi {{@ user.firstname}},
Or, showing different content if the person's first name profile was not set such as in an email:
Hi {{@ user.firstname default="friend"}},
The above conditional personalization logic could also be written as Hi {{#if user.firstname}}{{user.firstname}}{{else}}friend{{/if}},
.
DailyStory's Personalization Engine uses opening and closing braces {{
and }}
to signify markup the Personalization Engine needs to process. If you attempt to use double open or closing braces in your own content you will receive an error message when attempting to save your content.
Most uses of personalization are simple, but you can create more complex logic in personalization using conditional logic. For example, show a reminder that a membership is about to expire or thank them for a recent purchase.
The DailyStory Personalization engine is available for the following features:
- Email - the use of personalization within email is available for the subject, preview text, body, and plain text body.
- Text Messages - the use of personalization within text messages is available for the message body.
- Push Notifications - the use of personalization within push notifications is available for the title and message body.
This guide provides a list of resources to help you get started.
- Built in personalization tokens
- Custom field personalization tokens
- Using conditional logic with personalization
If you are using conditional personalization in emails, check out the Personalization widget. It makes building conditional personalization much easier!
Formatting Dates and Times
The DailyStory personalization engine support formatting dates and times. This is supported for any personalization token that is a Date or DateTime format, such as system.today
or user defined fields.
If a format is not specified, the default format for a date is M/d/yyyy. For example, May 21, 2024 is formatted as 5/21/2024.
RecommendedSpecify a custom date / time value using {{formatDate system.today "MMMM d, yyyy"}}
.
The special personalization instruction "formatDate" instructs the personalization engine to format a DateTime value using a formatting string.
Common Date & Time formats
String | Result |
D | Tuesday, May 1, 2024 |
f | Tuesday, May 21, 2024 10:00 AM |
F | Tuesday, May 21, 2024 10:00:00 AM |
g | 5/21/2024 10:00 AM |
G | 5/21/2024 10:00:00 AM |
M | May 21 |
O | 2024-05-21T10:00:00.0000000 |
R | Tue, 21 May 2024 10:00:00 GMT |
u | 2024-05-21 10:00:00Z |
Custom Date & Time Formats
In addition to using standard Date & Time formats, you can also specify custom date and time formats: Custom format strings provide more flexibility and control over the output format.
Date Component
String | Result |
d | Day of the month (1-31) |
dd | Day of the month (01-31) |
ddd | Abbreviated day name (e.g., Tue ) |
dddd | Full day name (e.g., Tuesday ) |
Month Component
String | Result |
M | Month (1-12) |
MM | Month (01-12) |
MMM | Abbreviated month name (e.g., May ) |
MMMM | Full month name (e.g., May ) |
Year Component
String | Result |
y | Year without century (0-99) |
yy | Year without century (00-99) |
yyy | Year with century (e.g., 2024 ) |
yyyy | Full year (e.g., 2024 ) |
Hour Component
String | Result |
h | Hour (1-12, 12-hour clock) |
hh | Hour (01-12, 12-hour clock) |
H | Hour (0-23, 24-hour clock) |
HH | Hour (00-23, 24-hour clock) |
Other Time Components
String | Result |
m | Minute (0-59) |
mm | Minute (00-59) |
s | Second (0-59) |
ss | Second (00-59) |
t | AM/PM designator (first character) |
tt | AM/PM designator |
z | Time zone offset (+/- hours) |
zz | Time zone offset (+/- hh) |
zzz | Time zone offset (+/- hh:mm) |
Examples of custom Date and Time formatting
MMMM d, yyyy | May 21, 2024 |
MMM d, yyyy | May 21, 2024 |
MMM d, yyy h:mm tt | May 21, 2024 8:30 AM |
ddd, MMM d, yyyy 'at' h:mm tt | Tues, May 21, 2024 at 8:30 AM |
Support for Spintax
Spintax enables the randomization of text within the content. This can be useful to create unique messages per send.
{{spin "Hi|Hello|Hey"}} there!
Spintax is similar to all other personalization, but only applies to content. The result is that for each send of the message the statement is randomized per send with either "Hi there!", "Hello there!", or "Hey there!".
RecommendedImportant: Preceding and ending spaces are automatically removed. For example, if the above text was instead "Hi| Hello|Hey", the space before " Hello" is removed and the rendered text is "Hello there!".
Inserting HTML
Occasionally you may want to use personalization templating to insert HTML. By default, this isn't allowed. However, using the special html
prefix tells DailyStory story to HTML decode the content and insert it as HTML.
{{html profile.some_html_snippet}}
The value stored in the profile must be HTML encoded. For example, <strong>Hello world</strong>
would need to be stored in the profile as: <strong>Hello world</strong>