skip to Main Content

How to Create a Referral Program With ManyChat

Max van Collenburg By Max van Collenburg

Important update, Feb 2019: the strategies in this article can no longer be used. In February 2019, Facebook added to its policies that it is not allowed to incentivize sharing. This probably means you can’t ask people to share your bot in exchange for a reward, but you could still use this strategy for some kind of referral program without a reward so you can track how many people a subscriber invited.

Important update, Oct 2019: the share button is now deprecated, which means that you can’t add share buttons to your Flows anymore. However, it’s still possible for people to use the native forward button that appears with content that includes an image..

How great would it be if people shared your Messenger Bot with their friends?

Imagine every subscriber invites two friends.

And the friend of the subscriber will also invite two friends.

And the friend of the subscriber’s friends will also invite two friends.

You get the point.

It will start snowballing & you’ll end up with tonsssss of high-quality subscribers.

But how do you get people to share your Messenger Bot?

Well, you could simply ask.

You could create something that asks subscribers if they know a friend that would also be interested in what you’ve to stay.

And definitely, some people will invite their friends.

But probably not a lot, because what’s in it for them?


That’s why I’m convinced you have to reward people for inviting their friends.

So you need a kind of referral program.

All the big boys are already doing this.

Think about Airbnb who gives you €15 credit when someone signs up and books something with your link.

Or Dropbox who gives you 500MB extra space for every friend you invite.

These companies are using these programs because they work really well.

Give people a reward & they’ll be more motivated to share your stuff.

That why in this guide, you’re going to learn how you can create a referral program inside Messenger with ManyChat.

We’re going to reward people that love your content for sharing your Messenger Bot with their friends so you can get that snowball effect.

Let’s dive in!

Who are you going to invite? And when?

This is totally up to you.

But I don’t think you should invite everybody blindly the first day that they join your Messenger Bot to invite their friends.

Make sure they already know you for a while, that they love your content & that you’ve built some trust.

To figure out whole those people are I recommend you to use Lead Scoring to determine which subscribers are highly engaged.

People with a high Lead Score are the people we want to invite their friends.

I’m for example asking people to invite friends when they reach a Lead Score of 25 in ManyChat:

The people that get this invite have been following me for awhile & are highly engaging.

I’ll show you later what that Flow looks like.

Let’s first talk about what kind of reward we could give.

What reward are you going to give?

You’ve to think well about this one.

As we’re mainly focussing on attracting more subscribers in this guide I won’t recommend giving any cash rewards, unless you know what each subscriber is worth to you.

Some studies have also shown that non-cash rewards work better than cash rewards.

That’s why I think you should think about what your subscriber wants.

What is their desired goal?

How could you help them to get a little closer to that goal?

Give that.

You could, for example, give an ebook that you’re usually selling for 12 bucks.

Or upgrading someone’s account like Dropbox does.

Or give access to a secret part of your website with some video’s

(this is what I do)

Or a discount on one of your products.

It can literally be anything.

Think about something your subscriber wants & that’s perceived as valuable.

What does your invite look like?

There is no need to overthink this one.

Keep things simple.

Here is the exact flow that I’m using:

A few things to highlight;

1) I first tell them why I’m asking them: they’re engaging.

2) What they can get: access to a secret part of my website.

3) What I expect from them: share this card or the link with 3 friends.

It’s super simple & works really well.

How do we track & reward subscribers who invited friends?

This is a bit more technical because we have to implement some things & have to use some Zapier wizardry so that we can tell ManyChat which friend was invited by who.

Let’s start with the easy stuff.

Create a new Custom Field by going to Settings » Custom Fields and name it Invited by.

We’re going to use this field to store the full name of the friend who shared the bot.

Then we’re going to create a new Messenger Ref URL by going to Growth tools » New Growth Tool.

Create it, give it a fancy name and go to setup (see image below).

This is where the magic is going to happen.

You should see two fields:

Fill in a nice name in the Custom Ref parameter.

I’m going to use Friend.

And for the payload, you’ve to select the Custom Field we’ve just created: Invited by.

Click save & it should look like this:

This is going to be the base of the link that people can share with their friends.

But we still have to tell ManyChat who shared the link & save to the Custom Field.

ManyChat calls this the Payload.

You can do this by adding two dashes to the end of the Ref URL & then add the full name of the subscriber.

So if I would share the example above it would look like this;

But we obviously don’t want the subscriber to type their name themselves behind the Ref URL.

Not very user-friendly & allows people to make mistakes.

Luckily it’s easy to put this variable in dynamically.

When you create your invitation, you can insert the link & then add the First Name & Last Name variable by clicking the {} icon.

Insert a plus (+) in between the First Name & Last Name.

The result is that the name will be added to the end of the Ref URL dynamically.

When the receiver clicks “Get Started” in the card the full name will be saved into the Custom Field we’ve set to receive the payload; the “Invited by” custom field.

That means we’re already halfway!


We now only have to reward the person who shared the card.

