How I built a free newsletter referral system for EmailOctopus in an hour (Part II)

Stan Choi
4 min readJan 14, 2021

Continuing from my previous post (https://shchoi22.medium.com/how-i-built-a-free-newsletter-referral-system-for-emailoctopus-in-an-hour-99e885219d1c) on building a basic referral program for EmailOctopus, there are few basic features that SaaS apps like Sparkloop and Viral Loops offer that really help increase subscribers to share using the referral program.

The basic features are:

  1. Current referral count with “you have X to go” message in every email you send.
  2. Basic analytics on how many of your new subscribers are referrals

Implementing current referral count in emails

Having subscriber’s current referral count and how many more referrals they need for their next reward threshold in the emails they receive can be a great reminder for subscribers to share with their friends and family every time they receive an email from you. Since we have the referral count for every subscriber (from last post), we need to implement conditional merge tag feature EmailOctopus offer to include this in the emails you send.

According to EmailOctopus, conditional merge tags are offered as a beta feature and reminds users to test first before sending emails out (https://help.emailoctopus.com/article/74-customisation-cheat-sheet):

To add referred count to your emails, add the following HTML snippet to your templates:

<p>
You have {{Referred}} referrals.
{% if Referred < 3 %}
You have {{ 3 - Referred}} more to go!
{% else %}
You are now on Weekly Summary Newsletter mailing list!
{% endif %}
</p>

Quick explanation of what each merge tag does:

  1. {{Referred}} => merges “Referred” count value
  2. {% if Referred < 3 %} => starts section to merge if “Referred” count value is less than 3 (threshold for referral program reward)
  3. {{ 3 — Referred}} => merges the result of arithmetic operation 3 minus “Referred” count value. This is not explicitly covered on EmailOctopus docs so use it with caution. For example, if subscriber’s “Referred” count value is 2, value of 1 will be merged.
  4. {% else %} => starts section to merge if “Referred” count value is greater or equal to 3.
  5. {% endif %} => ends conditional merge tag section.

What it looks like on our newsletter:

Basic analytics of referral program

To test whether a certain copy promoting your referral program works or not, we needed a way to flag subscribers as referral. Using our serverless function to do this had myriad of issues like race conditions. Instead of relying on our custom solution, we decided to customize EmailOctopus’ embedded form and its post form data with the referrer id.

As you can see below, you can add “Referred By” field as a custom field that users can fill out and the “field_id” that EO uses to recognize the field during form submit:

Instead of making this field visible for the users to fill out, what you can do is update the field with CSS to hide it and use Javascript to map referrer Id from URL as value of the hidden input element. For example:

After changes are live, you’ll be able to see referrer id in “Referred By” field for subscribers that are referrals:

Now that you have Using EmailOctopus’ segments feature, you can do a rough analysis on your new subscribers by:

  1. Filter for subscribers added before and after a specific day. Note new subscriber count per day.

2. Add another filter for “Referred By” is not blank:

3. Calculate % referral: 4/50 = 8.0%

Let me know if you have any questions down below and if you are interested in my newsletter or just want to show me some ❤️, you can subscribe here:

--

--

Stan Choi

Cheapskate maker, stitching free products and services together. Digital settler. Engineer @ Rentapplication