Does anyone use Kentico to send marketing emails with large amounts of personalised data?

Nicholas Gornall asked on October 27, 2020 04:31

Just wondering what the best practice is for using Kentico Email marketing module to send bulk personalised emails?

As an example we regularly send Email marketing emails to 5,000+ users with a personalized survey URLs.

Is there a recommended way of achieving this using Kentico?

Solutions I currently use are below. Generally these work but they are a bit clunky and cause a generally headache as we send emails like this almost weekly. I'd be interested to know if anyone else has had/overcome the same issue.

Method 1: "OM.Contact" field

  1. Add a Custom field to the "OM.Contact" object
  2. Upload data using the "Contact management > Import contacts". Map fields/data from Email and CustomFieldX"
  3. Use {%Advanced.ContactInfo.CustomFieldX%} in the body of an Email marketing module email.

Method 2: Custom tables

  1. Create a Custom table and upload the custom data (ie. list of survey links and recipients email address)
  2. Use {%GlobalObjects.CustomTables["Custom.CustomTable"].Items.Where("ContactEmail='"+Recipient.Email+"'").FirstItem.GetValue("CustomFieldX")%} in the body of an Email marketing module email.

Advise or suggestions would be greatly appreciated. Cheers, Nick

Recent Answers


Daniel Merta answered on October 27, 2020 11:09

Hi Nicholas, to what version of Kentico is this related? Both methods that you mentioned require a query to the database and I don't see a big difference between them. Is the issue that the sending of emails is taking too long, or is there any other issue/error appearing during sending? When the system sends out an email, it creates a personalized email for every individual recipient. However, 5k emails aren't that many and should not cause any harm to the performance.

When speaking about the 1st method, where exactly and how many macros in the mail you have? For personalization of email widgets we officially recommend only macros from this page: Reference - Email marketing macro expressions, because using other types of macros may significantly reduce the performance of the system - this may be also your case.

0 votesVote for this answer Mark as a Correct answer

Nicholas Gornall answered on October 28, 2020 06:27

Hi Daniel, currently on Kentico v12.

Generally both approaches work but I'm starting to run into issues with scaling as we send more of these emails with custom data. With 1+ new field per week Method 1 results in a large number of fields being added to the OM.Contact object. Method 2 has previously run into timeout issue when using 6-8 custom data fields displaying multiple times in a single email.

Looks like the most complex use case an email with ~40K recipients and ~45 usages of Advanced.ContactInfo in macros.

Thanks for the link. Based on that page there is fairly limited access to personalised data, only FirstName, LastName and Email. Is there any recommendations on how to build emails if we want to include more personalised data that is not stored in the OM.Contact object?

0 votesVote for this answer Mark as a Correct answer

Michal Samuhel answered on October 29, 2020 11:00

Hi Nicholas,

Are these URLs something you are getting from outside? Is there any reason why you could not use NewsletterID and lets say ContactGUIDs in query string as unique identifiers? This would take least toll on performance.

Otherwise you would have to create M:N table. So binding table along with table holding data. A custom macro in email content would be needed. Custom macro logic would create a hashtable to do lookup in memory in between contacts and links as this could be fastest way. Another approach could leverage lookup on SQL server directly to offload work and make lookups faster.

0 votesVote for this answer Mark as a Correct answer

   Please, sign in to be able to submit a new answer.