How to Create a Referral Program With ManyChat

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?

Nothing.

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

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;

https://m.me/maxvcollenburg?ref=friend--Max+van+Collenburg

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!

(woohoo!)

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

Max this is super awesome! You have created a Viral referral program within ManyChat. That is sooo POWERFUL! For a service like this, you can pay for a software that blasts emails with 25% open rate for 49 USD / month! This is PURE VALUE that you created here!

This was super helpful! I’m trying to test it on our test subscriber. I have given our test subscriber a referral score of 4 and increased it to 5. We and the subscriber should receive an email when they hit a referral score of 5 (in the success workflow), but so far- no email. Is there any way to check that its working without the referrer referring 5 actual friends?

Hey Daisy! Testing can be a bit more difficult because you probably don’t have 5 Facebook accounts, haha.

I think your method of setting it to 4 is a good one. If something went wrong, it’s always smart to just look step by step where it went wrong. Was the subscriber successfully invited with the right custom fields? Did the score reach 5? Was the success flow triggered? Was the email triggered?

Thanks so much Max! I was looking everywhere for exactly this, but couldn’t find anything on youtube or elsewhere. Luckily, I found this article! I can’t believe that all the other “gurus” haven’t figured out this simple, but deadly effective going-viral trick yet by themselves. All the best to you 😃💪

Hi, Max thank you for the great content! I have a question about the viral chat bot. I was following your steps and almost made it but i have a problem. When i invite someone it sends him message that he is invited. It doesn’t send this to me. Where is the problem? How can i fix this? Thank you! 🙂

I haven’t tried it yet, but I think you can do it like this;1) Create a bot field called “Top Referral Score”.2) Every time someone’s referral score is updated you compare it with a condition to the Top Referral Score. 3) If the score is lower than the Top Referral Score you send the “the current top score is…” message and otherwise something like “You’re now the top referral! Awesome!”

I liked this post and your video. I just thought I’d let you know that instead of a ‘+’ sign to separate ‘First Name’ and ‘Last Name’ you could use the URL encode for the space character, ‘ ‘, %20. ‘First Name%20Last Name’ in the payload will be placed in the CUF as ‘First Name Last Name’. Not a big deal if you need to separate them back into ‘First Name’ and ‘Last Name’, but a little bit easier for those times when you don’t.

Hey Max, super well done. I appreciate the level of detail as well. Looking forward to trying to recreate it with integromat in lieu of Zapier. I wonder If there is something unique to Zapier, like a certain trigger event not available to integromat, or if it will be straight forward but I have a compulsion to find out.

I just went through your awesome referral program videos. My only problem is that I am using Integromat not Zapier and can not figure out how to push the new invited friend’s information from manychat to Integromat and back to Manychat.

On the zapier step two.. “adding user by name” when we use the custom field “user custom fields invited by” it does not populate the name of our ref url. We tried sharing with friend to see but having trouble with this part. It does let us use a “name” tag although im not clear if we need the ” user custom fields invited by” tag because nothing seems to populate in this field for a name. What am i missing?

Hey John! True, the share button is not available in Messenger anymore.

Instead, people can now use the little arrow that shows up next to images & cards. When they click that, they can forward that card to someone else. So you could add an image & button to your ManyChat flow, and then tell people to click that arrow.

Hi, Thanks for this. On the very first flow I can’t see how you are sharing the invite. Are you using a share card?

Also you have sent me some images to my personal messenger and in it you have an image with Watch Part 1 as a clickable link underneath. I can share this and the person I shared with can click on the link. How are you doing this? I can get images like this to bring up the share button.