In order to do that we have to create some kind of bridge to pass the info to the right user.

We’re going to do that with some Zapier magic.

As soon as the invited friend enters the Messenger Bot, we trigger a Zap.

Below is the flow I’m using together with the Messenger Ref URL we created earlier.

This is the first flow people go through.

Note that I also created something to prevent people to click the “Get Started” button in the card themselves.

When someone has been asked to invite a friend I give them the [Event] Has been asked to invite a friend tag.

So by checking if someone has this tag, we know if they clicked the link or button themselves.

The friend will go through the No path & we add a tag to trigger the Zap in the next step.

(You can also do this with a Zap event instead of a tag if you like. Same result.)

As you see below, the Zap gets triggered when the [Zap] Invited by a friend tag is added.

Then we want to find the subscriber in Messenger who shared the bot with the friend.

That’s what we created the Invited by custom field for.

(this one will be populated with the name of the person who shared it, do you remember?)

So we’re going to use the value in this custom field to find the user by name.

Add the[Zap] Invited by a friend tag to a subscriber, populate the Invited by custom field with your name & test step 1 and 2 to see if everything is working so far.

A big green bar should show up with Test Succesful! and if you scroll down a bit you also see that we have the User ID of the person we searched for that we can use in step 3 of the Zap.

Now that we’ve found the User ID we can set the subscriber’s Has invited Custom Field with the name of the friend that was successfully invited.

Create the step, use Set Custom Field, go to Edit Template and set User to Use a Custom Value.

Next, we’re going to add the User ID that we’ve found earlier in step 2 of the Zap.

This will tell ManyChat who’s Custom Field we want to set.

Then we’re going to set the Has invited Custom Field with the name of the person who triggered the Zap.

Click the drop-down, click step 1 and select User Name.

(It’s the same name as the previous step because we’re testing here, but this is obviously going to be a different name because someone can’t share the bot with themselves)

The result of this step is that we’ve populated the Has invited Custom Field with the name of the friend the Messenger Bot was successfully shared with.

We can use this in the next step to send the person who invited the friend a nice message to thank them for inviting John Doe.

So in the last step, we’re going to Send Content to User.

Like in the previous step, we’ve to set User to Use a Custom Value and then enter the User ID that we’ve found in step 2 of the Zap.

Content we’ve to set to the flow that we want to send to the subscriber.

Just create a blank new flow, give it a name and set it here.

I called the flow Invite a friend – success.

We’re going to build this flow in the next step.

So this was all the Zapier fun:

Step 1) We triggered the Zap when the [Zap] Invited by a friend was added to the new subscriber that was invited.

Step 2) Then we searched for the subscriber who shared it with this new subscriber.

Step 3) Then we’ve set the Has invited Custom Field with the name of the new subscriber.

Step 4) And now we’re going to send a flow with a success message to the subscriber who got us a new subscriber.

But first, we have to create Referral Score Custom Field to keep track of how many friends the subscriber has invited.

Make sure you’ve set the Type to Number, so we can increase the amount easily.

After you’ve done this we’re going to build the flow that we’ve used in step 4 of the Zap.

Below is the flow that I’m using.

As you see I’m checking with conditions how many friends they’ve already have invited.

When they’ve invited 3 friends I give them access to the reward.

You can obviously change this to another number if you like.

(click the image if it’s a bit small)

I’ll explain to you how the flow works.

We start by creating an Action so we can increase the Referral Score by 1.

Then we check with a condition when the last interaction was. By doing this we make sure they’ve not interacted with the Messenger Bot for at least 10 minutes so we know that they don’t get this success message while they’re still talking to the Messenger Bot.

Then we’re going to say hi & check with conditions how many friends they already invited.

The first time they get “Invite two more to unlock…”.

The second time “Invite one more to unlock…”.

And the third time we’re going to give them the reward. Instead of access to a website you can, of course, give something else what we discussed at the beginning of this guide.

I’ve added a quick reply first because it otherwise could be seen as promotional content if it sends out of the 24-hour window.

That’s it!

We’ve now created an invitation that can be shared with a friend.

When the friend clicks it & subscribes the Invited by custom field is populated with the name of the subscriber who invited him or her.

Then we trigger a Zap & find the subscriber by using the Invited by custom field.

Then we set the Has invited custom field of the inviter to the full name of the friend that has been invited.

And last but not least, we send a message to the inviter to thank them & remind them how many friends they still have to invite for their reward.

Bonus: greeting new subscribers & use the friend’s name

This is totally optional, but I’ve implemented anyway because we already know who invited this new subscriber anyway.

At the beginning of your Welcome Message, you check if the Invited by Custom Field has any value.

If it has any value you can say something like “Awesome that John invited you!” to make it a bit more personal.

I hope this gave you a lot of value and that it’s going to help you to grow your bot list quickly.

It requires some technical implementation.

But you set it up once, and it’s doing the work for you.

Over to you

I’m curious what your thoughts about this.

Comment below & let me know how you’re planning to use this!