First steps
User Data
- Email Builder Review
- Designing your email
- Creating a Synchronized Module
- Setting Responsivity
- Building Smart Containers
- Creating a Gmail Promotions Annotation
- Adding a Rollover Effect
- Adding a Background to an Email
- Adding Anchor Links
- Adding a Video to an Email
- Adding a Table to an Email
- Adding a Custom Font
- Adding Social Media Buttons
- Editing HTML and CSS
- Working with “Images” block
- Using AI in the Email Editor
Omnichannel
- SDK for Mobile Apps
- Managing mobile SDK access keys
- Connecting Mobile App
- Creating a Google Project for Mobile Push Notifications
- Creating Mobile Push Messages
- Setting Up Delivery and Clicks Analytics
- Deep Links and Universal Links
- Scheduled Mobile Push Message
- Sending Test Messages from the Event Debug View
- Setting Up Widgets for Your Site
- Widget Calling
- Storing data from widgets to contact fields
- Using Annoyance Safeguard
- Actions After Form Submission
- Yespo Extension for Google Chrome
- Creating Pop-ups via Google Tag Manager or WordPress
- Sending Yespo Widget Events to Google Analytics
- Replacing Double Opt-In System Workflow
- Setting Up Locations for the Widget Calling Rules
Automation
Personalization
Analytics
- Email Campaign Report
- Web Push Campaign Report
- Viber Campaign Report
- Mobile Push Campaign Report
- App Inbox Campaign Report
- Widget Report
- Triggered Campaign Report
- AMP Campaign Report
- SMS Campaign Report
- Multilingual Campaign Report
- Setting up UTM Tags
- Revenue from Campaigns
- Tracking Campaign Performance in Google Analytics
Multilanguage Campaigns
Events and Behaviour Tracking
Recommendations
API
Security and Compliance
Integration
Personalization by Merge Tags
In terms of marketing communication automation, personalization refers to the substitution of dynamic variables to personal contact data. At the moment of the message send, variables in the message template are substituted by the corresponding data taken from a contact card.
The most common example of personalization is the %FIRSTNAME% variable that is substituted by a customer's name, provided the corresponding field is filled in the contact card.
The substitution principle can be applied to other data:
- Contact surname;
- City or country;
- Promo code or QR code link;
- Name of the operating manager;
- Address, email and phone number of the physical location;
- Bonuses in the customer’s account, etc.
Personalization is used for both bulk and triggered campaigns in all channels - Email, SMS, Web Push, Mobile Push, Viber.
To see all personalization options available for your account, go to your profile > Settings > Additional fields. Additional fields can contain any contact data you send to our CDP through API.
How to Add Personalization to Messages
SMS, Web Push, Mobile Push, Viber
The SMS, Web Push, Mob Push, and Viber editors have a similar interface, with the personalization icon placed identically. Click it to unroll the list with available variable options.
In the email editor, the personalization feature is hidden by default and gets available only when you edit text. To use it, click any text piece to disclose the top menu and click Merge tags.
How to Use Dynamic Variables
Using variables, you can add any personal info depending on the available data in the contact card. For example, to address a customer by name, use the %FIRSTNAME% variable.
In the message, a variable is substituted by the value specified in the contact card data field. If the particular field is empty, the variable will be ignored and no data will be substituted.
In this case, depending on the punctuation and copy, the user may receive a message with an evident space or missing word.
To avoid it:
- Add a vertical bar (|) after the variable you’re using (%FIRSTNAME|%). In our system, it’s added by default to any variable.
- Enter alternative text after the bar (%FIRSTNAME|friend%).
Contacts whose names are specified in the cards will receive messages with a personal greeting. Contacts without known names will receive messages with a standard greeting.
This substitution principle applies to all variables. Take a look at the example with more dynamic variables.
Used variables:
- %FIRSTNAME%
- %EVENT%
- %PERSONAL.BONUS%
- %MANAGER.PHONE%
- %MANAGER.NAME%
- %PERSONAL.PROMOCODE%
Note. Variable names can differ depending on the contact field names you have in your account.
To add a variable for an image, click the image block, click URL and insert the variable (for example, %PERSONAL.QRCODE%) in Image path.
Or you can add a variable as an src attribute straight to code.
Important!
The variable value should be a link with an absolute path, for example: https://example.com/qr_code.png
The more contact data you have, the more dynamic variables you can use. Make sure to update your contact base on a regular basis. You can do this through import or API integration. Also, you can send campaigns to collect additional contact data.
How to Use Velocity for Email
Dynamic variables help personalize your messages, but they get inapplicable if you have few or no contact fields filled. Due to the absence of data for substitution, some blocks of the email copy can be incomplete and confusing.
The possible solution for email is to hide certain blocks unless all data is available. To do this, you can use Velocity. For substitution in messages, Velocity can use data not from the contact card but from events sent to the system.
To use it in the email, click the structure you want to hide and open Code editor.
As shown in the example below, add variables (in our example PERSONAL.PROMOCODE and PERSONAL.QRCODE) to the code in the commented format: #if($data.get('PERSONAL.PROMOCODE')!='' and $data.get('PERSONAL.QRCODE')!='').
Add the if/else statement. The if/else statement will execute the code for the structure if the specified conditions are true. For example, if both data pieces (personal promo code and QR code) are available, the block will be shown in the email. If one of them isn’t available, the whole block will be hidden.
Add #end to specify the end of the conditional array.
Apart from hiding blocks, the if/else statement can also check whether a certain contact field is filled. For example, to check the contact name field, add to the code
#if($data.get('FIRSTNAME') and $data.get('FIRSTNAME')!='')
Hi, $!data.get('FIRSTNAME').
#else
Hi.
#end
This principle applies to any variable you want to check.
Additional personalization can be delivered to emails through personalized product recommendations. Learn more on how to set up product recommendations for email.