During one of the I/O 2017 talks, Google announced a bot-building competition, . are apps for Google Assistant, similar to what Skills are for Amazon Alexa. Google Actions on Google Developer Challenge Actions on Google Alexa At the time, I was building Sarah Shopper, . It was for Messenger, but since the typical interaction with the bot is fire-and-forget, making it as an action for Google Assistant seems like a good idea. I can kill two birds with one bot, why not? a price tracker bot for Amazon, IKEA and some other ecommerce I’ve had experience building bots for Messenger and LINE, so I thought it should be a straightforward “build-submit-profit” with slight platform-specific differences. Boy was I wrong. After having had my submissions rejected for a total of 12 times over the course of few weeks, these are my lessons learned: 1. Release early, but not until it’s ready The reason is, the review process can take a week. In comparison, it takes 2–3 days for Messenger and zero days for LINE. literally If you have set a certain launch date (or joining a bot competition), you better release early. Make sure your bot complies to , because if it’s rejected (and it will), you’ll need to wait again. all Actions’ policies “I don’t mind waiting for a week,” you said. Well… 2. Rejection doesn’t tell you the whole picture If you app is rejected, the rejection email won’t list down everything that’s wrong with your app. It will mention some issues, which you will fix, that you will then resubmit, and you will get another rejection. Rinse and repeat. The reviewers probably “stop on first error”, so the best way to avoid this is to comply to the policies to the dot. You don’t want to wait for another week, don’t you? So you’ve made sure everything is followed, and you start porting your Messenger bot, but then you realize that… 3. Bots can only reply Bots on LINE can push, and so does Messenger (with restrictions). On Assistant, there is no way to “return call”—you can only reply to user’s conversation. It must be within few seconds, and you can only send two chat bubbles max. It’s kind of pointless to ask Sarah Shopper to watch certain websites but the users still need to call her from time to time. The only way to give notification is through email, but… 4. Bots are not allowed to ask users their email If you do, your submission will be rejected. To get user’s email, use Google Login through . Ideally, you want to defer login only when you need it (in this case, when you need the email), but… Account Linking 5. At the moment, you can’t login mid-conversation Either you require user to log in up-front (even before saying a word to your bot) or . I don’t have the patience to wait, so I simply require my user to log in up-front. wait until the feature is implemented If only it’s that easy… 6. You need to have your own OAuth2 provider Actions on Google uses OAuth2, and so does Google Login. Let’s connect the two! The login flow would be: User summons your bot (“Talk to Sarah Shopper”) Google Assistant presents login button User logs in, which means clicking the button and choosing which Google Account to use Your bot receives your email Well, not quite. , where you can then tell your users to login to Google. You need to have OAuth2 provider your own So they click login, and click another login, and… done? Well… 7. After you’re logged in, you need to call the bot again You heard it right. I’m probably doing it wrong, but the documentation is not exactly clear. There’s another login mechanism called (it has different name depending on which part of documentation you read) Account Linking, but I haven’t managed to make it work. Seamless/Streamlined/Quick Alright. Account linked, email retrieved. Done? No, I still have my app rejected a few times. Apparently… 8. Bots must never “leave the mic open” All of your bot’s final reply must either end the session (your bot stops and user returns to Assistant) or ask what the user want next. You should also provide suggestion chips (pre-canned replies that user can tap to reply). It’s like chatting with a clingy friend. So you double-checked all conversation branches, and there’s no more open mic. Done? Well, for Sarah Shopper, you need to give her links to products you want her to watch. 9. There’s a limit on how many characters Google Assistant can accept Amazon links can be very long (around 300 chars). A reviewer gave Sarah Shopper such link, and the chat session got abruptly terminated with a vague message, “Sarah Shopper isn’t responding right now. Try again soon.” Obviously there’s nothing I can do here, so I appealed and resubmitted. 10. Don’t get too creative with names In-between submissions, I created another bot that uses . To save money, I use one of my parked domains, . Yup, the word “surprise” with “y”. Don’t ask why, it was 17 years ago(!). SSML syurprise.com Apparently, . I could have appealed, but I’ve lost my patience I just wanted it published asap. I put Syurprise Trivia instead. one-word names are not allowed I set Syurprise to be pronounced “surprise” just like Flickr is pronounced “flicker” (instead of “flick-ar”), but it was rejected because “Your name and pronunciation are too different. Your pronunciation should only differ in basic ways such as spaces, punctuation, and phonetic spelling”. I appealed. For fun, there’s an easter egg in my bot when you ask it how to pronounce its name. 11. Your bot can be published before you know it Both Sarah Shopper and Syurprise Trivia are now published. Are they? The admin console says they’re still Publishing. My wife can summon them from her Pixel phone. Maybe they just want to make me happy after weeks of waiting. Can you summon them? 12. Google does have free, human, support! This last point is actually a praise. When I received the first rejection email, I almost felt hopeless (“I’m going to talk to a wall”), but they do have human support and they’re quite responsive and knowledgable. Thanks for reading! if you recommend this post (by clicking the 👏 button) so other people can find it. I’d really appreciate it P.S. If you’re building a chatbot, please consider joining my mailing list, probotdev.com , where I share on bot-building for various platforms and industries. actionable insights