Home

> Case studies

> Emails project

Copyright © 2026 Kelly Murphy. All rights reserved. This document is strictly confidential and personal to its recipients. It should not be copied, distributed, or reproduced in part or whole, or passed on to any third parties.

Work in progress: Thank you for your patience (Just need samples? Open my Google Drive folder)

You’ve Got (e)Mail!

Architecting a scalable email engine and lowering the barrier to entry

A one-off request from the CPO that evolved into a platform-wide project overhauling our email strategy on the Product side of the house. My work here traversed the gaps between missing team processes, implicit knowledge, legacy HAML code, brand inconsistency, and the lack of standards. I brought all of those issues into the light to future proof our processes, then utilized AI-driven efficiency to make it managable for folks who aren’t in the code.

Background

TL;DR: Emails from the Product and Product team were wildly different from Marketing emails

At a fast-growing SaaS company, communication often outpaces coordination. Huntress was no exception. By 2025, the email ecosystem was fractured: Marketing sent high-gloss campaigns, while the Platform sent cold, inconsistent engineering-led HAML templates. This lead to critical platform notifications getting lost in a sea of inconsistent Huntress noise, causing a trust gap with our partners. It’s not a good look as a cybersecurity company when your own emails look like phishing attempts.

Marketing

Product

HAML code

Context

What began as a request from the CPO to "clean up a couple email templates" quickly evolved into a full-scale archaeological dig into the Huntress repository. As a Staff-level strategist, I recognized that manually updating 70+ emails was a losing game. I needed to build a system that would scale beyond my own capacity.

​

The challenge was twofold:

​

  1. The Tech Debt: The emails lived in HAML and Ruby—languages few outside of core Engineering could navigate. Even engineers on the team responsible for that area of the platform didn’t know how the emails were assembled and where the dynamic content was called from to personalize each email. Or there was no personalization at all. I partnered with multiple engineers to identify where all these parts lived in the code.

​

  1. The Governance Gap: Until I wrote them, there were no centralized guidelines of what made a good email. Marketing had some things to say about style, but nothing for communicating urgent messages about system failures or non-communicating endpoints, their guidance was all about selling and being slick. The other proverbial skeletons I found included redundant or outdated templates and, most critically, a widespread bug between our payment processor integration that was sending thousands of erroneous overdue notices to customers every month.

Business Goals

Find it, fix it, document it

  • Figure out what’s actually being sent to customers
  • Send the right information at the right time to the right contact
  • Match Brand and Product voice
  • Personalize for the receiver
  • Standardize format for faster reading and highlight key info
  • Future-proof process and internal knowledge

My Role

This work seemed like it would be mostly copy at the beginning, but turned out to have significant changes to the code.

​

Addeded governance and consistency

  • Created email guidelines and got reviews from PM, PMM, and Marketing
  • Crafted and tested a Gemini Gem for Product team emails, automated and bespoke
  • Helped other teams to craft Gems for their unique email tasks, like Recruiting rejection emails
  • Managed reviews, with before & after mocks in Figma, for technical and non-technical stakeholders
  • Created a HAML user guide for engineers and others formatting copy in the code

​

Empowered the Engineering team

  • Located all 74 Platform automation-based emails
  • Identified the highest priority messages, based on Mailgun send rates
  • Provided a list of non-performant emails to PM & Engineering for them to investigate
  • Created pilot GitHub PR to test the workflow
  • Documented how the job, the spec, and the view files all come together to build an email
  • Partnered with the assigned Engineer to address issues with dynamic content:
    • Standardize how subject lines were coded
    • How user names were inserted
    • Which account and subscription details were included

​

Unexpected findings

I discovered a widespread issue with thousands of overdue account notices being sent each month due to how the Stripe and Mailgun integration was set up. The Finance team was aware that customers were not opening those emails and had planned to just notify customers manually. I brought the PM, Finance, and Eng together to talk through the issue. PM was completely unaware that we had that many overdue accounts, indicating an issue with their overall billing strategy.

​

Results

Up-leveling the professional image of Huntress

I started this project with the intent of adding consistency and simply making it easier for the next person. Before I came in, teams in the Product organization were writing haphazard emails without any commonalities. I had even a hard time finding an Engineer who understood HAML, let alone knew where the files were. My work uncovered all of those knowledge gaps and then future-proofed them.

​

Outcome

Huntress Product emails, whether they are triggered by automation or handcrafted for a specific release, are now consistent and sound like they come from the same company. The content is formatted reliably, reducing the cognitive load on readers and speeding up reading times. The team can focus on a critical piece of their communication strategy.

​

Though this project was handed off to the PMM team to bring it home, I have full confidence that they are as prepared as they can be. Which turned out to be a good thing, because I needed to do a deeper dive into our subject lines with some user research.

​