Facebook Messenger is arguably the most popular messaging app on Earth. With more than 1 billion active users, it is a lucrative platform for bot developers to target (WhatsApp, also owned by Facebook, is another favorite platform, but it doesn’t officially support chatbots yet).
Before you commit yourself to the platform, there are two Messenger Platform limitations that you as a bot developer need to be aware of.
Can’t be too pushy
In “Standard Messaging”—the default mode for all chatbots on Messenger, you can only “push” (to send message that is not a direct reply to user’s) within 24 hours of user’s last message. Past that period, you can only send once more, until user replies. You can apply for “Subscription Messaging”, but it’s another manual application process and only for limited use cases.
Can’t promote your own products to your own customers at all times
Let’s say that you’re a florist and you want to tell everyone who has chat with your bot that you’re doing a sale. Well, you’re not allowed to do that with Subscription Messaging. You can do it with Standard Messaging, but what are the odds that you suddenly have a sale within 24 hours chatting with your user?
Of course, you can do it if you pay (to Facebook)—it’s called “Sponsored Messaging”. This is similar with Facebook Page, where you encourage everyone to Like your Page, in the hope that you can reach them in the news feed, but you must pay to reach them all.
These restrictions are not exactly in the best interest of users—they already know how to block/mute annoying people (or, in this case, bots), but it’s Facebook’s walled garden and you have to play by their rules. What can you do about it?
The only work around I can think of is email, and that’s the technique used by Sarah Shopper, a price tracker bot for Lazada. Unlike in Google Assistant, asking email conversationally in Facebook Messenger is allowed. Your bot should ask for email (or indirectly through login wall), but make sure the timing is right—you wouldn’t give your email to a stranger, right?