{"Status":true,"Message":"","Response":{"post":{"postuid":"qzdfgegk5z","tenantuid":"d8b744fc-2e70-4089-bb80-dd1d08f6c7b2","projectuid":"239698c5-f7eb-4574-8cc8-c6568f08b3a0","title":"Personalization Guide","slug":"article/qzdfgegk5z-personalization","html":"\u003Cp\u003EPersonalization 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.\u003C/p\u003E\u003Cp\u003EDailyStory\u0027s Personalization engine utilizes a contact\u0027s profile properties and \u003Ca href=\u0022/article/h1vsml1ve0-create-or-edit-custom-contact-field\u0022\u003Ecustom fields\u003C/a\u003E to build simple replacement personalization, such as displaying a person\u0027s first name, or more complex personalization to show varying blocks of content.\u003C/p\u003E\u003Cp\u003EIn most cases, personalization is as simple as displaying a person\u0027s first name:\u003C/p\u003E\u003Cp\u003E\u003Ccode class=\u0022inline-code\u0022\u003EHi {{@ user.firstname}},\u003C/code\u003E\u003C/p\u003E\u003Cp\u003EOr, showing different content if the person\u0027s first name profile was not set such as in an email:\u003C/p\u003E\u003Cp\u003E\u003Ccode class=\u0022inline-code\u0022\u003EHi {{@ user.firstname default=\u0022friend\u0022}},\u003C/code\u003E\u003C/p\u003E\u003Ccite class=\u0022recommended\u0022\u003E\u003Cspan class=\u0022title\u0022\u003ERecommended\u003C/span\u003E\u003Cp\u003EThe above conditional personalization logic could also be written as\u0026nbsp;\u003Ccode\u003EHi {{#if user.firstname}}{{user.firstname}}{{else}}friend{{/if}},\u003C/code\u003E.\u003C/p\u003E\u003C/cite\u003E\u003Cp\u003EDailyStory\u0027s Personalization Engine uses opening and closing braces\u0026nbsp;\u003Ccode\u003E{{\u003C/code\u003E\u0026nbsp;and\u0026nbsp;\u003Ccode\u003E}}\u003C/code\u003E\u0026nbsp;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.\u003C/p\u003E\u003Cp\u003EMost uses of personalization are simple, but you can create more complex logic in personalization using \u003Ca href=\u0022/article/v7ihhxexur-using-conditional-logic-with-personalization\u0022\u003Econditional logic\u003C/a\u003E. For example, show a reminder that a membership is about to expire or thank them for a recent purchase.\u003C/p\u003E\u003Cp\u003EThe DailyStory Personalization engine is available for the following features:\u003C/p\u003E\u003Cul\u003E\u003Cli\u003E\u003Cb\u003EEmail\u003C/b\u003E - the use of personalization within\u0026nbsp;email\u0026nbsp;is available for the subject, preview text, body, and plain text body.\u003C/li\u003E\u003Cli\u003E\u003Cb\u003EText Messages\u003C/b\u003E - the use of personalization within\u0026nbsp;text messages\u0026nbsp;is available for the message body.\u003C/li\u003E\u003Cli\u003E\u003Cb\u003EPush Notifications\u003C/b\u003E - the use of personalization within\u0026nbsp;push notifications\u0026nbsp;is available for the title and message body.\u003C/li\u003E\u003C/ul\u003E\u003Cp\u003EThis guide provides a list of resources to help you get started.\u003C/p\u003E\u003Cul\u003E\u003Cli\u003E\u003Ca href=\u0022/article/qdrjdr5enm-built-in-personalization-tokens\u0022\u003EBuilt in personalization tokens\u003C/a\u003E\u003C/li\u003E\u003Cli\u003E\u003Ca href=\u0022/article/27swt0jgnj-custom-personalization-tokens\u0022\u003ECustom field personalization tokens\u003C/a\u003E\u003C/li\u003E\u003Cli\u003E\u003Ca href=\u0022/article/v7ihhxexur-using-conditional-logic-with-personalization\u0022\u003EUsing conditional logic with personalization\u003C/a\u003E\u003C/li\u003E\u003C/ul\u003E\u003Ccite class=\u0022recommended\u0022\u003E\u003Cspan class=\u0022title\u0022\u003ERecommended\u003C/span\u003E\u003Cp\u003EIf you are using conditional personalization in emails, check out the \u003Ca href=\u0022https://docs.dailystory.com/article/5foqen0lx6-personalization-widget\u0022\u003EPersonalization widget\u003C/a\u003E. It makes building conditional personalization much easier!\u003C/p\u003E\u003C/cite\u003E\u003Ch2 id=\u0022formatting_dates_and_times\u0022\u003EFormatting Dates and Times\u003C/h2\u003E\u003Cp\u003EThe DailyStory personalization engine support formatting dates and times. This is supported for any personalization token that is a Date or DateTime format, such as \u003Ccode\u003Esystem.today\u003C/code\u003E or user defined fields.\u003C/p\u003E\u003Cp\u003EIf 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.\u003C/p\u003E\u003Ccite class=\u0022recommended\u0022\u003E\u003Cspan class=\u0022title\u0022\u003ERecommended\u003C/span\u003E\u003Cp\u003ESpecify a custom date / time value using \u003Ccode\u003E{{formatDate system.today \u0022MMMM d, yyyy\u0022}}\u003C/code\u003E.\u003C/p\u003E\u003C/cite\u003E\u003Cp\u003EThe special personalization instruction \u0022formatDate\u0022 instructs the personalization engine to format a DateTime value using a formatting string.\u003C/p\u003E\u003Ch3 id=\u0022common_date_andamp_time_formats\u0022\u003ECommon Date \u0026amp; Time formats\u003C/h3\u003E\u003Ctable border=\u00221\u0022 style=\u0022border-collapse: collapse; width: 100%;\u0022\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Cb\u003EString\u003C/b\u003E\u003C/td\u003E\u003Ctd\u003E\u003Cb\u003EResult\u003C/b\u003E\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003ED\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003ETuesday, May 1, 2024\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Ef\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003ETuesday, May 21, 2024 10:00 AM\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003EF\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003ETuesday, May 21, 2024 10:00:00 AM\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Eg\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003E5/21/2024 10:00 AM\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003EG\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003E5/21/2024 10:00:00 AM\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003EM\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EMay 21\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003EO\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003E2024-05-21T10:00:00.0000000\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003ER\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003ETue, 21 May 2024 10:00:00 GMT\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Eu\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003E2024-05-21 10:00:00Z\u003C/td\u003E\u003C/tr\u003E\u003C/table\u003E\u003Ch3 id=\u0022custom_date_andamp_time_formats\u0022\u003ECustom Date \u0026amp; Time Formats\u003C/h3\u003E\u003Cp\u003EIn addition to using standard Date \u0026amp; Time formats, you can also specify custom date and time formats: Custom format strings provide more flexibility and control over the output format.\u003C/p\u003E\u003Ch4 id=\u0022date_component\u0022\u003EDate Component\u003C/h4\u003E\u003Ctable border=\u00221\u0022 style=\u0022border-collapse: collapse; width: 100%;\u0022\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Cb\u003EString\u003C/b\u003E\u003C/td\u003E\u003Ctd\u003E\u003Cb\u003EResult\u003C/b\u003E\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Ed\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EDay of the month (1-31)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Edd\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EDay of the month (01-31)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Eddd\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EAbbreviated day name (e.g., \u003Ccode\u003ETue\u003C/code\u003E)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Edddd\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EFull day name (e.g., \u003Ccode\u003ETuesday\u003C/code\u003E)\u003C/td\u003E\u003C/tr\u003E\u003C/table\u003E\u003Ch4 id=\u0022month_component\u0022\u003EMonth Component\u003C/h4\u003E\u003Ctable border=\u00221\u0022 style=\u0022border-collapse: collapse; width: 100%;\u0022\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Cb\u003EString\u003C/b\u003E\u003C/td\u003E\u003Ctd\u003E\u003Cb\u003EResult\u003C/b\u003E\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003EM\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EMonth (1-12)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003EMM\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EMonth (01-12)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003EMMM\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EAbbreviated month name (e.g., \u003Ccode\u003EMay\u003C/code\u003E)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003EMMMM\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EFull month name (e.g., \u003Ccode\u003EMay\u003C/code\u003E)\u003C/td\u003E\u003C/tr\u003E\u003C/table\u003E\u003Ch4 id=\u0022year_component\u0022\u003EYear Component\u003C/h4\u003E\u003Ctable border=\u00221\u0022 style=\u0022border-collapse: collapse; width: 100%;\u0022\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Cb\u003EString\u003C/b\u003E\u003C/td\u003E\u003Ctd\u003E\u003Cb\u003EResult\u003C/b\u003E\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Ey\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EYear without century (0-99)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Eyy\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EYear without century (00-99)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Eyyy\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EYear with century (e.g., \u003Ccode\u003E2024\u003C/code\u003E)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Eyyyy\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EFull year (e.g., \u003Ccode\u003E2024\u003C/code\u003E)\u003C/td\u003E\u003C/tr\u003E\u003C/table\u003E\u003Ch4 id=\u0022hour_component\u0022\u003EHour Component\u003C/h4\u003E\u003Ctable border=\u00221\u0022 style=\u0022border-collapse: collapse; width: 100%;\u0022\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Cb\u003EString\u003C/b\u003E\u003C/td\u003E\u003Ctd\u003E\u003Cb\u003EResult\u003C/b\u003E\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Eh\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EHour (1-12, 12-hour clock)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Ehh\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EHour (01-12, 12-hour clock)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003EH\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EHour (0-23, 24-hour clock)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003EHH\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EHour (00-23, 24-hour clock)\u003C/td\u003E\u003C/tr\u003E\u003C/table\u003E\u003Ch4 id=\u0022other_time_components\u0022\u003EOther Time Components\u003C/h4\u003E\u003Ctable border=\u00221\u0022 style=\u0022border-collapse: collapse; width: 100%;\u0022\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Cb\u003EString\u003C/b\u003E\u003C/td\u003E\u003Ctd\u003E\u003Cb\u003EResult\u003C/b\u003E\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Em\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EMinute (0-59)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Emm\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EMinute (00-59)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Es\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003ESecond (0-59)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Ess\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003ESecond (00-59)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Et\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EAM/PM designator (first character)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Ett\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EAM/PM designator\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Ez\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003ETime zone offset (\u002B/- hours)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Ezz\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003ETime zone offset (\u002B/- hh)\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Ezzz\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003ETime zone offset (\u002B/- hh:mm)\u003C/td\u003E\u003C/tr\u003E\u003C/table\u003E\u003Ch4 id=\u0022examples_of_custom_date_and_time_formatting\u0022\u003EExamples of custom Date and Time formatting\u003C/h4\u003E\u003Ctable border=\u00221\u0022 style=\u0022border-collapse: collapse; width: 100%;\u0022\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003EMMMM d, yyyy\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EMay 21, 2024\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003EMMM d, yyyy\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EMay 21, 2024\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003EMMM d, yyy h:mm tt\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003EMay 21, 2024 8:30 AM\u003C/td\u003E\u003C/tr\u003E\u003Ctr\u003E\u003Ctd\u003E\u003Ccode\u003Eddd, MMM d, yyyy \u0027at\u0027 h:mm tt\u003C/code\u003E\u003C/td\u003E\u003Ctd\u003ETues, May 21, 2024 at 8:30 AM\u003C/td\u003E\u003C/tr\u003E\u003C/table\u003E\u003Ch2 id=\u0022support_for_spintax\u0022\u003ESupport for Spintax\u003C/h2\u003E\u003Cp\u003ESpintax enables the randomization of text within the content. This can be useful to create unique messages per send.\u003C/p\u003E\u003Cp\u003E\u003Ccode class=\u0022inline-code\u0022\u003E{{spin \u0022Hi|Hello|Hey\u0022}} there!\u003C/code\u003E\u003C/p\u003E\u003Cp\u003ESpintax 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 \u0022Hi there!\u0022, \u0022Hello there!\u0022, or \u0022Hey there!\u0022.\u003C/p\u003E\u003Ccite class=\u0022recommended\u0022\u003E\u003Cspan class=\u0022title\u0022\u003ERecommended\u003C/span\u003E\u003Cp\u003EImportant: Preceding and ending spaces are automatically removed. For example, if the above text was instead \u0022Hi| Hello|Hey\u0022, the space before \u0022 Hello\u0022 is removed and the rendered text is \u0022Hello there!\u0022.\u003C/p\u003E\u003C/cite\u003E\u003Ch2 id=\u0022inserting_html\u0022\u003EInserting HTML\u003C/h2\u003E\u003Cp\u003EOccasionally you may want to use personalization templating to insert HTML. By default, this isn\u0027t allowed. However, using the special \u003Ccode\u003Ehtml\u003C/code\u003E prefix tells DailyStory story to HTML decode the content and insert it as HTML.\u003C/p\u003E\u003Cp\u003E\u003Ccode class=\u0022inline-code\u0022\u003E{{html profile.some_html_snippet}}\u003C/code\u003E\u003C/p\u003E\u003Cp\u003EThe value stored in the profile must be HTML encoded. For example, \u003Ccode\u003E\u0026lt;strong\u0026gt;Hello world\u0026lt;/strong\u0026gt;\u003C/code\u003E would need to be stored in the profile as: \u003Ccode\u003E\u0026amp;lt;strong\u0026amp;gt;Hello world\u0026amp;lt;/strong\u0026amp;gt;\u003C/code\u003E\u003C/p\u003E","publish_status":0,"post_type":"Article","authoruid":"3dde8c16-763a-4a2b-ae0b-1d8c50c62e3d","author":{"authoruid":"3dde8c16-763a-4a2b-ae0b-1d8c50c62e3d"},"featured_image_updating":false,"meta_description":"Meta description: Discover valuable insights and information in this page. Explore engaging content designed to inform, inspire, and enrich your experience.","display_toc":true,"has_workingcopy":false,"allow_indexing":true,"sort_order":0,"total_views":1047,"date_published":"2025-05-21T15:48:35.233","date_updated":"2026-03-19T19:03:48.527","date_created":"2025-04-24T15:02:54.897"}}}