As I mentioned in my earlier post, I’ve been trying to sort of eat my own dog food here, and I’ve been finding it rather interesting so far. Or should I say tasty?
In this post, I will walk you through the beginning of what I call “Simple Marketing” solution. Which also includes “Simple Support” ( just to beef it up a little ?)
But, first, let’s give it some context.
About 5 months ago, I was looking into email automation, and I was finding a few issues with the tools such as SendGrid(Twilio), Mailchimp, Mailgun, etc. They are great, but:
- They are relatively expensive for the purpose
- They are not that easy to integrate (think “dynamic email templates”)
- Not all of them are that reliable when it comes to the email delivery. Even with the dedicated IP address, your emails might still get blocked all the time
And what’s interesting is that I didn’t, really, need to send tons of emails per month, but I did need to send, maybe, around 5-10K in any given months. It’s not spamming, mind you. It’s, essentially, transactional emails + monthly notifications to the virtual challenge participants.
Of course I looked at what Power Platform can offer out of the box, and Dynamics 365 Marketing could be a great option if it were not that expensive. It’s all relative, but for a small (micro?) business… it certainly is expensive.
And then I thought, well, am I not a Power Platform consultant? How long would it take me to do something from scratch? If I could squeeze it into the per user plan… That would be more than reasonable.
That’s where it all started, and it seems to be working out now… I’m going to show you how. But I’m also going to warn you upfront… it’s not quite low-code, at least not all the time ? Nonetheless, I think it’s going to be interesting.
Let start with a screenshot:
Does not look like a lot, but wait. There is some cools stuff there.
How about the ability to:
- Create email templates using handlebars syntax
- Use SQL queries (over TDS endpoint) to get data from Dataverse for those templates above
- Schedule email delivery
- Use Exchange SMTP when sending emails from the shared mailbox (this is also to control email delivery and avoid outgoing exchange “spam” filters)
- Create support requests for form submissions using a simple Power Automate flow with an HTTP trigger
- Automatically create support requests for incoming emails
- And, of course, use Dataverse Outlook integration for outgoing emails when replying to the support requests
Facebook integration? Not yet. But, with all the above, and keeping in mind that I definitely need Facebook integration, it’s probably coming… time permitting, of course.
Let’s go over a few more screenshots.
Here is an email template:
The image above is featuring handlebars and HTML template.
Then there is another screenshot:
If you were thinking “why not to use FetchXml”, there is your answer above. TDS endpoint might be somewhat limited in terms of SQL functionality, but it does support certain SQL functions, so I can add constant values to the select, I can use Date functions, I can use string functions… and I can do a lot more.
Then there is a scheduler:
I can schedule my template to be processed at a specific time, I can also use a test email, and I can exclude some emails if, for some reason, I don’t need that email to go out to those specific emails this time around.
Finally, there is email tracking:
I can look at the email scheduler and see which emails have been processed or which ones are still in the scheduled state (remember Exchange outgoing “spam” filter”? For a given user account, it’s 300 emails per hour max by default or you are in trouble)
And, finally, there are Azure Functions to make it work:
You might be asking why Azure Functions? Why not to use Power Automate?
My personal opinion… Power Automate would take me much longer to do the same. I actually tried, so I’m talking from the experience.
Which means that, while talking about the solution in my next post, I’ll not be apologizing for not using Power Automate that much, I’ll just assume I’ve already done that ?