The owner of Easyspine.com, a professional chiropractor and physical therapist, commissioned me to create a web application to create and handle highly customized email marketing campaigns. Per the client’s instructions, the app allows an admin to add contacts containing basic contact information, create email topics and individual emails within those topics, and segment contacts according to custom statuses (i.e “New to Treatment”). The admin can create queues for each individual contact, customizing each queue and the delivery frequency between each email. The client requested that I focus entirely on functionality and creating a detailed specifications document, and spend no time on design.

In order to send the emails at the correct time I created a php cron job that checks each contact’s next delivery date – determined by the delivery frequency for that contact. If the the next delivery date the same day, the next item in that contact’s queue would be sent. Email templates are designed in MailChimp and sent to Mandrill. I used the Mandrill API to send each queued email as a transactional email.

Subscriber and Admin Creation and Management

Subscribers or new admins can easily be created from the user admin section. New admins will be assigned a password and will have the ability to use all features of the app.

All information pertaining to each subscriber can be seen at a glance in table form. Admins can easily manage any aspect of any subscriber - queue, frequency of delivery, statuses, and basic information - from the user admin table. All updates are handled within a modal using jQuery and AJAX

Subscriber Queues

In the subscriber queue window, the right column contains all email topics and individual emails created by the admin, and the left column contains the that subscriber's queue. To reorder the queue, the items could be dragged and dropped using jQuery. Adding or removing items to or from the queue is handled using jQuery and AJAX.

Subscriber Search

Subscribers can be easily found by name or email. Subscribers can also be segmented by empty queues, no statuses, and other criteria requested by the client. The search was built using jQuery and AJAX.

Email Topics and Items

Email topics and items are referred to as blog topics and blog items. The blog admin section is divided into three columns. On the left are blog topics. New blog topics can be created using the text input at the bottom of the column. If a blog topic is selected, the blog items within that topic are displayed in the middle column. Here, the admin can select a blog item, or change the name of the topic. When a blog item is selected, details for that item are displayed in the right column as well as all subscribers currently receiving that item. This is where the admin can edit item details, activated or deactivate the item, and assign a Mandrill template.

Whenever subscribers are displayed, as they would be in the right column if this blog item had subscribers, admins can select one and a modal will appear with that subscribers details including all associated statuses and their queue. Any information can be edited from this modal.

Status Administration

Similar to the blog admin section, the status admin section is divided into three columns. On the left is the status itself. New statuses can be created in the text input at the bottom of the column. When a status is selected, the middle column displays the status name and description - which can be edited - an option to add subscribers by email or add/remove them in bulk through a modal, as well as all the subscribers currently associated with that status. A subscriber can be selected and will be displayed in the right column. Under that subscriber's details will show what other statuses are associated with that subscriber.

Status Admin Modal

To add subscribers to a status, the admin can click an add/remove button to see a modal with two columns similar to the queue management (and all detail management in this app). On the left are the subscribers associated with the status, and on the right are all subscribers who can be added. All adding and removing is handled with jQuery and AJAX.

Tools Used

  • jQuery
  • AJAX
  • HTML
  • CSS
  • PHP
  • MySQL
  • Mandrill API