Personalization Guide

Rob Howard Updated by Rob Howard

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 personaization, 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"}},
Note 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.

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.

Specify 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!".

Important: 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: &lt;strong&gt;Hello world&lt;/strong&gt;

How Did We Do?

Built in Personalization Tokens

Contact