Working in the airline industry we noticed that prices are rapidly changing and that makes it difficult to do different types of advertising. Anything that contains pricing needs to be dynamic or it won't be relevant for the user once they see it. We decided to tackle one of the most useful but difficult channel for marketing. Email marketing.
What it does
airDEM allows for an airline company to create and manage dynamic email marketing campaigns that will automatically generate images with the most up to date price for any flight. This is done by generating the advertisements as soon as the user opens their email using very powerful image composition using the current prices for promotional flights, this would allow for more conversions if the user is interested in those specific flights. We also allow for the marketing team to track different KPIs such as click-through-rate and impressions.
How we built it
Using React with Hooks and the new effect lifecycle as well as using an MVC structured Node.js backend we were able to reliably create and handle updates to the users data and campaigns. We also created a service that would get the most current prices from different airlines and paired that with our powerful image generating service that would take the flight data and create the images for the emails as soon as the user opened the email. Then using the campaigns our users created we would send our HTML template emails to their mailing list that would allow for us to keep track of not only their KPIs but also give their users those up to date prices.
Challenges we ran into
React Hooks is something that neither of us had worked with before so it was a tough but fun challenge to finally say that we have a better understand of the new React changes. Creating Dynamic Images efficiently is something that's not an easy feat. Sending mass emails is also difficult especially when you need to create the HTML template from scratch
What we learned
Creating a good infrastructure can be tedious at first but it made it a lot easier to create new components and add new services into our application in the long run. Our code is more maintainable, allowing for this project to actually be something we continue to work on as a side project.