​How to bypass the email template system in SendOwl with one weird trick and send product-specific notification emails in humantongue

Hello, fellow coursecrafter.

Having the absolute necessity to manage two different brands/websites through the same SendOwl account, I've had to spend a couple of days trying to figure this stuff out, so I thought I'd save you the trouble.

Even if you don't have my problem, this tutorial will still be useful to bypass SendOwl's own unreasonably complicated system, and enable you to write 100% custom emails in humantongue. Cheers!


The problem

​The SendOwl email notification system works through templates: you have ONE template for every kind of email your customers may receive at different points: one for when they first purchase, one for when they receive the course as a gift, ​upcoming subscription payments, and so on.


This creates two problems for us.

First: you have to either leave the templates exactly as they are with only minor changes/additions, or learn to use the Liquid template code.

​It looks pretty complicated, and unsurprisingly, the guide they offer on SendOwl is not very helpful. You can pay someone to do it for you, as Shane says, but it may not be as easy as finding someone to do your logo. Besides, I'd rather have nice looking emails NOW than in two years.

​Hello, friend. Can I interest you in a few days of confusing, frustrating and mostly fruitless work trying to make sense of this?

if you have multiple brands/websites to manage, possibly in different languages, one "universal" template will simply not work for you, as some people will have to read this in English, and some in Italian, German or whatever.

There are two possible solutions here.

  1. ​Pay for multiple SendOwl accounts, JUST to be able to send notifications for different ​brands (you would still have to customize the emails though, as they are in English by default).

    Personally, I find this unacceptable, seeing that the software is already pretty expensive for what it does. Basically the only reason it is preferable to other solutions is that they handle the majorly important issue of EU digital tax very well. Still, for that price, I would expect to be able to manage multiple brands from the same account.

    Also, note that separate accounts will most likely create logistical problems, such as separate conflicting invoice sequences.

  2. Use the following system. It's not as "clean" as simply adding a custom email in a text box for every product, like it would ​be in Digital Access Pass and other plugins, but it WILL allow you to

    ​>> have 100% customizable emails for every single product you sell
    ​>> almost completely bypass the Liquid language thing

Here's how you do it.

The whole idea is to exploit a particular piece of Liquid code that allows you to insert product-specific content inside the emails. All you have to do is wrap a custom text for every product you have inside that code, and the customer will only receive the text for the product they bought.

Step 1: find the product ID

To get the product ID check the url when viewing a product in the SendOwl admin area. The URL contains the product ID.

Step 2: here's the code

This is the "if" statement that will allow you to insert product-specific content using the product ID:

{% assign product_ids = order.cart.cart_items | map: 'product' | map: 'id' %}

{% if product_ids contains 1234 %}
Message for ​1234
{% endif %}

{% if product_ids contains 4321 %}
Message for ​4321
{% endif %}

Step 3: wrap your message with the code

This first part only needs to be pasted in once at the top. After that, you just add a wrapped message for every product you sell:

{% assign product_ids = order.cart.cart_items | map: 'product' | map: 'id' %}

{% if product_ids contains [PASTE ID HERE] %}
Hi gorgeous, thank you for your lovely 197 bars of gold!
You will now be able to access "How not to ​get scammed on the internet" from here:


using the email address and password you chose on our lovely registration page.
Happy learning!

Mama Gold
{% endif %}

{% if product_ids contains [PASTE ID HERE] %}
Grazie per aver acquistato "Il buon giorno si vede dal mattino".
Puoi accedere al corso da


usando l'email e la password che hai inserito al momento della registrazione.
Se incontri problemi, non esitare a scrivermi usando la mia pagina dei contatti!

Buon corso,

{% endif %}

There's no need to write a separate message for each product either.

Th​e way I'll do it is actually writing a generic message for all Italian ​products, and another one for all products sold in English. You can do it by simply using the operator "OR" and listing multiple products in the same code snippet. Like this:

{% assign product_ids = order.cart.cart_items | map: 'product' | map: 'id' %}

