Category Archives for "Growth Engineering"

How to Update Content Based on URL params; No Libraries Required

If you’re a frequent user of Netflix or Amazon, then you’re familiar with how they use what they know about you to tailor their platform to your tastes. Personalization is an effective marketing technique. It makes you a more engaged customer, and more likely to get out your wallet.

But you don’t have a team of data scientists or expensive enterprise level marketing tech. How can you apply personalization to your business?

Good news! None of that is required. You don’t even need any JavaScript libraries or frameworks! Here’s an example you can get started with: Changing the page based on query parameters.

The Project: Changing Headlines and Hiding Forms

We’re going to create a simple landing page, then make some optimizations:

  1. If we know the person is a subscriber, we won’t show them the opt-in email form.
  2. We’ll change the headline to make it more specific.

Perfect project for a marketing developer. The more specific your copy is, the more it will resonate with the user. Imagine if the title of this article was “Hey Matt, here’s how to optimize your landing page for your premium icon set!” For all you Matts out there, wasn’t that nice?

The Result

Here’s the final product. Below I’ll explain exactly how it works.

See the Pen Dynamic Content From Query Parameters by Glenn Stovall (@GSto) on CodePen.

Watch it in Action:

Now Learn How It Works:

First, Parse The Query String:

Fetch the query string (everything after the “?” in the URL.)  It’s referenced here:

Then, parse that string into an object so that you can access specific variables. Here’s a function that handles that:

/* Converts a query string into an object. 
 * example input:  ?src=agency
 * results: { src: "agency" }
function parseQuery(str) {
  //Remove '?' from beginning.
  str = str.substring(1) 
  //split the string into key value pairs
  var pairs = str.split("&")
  //convert them into an object
  return pairs.reduce(function(map, pair) {
      var kv = pair.split("=")
      var key = kv[0]
      var value = kv[1]
      map[key] = value
      return map

It’s worth noting that every value is a String. If you want to interpret a value as an integer or float, you’ll need to use ParseInt and ParseFloat. For booleans you can use value == ‘true’

Then, Show and Hide Elements

Now that we have a usable object, we can start manipulating the page. In these examples, we’ll be using the native document.querySelector and document.querySelectorAll methods. Using native methods keeps your code portable. You can use this code anywhere from a single page application to Google Tag Manager.

Here’s the function that hides our email opt-in. If we already have the visitors email address, we don’t need to keep pestering them.

if(profile.subscriber) {
  document.querySelector(".course-opt-in").style.display = "none"

Finally, Update Text on The Page

Similarly, we can update text. Here’s an example that looks for every instance of a specific class, and changes the text within that element. First, the helper function that makes the updates:

function updatePlurals(text) {
  var targets = document.querySelectorAll(".target-plural");
  for(var i = 0; i < targets.length; i++) {
    targets[i].innerText = text;

And then a switch statement to call said function.

switch(profile.src) {
  case "agency":
  case "freelancer":
  case "startup":

Exercise: How Can You Apply This To Your Site?

What are some ways you could make your pages resonate with your visitors more? The more resonant your content, the more helpful and persuasive you’ll be to your audience. Here are some ideas for places to start:

  • Headlines. Where could you update headlines to make them more specific?
  • Opt-ins. Where could you remove opt-ins to make the experience more pleasant for your users? Could you show different opt-ins based on what you know about them? (for example, instead of asking someone to opt-in to a newsletter, you could ask them to sign up for a free trial).
  • Calls to Action. Besides headlines, calls to actions are the most important text on your page. How could you make them more persuasive?

What is a Marketing Developer?

When surgery was invented, the job title “surgeon” came with no modifiers. It didn’t matter what needed to come off or go in, you could see the same person. As medicine advanced, the job splintered. More knowledge meant increased complexity which necessitated specialization. Soon you would see one person for your war wounds and a different surgeon for tuberculosis. This process continued today, where we now have many different specializations.

What does this have to do with web development?

I’m getting there. I’ve watched a similar splintering happen to designers and developers throughout my career. At my first job at an agency, back in 2008, those were the only two titles in the production department. At today’s software company, you will find a mix of front-end, back-end, DevOps, mobile, native, UX & UI experts. All taking orders from a product manager or project manager, sometimes both.

I’ve seen a new type of position begin to branch off. The marketing developer. Sometimes called a growth engineer.

Today marketing departments of a certain sophistication require a programmer’s skill. You can make progress faster when you don’t have to fight the product team to gain access to it.

Since this idea is new to me, I want to attempt to put a finer point on it.

 What are the responsibilities of a marketing developer?

  • Analytics. Ensuring metrics are tracked accurately and can be interpreted usefully.
  • Website Performance.  It’s known that slow performance decreases conversions. A marketing developer can focus on performance improvements with the aim to increase revenue.
  • Segmentation & Personalization. If you’re speaking to everyone, you’re speaking to no one. These days there is no excuse for showing the same web pages to every customer.
  • Tools as Marketing.  You typically don’t want to take a developer off of working on your core product to build a tool for customer acquisition. Examples include VWO’s Statistical Significance Calculator.
  • Testing & Optimization.  Speaking of VWO, when A/B testing starts to require npm modules, you’ll need an engineer to implement them.
  • Marketing Automation.  Sometimes you want to write scripts for your in-house automation. Even if you are using off-the-shelf tools such as  Zapier or Drip’s workflow editor, these are examples of duck programming and benefit from an engineer’s eye.

It’s an interesting field. One I expect to see a lot more of in the coming years.

How to Apply Design Principles To Your Marketing Initiatives

I want to review a quote from Mike Monteiro’s book, You’re my Favorite Client:

So let’s look deeper into the design process, with a giant caveat. Every designer claims their own process… But whether you’re working on an agile or a waterfall process (or smartly between the two), all processes break down to some version of:

  • Find out what the problem is
  • Come up with ideas to solve the problem
  • Pick the best idea
  • Build it
  • Watch people use what you built
  • Tweak it as necessary

The section struck me when I read it. I used to eschew “design.” I was a developer. On the development team. Design was for the design team. But in development I always ran into a problem: I felt like a code monkey. I never had a say in the “what” or “why” of the work. I was a pair of hands doing as I was told. It’s frustrating.

That’s when I realized my problem was my aversion to design. I thought I wasn’t a designer. But design is more than what I thought it was. You can design a process. You can design a system. That’s what I wanted to be doing. I was a designer, I just sucked at Photoshop.

My exit strategy was to try to apply my technical expertise to marketing problems. At least in marketing, there is a clear goal and it’s marked with dollar signs.

So, can we apply design thinking to design a marketing system?

#1. Find out what the problem is

First, we have to decide what marketing problem we want to solve. It’s more specific than more money.

  • Is the conversion rate low?
  • Do we need more traffic?
  • What was the lifetime value of our customer? Is it high enough?
  • Do we have right product/market fit?

We have to know what we’re solving before we try to figure out how to solve it.

#1.5 Decide on a measurement strategy.

I’d like to add my own step (Every designer claims their own process 😉).  Once we decided on a problem we must decide how we will measure results.  Specifying how you measure results forces you to clarify your thinking on the problem. Then you have more clarity on what a solution looks like.

#2. Come up with ideas to solve the problem.

This is the most fun part of marketing. I feel like the marketing departments get a license to have a bit more fun than others. Sometimes an out of left field idea can create real monetary gain. If you want something more standard,  there’s plenty of case studies and resources you can refer to. The challenge of marketing departments isn’t generation, but focus. That takes us to…

#3: Pick the best idea

By defining metrics early, we’ve built a rubric for a pile of ideas. How will this idea move that particular needle?

Once you’ve done that you can do a cost-benefit analysis.

  • What’s it gonna take to implement the strategy?
  • What are the long-term costs?
  • Can we do this once or we going to have to have someone work on this weekly or monthly?

These questions inform costs, Metrics inform benefit.

#4 Build it.

Pretty straightforward. write the content and/or code. Do whatever it takes to get the idea out there quickly in front of as many eyeballs as you can.

#5. Watch people use what you’ve built.

You don’t always get a chance to watch people use what you built. User testing is not always an option. Instead, we have to use the next best things: analytics, and screen recording pools like HotJar.

#6. Tweak it as necessary.

Yet another reason the analytics or important: You’ll learn fast.  For example, Open rates and click through rates vary wildly by industry.  But if you see a variance in one email in your campaign, it could signal that you’re doing something wrong or ride. Adjust as needed.

This is where A/B testing is useful. You can’t test your way to brand new ideas, but you can improve upon a solid 1.0.

A solid 1.0 is the goal here. You won’t know what version 1.1 or 2.0 should look like until your first iteration meets the real world.

Moving fast means faster feedback, which means faster learning. If your idea isn’t working out better to find out sooner rather than later. That way you don’t waste time painting pigs with lipstick.

What I Learned:

I hate that I avoided design for so long. Design is in many ways of what I wanted to do all along, I just didn’t realize it. In my mind, I connected “design” to heavily with “the visual stuff.” Just because you’re not a “designer” doesn’t mean you can’t apply these principles to create better work.

How to Run Losing Split Tests and Still Win

By showing different variations of a product or feature to segments of your audience, you can quickly learn what works and what doesn’t. There’s a reason that every major tech company such as Google, Apple, Uber, etc. Use split testing as a part of their design and research process. Done correctly, you can learn about your customers rapidly and increase revenue. When done wrong, split testing can become an expensive waste of time.

The Wrong Way to Split Test

Here’s what happens a lot when someone reads an article on ConversionXL and decide to start split testing:

  • They install a split testing tool like Optimizely or VWO.
  • They stop throwing spaghetti at the wall and seeing what sticks.
  • Instead, they throw two pieces of spaghetti at the wall and seeing which one sticks better.

When you test this way, you’re missing out on a majority of the value split testing provides. You need to approach split testing with the right mindset to get good results.

The variant on the left with additional parmesan converting 300% better.

Testing is Learning First, Revenue Second

The more you understand your customers, the better you can serve them. To learn the most you can, you need to approach testing with a scientific mindset. Instead of saying “Let’s try something,” or “Let’s pit Tom’s idea against Sarah’s and see who wins,” Start with a hypothesis. Say “If we make this change, I think this effect will happen because of this reason.”  When you approach testing this way, every test will be a win regardless of income:

  • If you lose, then you’ve disproven a notion, and can you this information to inform future tests.
  • If you win, then you’ve found a way to increase conversions, and you have a notion of why that is. You can use that information to inform future tests.

Before you run a test, ask yourself these questions:

  • What change do I want to make?
  • What metrics will it move?
  • How much will it move this metric?
  • Why will this work?

Don’t Let Logic Stand In the Way of Thinking Outside The Box

Since we are testing, any reasonable hypothesis warrants consideration. If there is a justification, go for it. If you have a reason puppy GIFs would increase conversions with your audience, go for it. Ideas should come from anywhere in the company, not just the design team, marketing team, management. Employees working closer to customers and the product will often have insight other departments don’t. When coming up with test ideas, use data and research to back up your points, but keep an open mind.

Treat Every Test Like a 3rd Person

Don’t take test results personally.  Don’t use the phrase “my test” or “my idea.” Talk about your test in the third person. You’re a scientist, remember? Treat your thoughts with a healthy, cold, logical distance. You’ll need to because…

You are Going to Lose. A Lot.

Most of the time, split tests lose more than they win. You’ll have ideas that you think are surefire winners that will bomb horribly. Think of it like baseball. The best hitter in the 2016 season missed 65.2% of his at-bats. Losses are temporary. Wins are evergreen.

Celebrate Those Wins! 🎉

Often the biggest challenge isn’t what to test or how to test, but getting buy-in that testing is the way to go.  Split testing can be uncomfortable for some organizations; you want to help alleviate that awkwardness by highlighting the benefits. Even though you aren’t taking things personally, it’s still nice to let yourself have a moment to enjoy when a test goes well.

No Matter What, Share Your Findings and Show Your Work

The more people that benefit from your testing, the better,  When you get results, win or lose, share them with the rest of your team. Marketing, support, design, and management can all benefit from the data you can gather via testing. Keep sharing an open and company-wide process.

Using Growth Initiatives To Increase Focus

Is your marketing department allergic to project management? Here’s a strategy that might help you reign in the chaos a little bit: Morphing my vague marketing tasks into discrete, measurable projects: I call them growth initiatives. Others call them experiments, which I don’t use here because when I say that people tend to think “A/B testing”. These are more encompassing.

What is a Growth Initiative?

An initiative has four essential components: What you do, how you’ll measure it, when to measure, and what you expect to see when you measure.

What kind of work is involved in a growth-based initiative? Anything aimed at moving the needles on important numbers. Some examples:

  • Guest posting on someone else’s site. (traffic++)
  • Adding a new email workflow to your free trial. (conversion++)
  • Efforts to improve your on-page SEO. (traffic++)
  • A new feature in your app.(sales++, churn–)
  • A paid ad campaign. (sales++)
  • A new lead magnet. (leads++)
  • An A/B test on your pricing page. (conversion++)
  • Doubling your prices for 30 days. (money++)

What are the benefits?

  • In prevents project murkiness. No more goals like “improve SEO.” Instead, you work on a scoped project with a defined outcome.
  • No more guessing which marketing effort you should pursue. When you break your work down, They become easy to contrast. Then, you can focus your effort on the work with the best ROI.
  • No more wondering if a marketing effort worked. Since you decide how you’ll measure and what to look for, counting ROI and telling winners from losers is cake.

How to write and run your first initiative.

Step 1. Scope The Work

Decide what it is specifically you are going to do. The more specific the better. “Improve pricing page” is not a valid project. “Split testing headlines on the pricing page” is. The work should come with a hypothesis. Why do you think your new headline is better?

Step 2. Decide how you will measure the impact.

Decide what numbers you are going to watch and how you’ll get them. Tracking the effectiveness of an SEO initiative could be done by looking for an increase in organic search traffic in Google Analytics. Conversion rates could be tracked in Baremetrics or inside of your optimization tool. There’s no one true analytic solution. Use whatever is best for the project, even if involves slicing and dicing data in Excel.

Step 3. Estimate Impact

How much do the numbers from step two need to move to make you happy? If you aren’t sure, make a wild ass guess. 10% for numbers you are satisfied with and 100% for numbers you aren’t is a fine starting point. Don’t fret too much about specifics.

Step 4. Decide when to follow-up.

Sometimes the data that comes in will come in a few days, other times it can take months. Make a note a specific date and follow-up to check your results.

Example Initiative Email Subject Line Split Test:

You’re read that shorter subject lines get better open rates than longer ones. Shorter = more curiosity, so that makes enough sense to test.

Scoping the work: If you have a large enough email list (I’d say 2,500 – 10,000, depending on engagement), so all you need to do is send an email to the list with two different subject lines.

Decide how to measure: Your email service provider should tell you the open rate.

Estimate impact: I haven’t seen open rates across emails vary much on the same list, so I would start with a conservative 10% bump. 10% as it moving an open rate from 30% –> 33%, not 30% –> 40%.

Set the timeline:  People don’t always check email daily, so I tend to give emails 72 hours before looking at numbers.

So, now we’ve formed our initiative. We’ll send an email with two different subject lines, and observe the open rate.

Now Try It For Yourself

Think of some marketing or project ideas you’ve had banging around in your head. Can you work them into this framework? Give it a try on your next project and see how you like it. If you’ve been feeling stuck or confused, then taking this approach can help give your growth strategy clarity and direction.

The Difference Between Marketing and Growth

Marketing and Growth are two terms have different meanings depending on company culture and context. Here’s how I think about the difference:
Marketing is the discipline of increasing the number of eyeballs on you. Marketing is focused on lead generation; building email lists, getting people to sign up for free trials, and general brand awareness.
Growth focuses on increasing revenue. Growth is any activity that directly aims to move a key performance indicator up and to the right. It needs to be deliberate and measurable. Most of the time that KPI should be tie directly to revenue. Every business, product, and audience are different. Therefore careful experimentation is what drives growth.


At most companies, Growth sits somewhere between product and marketing. Think about this user funnel:

  1. A user searches for a solution to a problem
  2. Then, they read an article detailing a solution.
  3. At the end of the article, they download an additional resource and join a mailing list.
  4. After receiving some emails on the list, they decide to check out a paid product.
  5. After reading the landing page and checking out the pricing, they sign up for a free trial.
  6. During the free trial, they try out the product, while also receiving automated emails that help walk them through the process.
  7. After the free trial, they become a paying customer for the first time.
  8. From then on, the customer continues to use the app until it no longer provides value worth the monthly subscription fee.

That’s a pretty typical funnel for a SaaS company. Let’s think about how ownership of each part of the funnel would break down.

  • Search engine traffic: Marketing. Driving search traffic is digital marketing 101.
  • Content: Marketing.
  • Lead acquisition: Marketing/Growth. The first transaction point: we ask the user to exchange an email for a piece of valuable content. Marketing owns acquiring the leads, but running tests aimed at increasing opt-in rate could fall into either bucket.
  • Lead nurturing: Marketing
  • Landing Pages: Marketing/Growth Here’s another transactional point. Now we want people to opt-in to the using our software so they can give it a try.
  • Pricing: Growth Pricing works as both a part of the marketing pitch of getting X for $Y, and a lever for growth as it determines MRR & LTV. Pricing seems to be the one point that doesn’t fall into either discipline. Pricing is one of the easiest levers to pull to increase revenue, so being thoughtful about it and testing pricing strategies is of the utmost importance for any company that seriously wants to move their charts up and to the right.
  • Free Trials: Growth/Product: How long should a free trial be, and who should make that decision? If marketing owns the mailing list and thus the marketing automation software, do they own that piece of the free trial? The free trial design is crucial to increasing both conversion rate and customer lifetime value. Opportunities here for optimizations and experimentation is endless.
  • Using the product: Growth/Product Granted this is 80% product design, 20% growth, but there are further opportunities to increase meaningful KPIs. How do you move customers up the pricing ladder? How do you reduce churn and recover lost revenue? All of these are opportunities for growth.


There are many different ways to use these terms, but broadly I would define marketing more as “driving people into the funnel,” product as “the end of the funnel” and growth as “the funnel.” I thought about this because I used to work in product, moved over to marketing, and now realizing, maybe what I should be aiming for is growth.

How to Write More Analytics Friendly Code

Why Does Tracking Matter?

 Software built for business should be useful to the consumer and valuable to the company that produces it. To optimize software towards these ends, you need a way to track results. 

No analytics tool does this out of the box. You can install Google Analytics and see how many monthly visits you get without any additional work, but if you want actionable data, you need to lay some groundwork. 

How difficult this task? It depends on the way the app or website is built in the first place. Understanding the need for analytics allows you to make a few small changes to your workflow, without affecting the user experience of your customer. 

First, You Need to Decide What to Track

You can track anything and everything, but doing so means you risk creating a firehose of data,  overwhelming to the point of uselessness. 

Here’s my rule of thumb: If a person enters their credit card or email address anywhere, it’s worth tracking. The credit card points being 100x more valuable. Think subscription activations and checkout carts. For emails, be mindful of account creation and list opt-in. 

1.Have Unique URLs for Goals, Even if they are fake

By default, Google Analytics, and other tracking systems use URLs for event tracking. Often times a “thank you” page exists only so the marketing team can measure performance, not for any benefit to the user. Thank you pages can be useful, but many aren’t. 

If you don’t want to change the user experience, you can create “fake” landing pages with `GET` variables.  

For example, let’s say you have a subscription activation process that takes the user straight to the dashboard, so they can get to work with all the new features they just bought.  You have three subscriptions: bronze, silver, and gold. You want to know which subscription people pick. 

In this scenario, you could update the subscription process to send them to one of three URLs: 

* `/dashboard?subscription=bronze`
* `/dashboard?subscription=silver`
* `/dashboard?subscription=gold`

Even though the variables don’t change behavior, they act as a signal to analytics software. 

2. Add Unique IDs to Clickable Elements

The second easiest kind of event to track is a click, both links, and buttons. If you are building an application with several distinct but similar actions on a page, make those click elements easily distinguishable. The simplest way is with IDs.

Similar to the last example, what if you have a table with three options, each with an identical ‘select’ button? Tracking which selection people make requires JavaScript selector gymnastics. Instead, if they have unique IDs, tracking becomes a breeze. 

3. Everything I Just Said About Buttons, But About Forms

Read 2, but mentally find/replace “click” with “submit” and “button” with “form.”

4. Put UTM Codes on Links From The Outside In

UTM codes, short for “Urchin Tracking Modules,” are a huge boon when it comes to tracking where traffic is coming from, and what they do once they get there. UTM codes allow you to see which traffic sources perform the best. You could be spending equal amounts of resources on SEO and social media,  and getting the same number of opt-ins. But, who pays you more? Do they have the same lifetime value? Without tracking UTMs, it’s impossible to know from Google Analytics. 

Buffer has a great write up on how to structure your UTMs, And Google has a tool to help you build the URLs.

5. Decouple Tracking From Your Codebase

While it’s good to make your code trackable, you don’t want your code to be responsible for tracking as little as possible. There are several benefits: 

* A cleaner codebase. 
* Your application that’s easier to test. 
* The ability to update analytics & tracking without going through the deployment process. 
* If your marketing and production departments are separate, they can both work without blocking one another. 

The best tool for this is Google Tag Manager. With Google Tag Manager, you can have a developer embed one (two if you count the separate `<head>` and `<body>` components), and be done. New embeds can be added without any changes to the codebase, and events are tracked via a cloud-based GUI instead of a custom JavaScript.

6. Think Twice Before Building a Single Page Application

Deciding to build a single page application, i.e. structuring your app such that the UI is exclusively handled in JavaScript & HTML, and your backend exclusively delivers an API to said interface, is not a choice to be taken lightly. 

Is it a good idea? It depends. “Should you build a single page application or not” is a deep topic that could be the subject of multiple articles. But as far as tracking goes, I’ll say this: 

If you build a single page application, you’re going to have a bad time. 

One downside is that you must take additional care to re-implement patterns already in place in browsers and HTTP.  Hope that React component was worth it. 

If you go this route, Google has a guide for integrating your SPA you can read here.

Also be mindful that SPAs don’t work with every tool. For example, Hot jars screen recording and heat mapping is pretty sick but doesn’t work on single page applications. 

Wrapping Up

These are a few sticking points that I’ve had to write issue tickets concerning.  I’m hoping that by taking the time to write this, I’ve reduced the total time spent writing issue tickets worldwide.