UPDATED 16 March 2019: I started a new website where I’m live streaming marketing content. Doing things like the below. Check it out: in8.io
UPDATED 22 July 2017: Some tools ended their freemium plans, added a new recommendation for analytics, added section on mapping Segment events to FB conversions. I’ve also written a supporting post with the step-by-step guide to setting up the Ninja Forms + Segment integration.
For the last 10 weeks I’ve instructed Academy Xi‘s growth marketing course alongside Phil Ohren, head of search at Mindshare.
Towards the end of the 10-week course, one of my students (hi Matty!) was keen to put together the cheapest growth marketing stack possible.
If you don’t know what a marketing stack is, I’m referring to the set of tools you use to market and grow your business (brands like Hubspot, Infusionsoft and Salesforce try to sell an ‘all in one’ solution to small businesses, but they come at a price).
I was inspired to put together my own solution, and a couple of days later I’ve decided on my leanest stack recommendation.
I rarely spend too much time thinking about the tools. I think the choice of tools is easy if you know what you’re after, what’s possible and what’s feasible. To be fair, it’s much easier if you’re starting from 0, like I am in this case.
The idea behind the challenge is to put together a marketing stack that meets the following requirements:
[UPDATE: This stack is what I’m using at the moment for this website. I’ll keep this page updated as I try different things.]
Growth Marketing Stack Requirements
- Events/behavioural tracking, attribution and reporting
- A ‘single’ user view, user level tracking
- Tracking anonymous user data and unifying it once they can be identified
- Marketing automation and customisation based on user behaviour
- Bonus: Some sort of referral system
- User-level data synced across domains, tools and devices.
- A CMS
- A sales CRM
- Integrated with payments/accounting
- Free or freemium tools only (no free trials)
- Accessible and not too technical
Bear in mind that as you grow you’ll eventually have to upgrade parts of the stack. Also, I have no data warehouse or database to plug into (I suppose the WordPress database counts, but you get what I mean).
The tools in this stack are a great place to start for free.
My Solution: Leanest Stack
Anyone can replicate the stack. For the most difficult part, I modified a WordPress plugin which anyone can install. If you’re familiar with any programming language you’ll be able to modify the plugin yourself, but if you’re not I can send it to you. I’m also writing a post with all the steps on that.
Here’s a video illustrating the basic capabilities of the Growth Marketing stack, all user data synced across different tools:
In my case, the stack will definitely suit its purpose for a decent amount of time – but I still chose the tools thinking about scalability.
I’m not a developer, but some aspects of this could be considered technical – my front end development skills went a long way.
I feel like I ticked all of the requirements with my lean stack for this website – I even threw in some added bonuses like session recordings and live chat!
All of the tools I’m using are either free or have free plans – no free trials.
$0 Growth Marketing Stack
So without further ado, my chosen tools in the stack!
- Segment (free plan): Events tracking, behaviour tracking, unifying user identities
- Google Tag Manager (free): Tag management
- Ninja Forms – I had to modify this one, it’s an important bit
- Drip (free plan): Marketing automation, customisation, etc…
- Woopra (Free Plan) or Amplitude (Free plan), H
eap (free plan)and Google Analytics (free): Data visualisation and reporting
- WordPress (open source): CMS
- Salesmachine (free plan) : CRM
- Hotjar (free plan): Session recordings, heat maps, CRO (will review Full Story soon)
- Drift (free plan): Live chat (integrates with Slack)
- WebEngage (free plan): Browser push notifications
- Zapier (free): For the bits/pieces, has Webhooks
There you go! Enjoy 🙂
If you’re keen to learn more about how I set it up continue reading.
This stack, used as a live example, is a good way to show startups and students that they can have a great marketing stack, for $0 and right out the gate.
(I’ll skip buying domain names/setting up WordPress because I feel that’s out of scope)
If you get stuck, I can offer you support.
These are the steps I followed:
1) Events and behaviour tracking with Segment
Segment is more of a developer’s tool, but it essentially allows you to centralise all your event tracking. So you track things in Segment and it sends all of the info wherever you want (or, well, many places).
Due to the cost constraint in the challenge I have to integrate cheap tools with one another, and that definitely made Segment my first point of call. If you’ve been working in growth marketing for a while you’ll be familiar with Segment.
1.1 Installing Segment in WordPress
- Go to Segment.com and register for a free account
- Log into your WordPress site and install the Segment plugin
- Activate it
- Go back to Segment, find and copy the API write key
- Go back to WordPress and paste the API key
- I personally activated some of the custom settings for page events
It’s easy to add the Segment code directly to the header, but the plugin works well and automatically creates useful page events.
Here’s a screenshot of the admin screen for the Segment WordPress plugin:
Ok, so that takes care of the Segment installation.
What I want to do next is start sending data about specific users to Segment. Beyond that, I also want to track anonymous users so that, if they register later on, I can bind all the actions they took while they were anonymous to their identity.
1.2 Sending user data and identities to Segment
I can identify the users on my website once they complete a contact form, so I have to get the forms on my site to send the users’ data (like their email and name) to Segment.
Some implementations I found send the user’s identity data when the submit button is clicked, but that skips the data validation and doesn’t give the user feedback about their submission.
I wanted an implementation where only successful form submissions would send data to Segment.
I achieved that by installing Ninja Forms, and then modifying this Ninja Forms Google Analytics plugin to send Track and Identify calls to Segment (instead of sending data to Google Analytics) upon successful form submissions.
2) Identifying anonymous users with Segment and Google Tag Manager
If you make an empty Identify call, Segment will generate an id for anonymous users. The base Segment code doesn’t include an Identify call though, so I added that through Google Tag Manager.
(I didn’t modify the base code since I originally installed Segment via a plugin in WordPress – accessibility and low technicality were part of the original challenge!).
But why am I trying to do that? Because once the users are no longer anonymous (ie, I have their details), I want to have the history of everything they did before I knew who they were.
I want to be able send them more relevant, customised messages during onboarding, and I can do that by taking into account the actions the actions they took before they registered (did they read my CV? was it a blog? Who referred them originally?) – striving for that single customer view 🙂
In the demo video, I demonstrate this by looking through one of my student’s history on Drip:
You can see it goes all the way back to when he first visited my website, and includes actions from other software (Stripe payments, Drift live chat, etc…)
Since I had asked the class to install Segment using the WordPress plugin, I couldn’t easily get them to modify the Segment base code. I did the following instead:
- Set up GTM, a container, etc.
- Create a new tag
- Added the Segment ‘identify’ call and triggered the tag on every page view (you can choose to trigger it only on some pages, like a pricing page for example, if you have a lot of anonymous users/traffic)
Ok, so that takes care of that! Anonymous visitors are now getting an anonymous ID in Segment.
Onto the next part: Automated, personalised emails.
3) Email marketing automation with Segment and Drip
At this stage I’m sending data to Segment (you should see it in the debug menu if you’re following this setup) but not really doing anything with it.
The first thing to do is set up the email marketing automation and segmented email workflows – since anyone that signs up should get a welcome email, I guess it makes me want to set that up next.
- Go to Segment and activate the Drip integration
- In Segment, find your API write key and copy it
- Go to Drip.co and in their integrations section, integrate and add the write key
- Create awesome email workflows!
I choose Drip because it sends user email click data to Segment, that’s something that others (read Mailchimp) don’t do. So, with Drip, you can send information about the links people click in the emails you send them to any other tool.
Here’s a screenshot of an email workflow that uses data from other tools (for example purchases through Stripe):
Drip has a free plan for up to 100 contacts, with all the automation features – Mailchimp doesn’t have free automation. I also have to choose Drip in order to achieve a better flow of data through the stack – I’m also really enjoying the UI.
So, that’s already a massive win: Marketing automation and user-level tracking for free. Next: Reporting, visualising, etc
You can have a lot more automation if you add things like WebEngage for browser push notifications, or collect phone numbers.
4) Visualising growth, reporting, etc… with Segment and Woopra, Heap , Amplitude…
I’m teaching the class to approach business problems thinking about the Growth Marketing Funnel, so the next step of the challenge is to find a good data visualisation and business intelligence tool.
I decided to check them out and I’m really impressed by both tools and their respective Freemium plans.
At the moment, Heap can be free up to 50,000 sessions per month if you add a badge to your footer, and Amplitude is free up to 10 Million events (not sessions) per month. In my opinion, the paid version of Amplitude is a more premium tool than the paid version of Heap, but both of the freemium plans are great. I’m using them both.
4.1 Visualising data with Segment and Heap
All you need to do is go to Segment and switch on the Heap integration, then go into Heap and choose what reports you’d like based on all of your user events and properties.
Check out the quick video below to get a feel for the UI:
Heap is a great looking tool with great features, but I’m also running Amplitude at the same time. The reason being that Amplitude’s freemium plan gives me a lot more runway (10 million events per month), and both tools have everything I need to do my reporting when I put them together.
Since they’re both free, and there’s no extra effort in sending the two of them events from Segment, I’m happy to use both for now. Then, when I need to upgrade, I can decide which one to stick with without sacrificing historical data.
4.2 Visualising data with Segment and Amplitude
At the moment I favour Amplitude over Heap for my business. I feel like the reports I use the most, like the funnel reports, are more flexible in Amplitude. However, I recently started working with a SAAS business and Heap is making more sense there.
Anyway, some reasons I like Amplitude:
- The amplitude Revenue and User LTV charts work very well for me and worked pretty much automatically
- Amplitude recognises ‘revenue’ when I send it through from Segment, whereas Heap needed a little extra work
- Sometimes Amplitude lets me filter for custom event properties in their funnel reports in a more useful way, at least to me (i.e. ‘Was sent email’ where ’email subject equals ABC’)
- Amplitude’s funnel reports let you report on non-strict/non-linear funnels
The video above is a peek at the Amplitude UI, where I explain and demo some of the reasons I prefer it.
4.3 Visualising data with Segment and Google Analytics
You can also use Google Analytics to do some of the behavioural tracking, but its UI and capabilities fall well short of Heap and Amplitude (even if you’re passing UIDs).
Also, if you’re following this exact setup (using the plugin I made and not using a database) you’ll need to choose NOT to send through UID data to Google Analytics. This is because I have to use their email as their UID, and passing that to Google Analytics is against their terms.
In any case, here are some screenshots of this type of info in Google Analytics.
4.3.1. Google Analytics Retention report/Cohort Analysis
The report above is easy to pull if you’re triggering Identify calls on Segment. You reach it by going to Audience, then Cohort Analysis. There’s a wealth of filtering and segmenting options for the data in Google Analytics, and this report can be very useful. Remember, Google Analytics is completely free, whereas some of the other tools I’ve mentioned have Free Plans/Freemium models.
4.3.2 Google Analytics User Explorer report:
The report above is also inside Google Analytics. I’ll repeat it a final time, you shouldn’t be passing through info that can give away a users true identity to Google Analytics, it’s against their T&C.
That means this report in GA is not an actionable sales tool, but you could certainly use it to tease out insights about your user’s behaviour and engagement.
4.4 Visualising data with Segment and Woopra
I recently worked with a SaaS where Woopra ended up being the chosen tool.
At first, Woopra appears less flexible than the other tools but the freemium plan is actually quite robust. The default reports cover a lot of ground once you get your head around and tidy up your schema.
Woopra’s labelling functions come in super handy when creating reports, since you can create reports based on labels and change the underlying definitions of those labels at any time.
In my opinion, Woopra’s limitations come in trying to do complex revenue and LTV reporting but, since this stack is also using it, Amplitude kind of picks up the slack (and in the real world, you can always run sql queries in your data warehouse).
Woopra’s freemium plan gives you 30,000 actions per month, and the initial paid plan is in my opinion the most competitive at $80 for 400K actions.
This video by Woopra is a little old, but it still kind of looks like that. Does to job.
So there you go, those are three different free tools to track your user’s behaviour at the user-level as well as at an aggregate level.
Pretty cool, particularly when used in combination with other tools, like a sales CRM which I’m going over next!
5) Selling my leads with Segment and Salesmachine CRM
UPDATE July 2017: Looks like Salesmachine is ending their freemium plan. I started using Drift as a CRM, with Hubspot’s free one as backup.
Part of the idea here is to see the behaviour of the contact before making a sales call (did they click or open that email? did they visit the website recently? Did they recently renew their subscription?)
Salesmachine has a free plan and a direct integration with Segment, and also a direct integration with Stripe which is why I started using it.
I also tried out Freshsales CRM which is awesome, but the web activities section of each contact there doesn’t really show the level of detail that is useful to my particular business (things like showing an email campaign’s numerical ID but not the subject line).
I like Salesmachine’s UI, and how it can plug into Stripe directly – this lets me easily track recurring revenue data and make sales calls much more easily. One thing I can’t work out is how to BCC emails into Salesmachine.
Ok, so that pretty much covers the basics.
By now you’re able to:
- Identify users
- Track who does what
- Report on growth metrics and funnels
- Marketing automation, customised email workflows, etc..
So, with the basics covered, it’s time to add bells and whistles.
6) Adding Hotjar through Google Tag Manager
I like using Hotjar for user research and conversion rate optimisation (it also does Heatmaps, surveys, etc..). I particularly like the user session videos, and the freemium plan is awesome.
Segment and Hotjar now integrate directly, but I still just trigger Hotjar through Google Tag Manager (I can be more selective of when it runs this way).
In short, you go into Google Tag Manager, add a new tag, choose Hotjar, choose a trigger (all pages) and then publish.
This is a long video by Hotjar themselves where they demo every aspect of the software. I don’t have my own heatmaps to share at the moment, but if you’re not familiar with Hotjar, heatmaps and session recordings you should skim through it.
To be honest I do use Hotjar a lot on quick projects, it has a bunch of useful features aimed at CRO work. I think it’s definitely better value than Crazyegg, Clicktale or the other popular heatmapping/CRO tools in the market.
Next up, the live chat feature!
7) Live chatting with users with Segment and Drift (you can integrate Slack)
Drift lets you chat with people that are on your site, and when you combine that with the Segment’s strength in unifying user data (and tracking anonymous visitors) it makes it an interesting tool to explore.
I saw Matty (the student who wanted to set up a full stack) was using Drift on his website Sturent. I thought I’d check it out since they have a native integration in Segment. You can go to his site to see the free version in action.
The result I’m after is that when someone starts the live chat on the website I can know who they are and/or what they have been doing on the site, allowing me to tailor the conversation to the user whether they’re anonymous or identified.
If you’re following the steps and using the plugin it will pretty much work right out of the box.
You can see it in action on the bottom right of this page, or here’s a screenshot in case you’re not seeing it for some reason.
A really good example of what Drift is capable of can be seen through my CV demo, you can use it to greet people by name, target specific pages and user cohorts, it’s pretty great.
Here’s a screenshot of the Drift dialogue targeting identified users who are on a specific page – the free version won’t give you the exact same look or features, but I want to give you an idea of why I upgraded:
A bit of a disclaimer for the paid version: I really wanted the extra capabilities in order to customise the experience of my Live CV Demo (this whole site is my CV). If you go through the demo though, pay particular attention to how Drift behaves. You can even schedule a meeting with me using a chatbot which is hooked into my calendar!
Intercom is a popular tool that can do all of this, and a tool that I love using, but it’s too expensive for the cheap stack we’re building – and there’s no freemium, only a 14 day free trial. UPDATE: Found out that Intercom has an ‘early stage business’ program, have applied to see if I can get it cheaper. And I did get it cheaper!
8) Integrating with payments and accounting (where it begins to $)
I’m using Stripe to process payments on my website, it’s free for the first $50K. I also integrated Ninja Forms and Stripe… so to be honest this part will cost you money (or time if you’re able to work with the Stripe API, but that took ages).
However, the challenge was to have tools that integrate into the payment solution – not to find a free payments solution 😀
You can add Stripe as a ‘source’ to Segment, but that would require the paid plan for Segment.
Luckily, the tools I’m using integrate natively with Stripe! Both Salesmachine and Drip have direct integrations with Stripe, and that makes it all come together very well for me.
I use this website to test out new tools, ideas, approaches etc… Going through it is definitely a good way to try out new tools if you’re working on growth, and to be honest a perfectly working set up for freelancers, contractors or consultants!
9) Tracking my ad conversions and audiences with Segment and Facebook pixel
This is pretty simple. Once you activate the Facebook integration inside the Segment Dashboard, Segment will automatically start sending through events as custom events to Facebook.
If you’d like to use Facebook’s default events, all you need to do is map your custom event name to the default events on Facebook.
For example, in my case, I’d go into Segment and map the Registered event to the CompletedRegistration default Facebook event like so:
I also highly recommend activating/enabling the ‘Advanced Matching’ feature. It will greatly improve the performance of your Fb ads. I’ll write more about that another time.
10) Tracking my Google AdWords conversions and retargeting audiences with Segment
Will update soon
11) Referral system solution
This is a big one! Working on it
It’s possible to start off with a full marketing stack for very little $.
If you have a robust digital product (like the SAAS business I’m working with at the moment) you may have to work together with a developer to marry up the server side tracking to the client side identity – attentive and technically experienced readers probably know how to move forward with that just from reading the first part of this guide.
Some things are not on the list yet, but I’ll update them as I add them. Social media, ads, etc… many of those are addressable by using UTM tag management. Also, between Segment and Tag Manager I can integrate into any major ad networks so that’s not an issue at all.
So, this website is a case in point that it’s not that difficult to start off with a solid marketing stack. I’ve worked with many startups and small businesses that were struggling to take control of marketing tech, and it’s not that hard!
Note: I’ll try to keep this post up to date as things change. Please note I highly recommend adding a data warehouse early on. If you want me to write how to do that, sign up and let me know.
Share this post