{% if product_ids contains 36363636 or product_ids contains 75749383 or product_ids contains 78548377 %}
​Here goes ​my message for ​ITALIAN products
{% endif %}

{% if product_ids contains 46465758 or product_ids contains 46475754 or product_ids contains 48586773 %}
​Here goes ​my message for ​ENGLISH products
{% endif %}

Step 4: paste your customized code in SendOwl

This first part only needs to be pasted in once at the top. After that, you just add a wrapped message for each category of products or every single product you want to separate. ​

Liquid mess goes out. Typically enterprising, resourceful, out-of-the-box thinking Italian workaround goes in.

What about the email object?

​The default for the email objects is usually something technical and unfriendly. The order email has ​"Order {{ order.id }}", which results in "Order 367383387". Eeeehh. 

​Fortunately (and surprisingly), the exact same trick can be used in the object field.

​Pasting this lengthy code in the object field:

{% assign product_ids = order.cart.cart_items | map: 'product' | map: 'id' %}

{% if product_ids contains 36363636 or product_ids contains 75749383 or product_ids contains 78548377 %}
Here goes my email object for ITALIAN products
{% endif %}

{% if product_ids contains 46465758 or product_ids contains 46475754 or product_ids contains 48586773 %}
Here goes my email object for ENGLISH products
{% endif %}

...actually results in the appropriate object being sent for each course. ​Wew. We can only hope said field does not have a low character limit.

UPDATE 20/5/19: ...Of course they have. 200 characters to be exact. I've since had to resort to a bilingual fixed object, like "Course access / accesso ai corsi". Sigh.

How to test your emails

​The email template popup has a preview button, which ​can however display only ONE ​version of the many possible outputs.

​If you want to do an actual live test to check if the code ​properly differentiates between different products or groups of products, you will have to issue a free order, which you do by going to the products screen, clicking a product and then "Issue free order" at the bottom of the white box.

This will send an actual email. Paste the code in the email and object field, ​issue a free order for each one of your products, and see what happens.


​Note that issuing a free order will add the contact to the customer list in your email marketing software, but will NOT create a user in Thrive Apprentice. Conversely, adding a user manually in Thrive Apprentice will NOT add the contact to your email list. Sigh. Until the awesome people at Thrive add this functionality, we will have to add manually added students either to our email marketing software or to Apprentice manually. (1/3/19)

Next question.

​So how do you live test the emails that are NOT sent when issuing a free order?

Fortunately, the only email that we are likely to have to customize so long as we sell infoproducts (and not physical products or subscriptions or whatever) is the Transaction receipt.

​The are the only two we are likely to need.

​Not sure about that last one, password reset. So far, I've only got emails from WordPress when resetting a password, but then, I haven't done it by clicking the link in the registration page, and not for an actual paying customer either, so we may need that last one as well. 

The transaction receipt email would be quite a bit more difficult to customize​, as it would require nesting lots of code. The solution there is not as straightforward as with the Order email I'm afraid, BUT this email is also much less of an issue if left as is.

I want my Italian customers to receive a confirmation email in Italian where I welcome and guide them, but the receipt? Eeeh. I think this will do for now, unless you are in the position of having to send actual numbered invoices, but that's a whole ​other can of worms I will leave unopened.

In conclusion

Using the SendOwl/Apprentice setup for multiple brands is clearly a minority problem.

However, even with a single brand, you may need to customize the emails more practically, for example because you work in a language other than English. If this is an issue for you as well, please do bring it up in your Thrive support threads so we can upvote it to an early resolution. And if you have any suggestions or comments, feel free to chime in using the comments below.

Clicca qui per lasciare un commento qui sotto 2 commenti
Stephane di Bari


sono passato da course craft e o trovato il tuo messagio molto interessante

    Lorenzo Durand

    Bene, mi fa piacere! Ci ho perso un po’ di tempo a trovare la soluzione e spero che serva anche ad altri. Spero anche che Thrive trovi una soluzione migliore di Send Owl…


Lascia un Commento