If you’re sending an email to a friend or to a group of people knowing if an e-mail is read is not important. But if you’re sending out an e-mail campaign to 5000 people it’s important to know who is reading the e-mail.
Microsoft Dynamics CRM does not track if a person opens an e-mail or if they clicked on a link. One way to handle this is to pay an e-mail tracking company to send the e-mails for you. This can be expensive and take time to plan and send out an e-mail campaign.
Sounds like a business problem, lets find a solution.
Whenever we solve problems we solve 80% up front then enhance the solution as needed. In my case I wanted to simply know who is opening our e-mails. We send out 5000 e-mail every month, who should my sales people be calling first, the people that have opened the e-mail of course.
A simple way to track who has opened an email is to use an HTML e-mail that pulls an image with a tracking token. Sounds easy. Lets look at what has to be done.
First you need a token. That easy. We can track everything if we know the e-mail GUID.
Next we need a public web site that the image can be pulled from. If we link to an image we cannot execute code. So we link to an ASPX page and pass the e-mail GUID. The ASPX page can connect to the CRM system and log the GUID to an entity. This ASPX page will need to read the CRM URL and credentials from the web.config settings (the user account to connect should have very limited access. Write to e-mail entity only). The web.config will also tell us what image to return. This will allow the setup to return a logo or a one pixel image.
We need a place to store the data. One approach is to add attributes to the email entity (first open date, last open date, count). Now we can report who opened an email, when they opened it, the last time it was opened and how many times it was opened. If it’s opened multiple times they might be forwarding the e-mail. To know this you would want to also log the IP address the image request came from.
The design is basically done. Now when we send out an e-mail we add an image tag that has an image link that pulls an image from an ASPX page. The image URL has the GUID as an argument and will log the request and return the image binary. How do we get the image link with a specific GUID into 5000 e-mails? One approach is to write a plugin that fires on create of the e-mail. During the create of this e-mail we know a GUID for this e-mail. When should the e-mail be tracked? Where should we insert the image? What URL should be inserted? This information has to be stored in a properties file or a configuration table. We store a token and a URL. Our plug in looks at the e-mail and looks for a given token, if it finds the toke, it replaces it with the tracking URL and GUID.
One thing to consider is how your tracking URL is perceived. If you name your ASPX page tracking.aspx the user might not download the image. If you name your ASPX page getlogo.aspx there will be more positive response to the content. Another issue to over come is how do I know if the e-mail is opened from the e-mail recipient or from with in the CRM system. The image will get pulled no matter who opens the e-mail.
This is all at a high level, but the concept is simple. Add an image tag with a URL tracking token to your e-mail that has a specific GUID so we can identify if this e-mail was opened. Not too difficult, but adds a lot of value to sales team.
Here’s what our email entity looks like – the data is right in ms crm!!
And now that these are just fields in the email messages, we can create advanced finds based on this data….for a marketing campaign these are the folks that we want to call back right away.
Want to see how it works? Join our mailing list and we will make sure to send you an e-mail and track when it’s opened.
How do you extend this concept? What links in the e-mail did they click? That would be great to know…