Posted on Leave a comment

Leveraging AI for Smarter Spending and Enhanced Customer Satisfaction

360° Customer Service Automation Platform

Understanding AI-Powered Customer Engagement

AI-powered customer engagement refers to the use of artificial intelligence technology to understand, anticipate, and respond to customer needs in real-time. This approach leverages machine learning, natural language processing, and data analytics to enhance interactions at every touchpoint, from personalized recommendations to efficient customer support.

Key Components of an AI-Powered Customer Engagement Strategy

  1. Personalization at Scale: AI algorithms analyze customer data, ranging from past purchases to browsing behavior, to tailor interactions and offers. This means every customer feels valued with content that resonates with their individual preferences, leading to increased loyalty and spending.
  2. Predictive Analytics: By predicting future customer behavior based on historical data, AI helps businesses proactively address customer needs, optimize inventory, and create targeted marketing campaigns that are more likely to convert.
  3. Chatbots and Virtual Assistants:*These tools handle routine inquiries efficiently, enabling customer service teams to focus on more complex issues. AI-powered assistants are available 24/7, providing instant support and ensuring customer satisfaction doesn’t wane due to wait times.
  4. Sentiment Analysis: AI can analyze customer feedback across various platforms to gauge satisfaction levels and identify areas for improvement. This real-time insight allows businesses to make adjustments swiftly, cultivating a responsive and customer-centric brand image.

Maximizing Spend through AI

Investing in AI for customer engagement can have a direct impact on a company’s bottom line. Here’s how:

  • Increased Conversion Rates: Personalized experiences facilitated by AI lead to higher engagement and conversion rates as customers are more likely to purchase when they feel understood and valued.
  • Customer Retention: By predicting when customers might churn and providing timely incentives or interventions, AI helps maintain a loyal customer base that is more profitable over time.
  • Efficient Ad Spend: AI’s predictive capabilities ensure that marketing budgets are allocated to campaigns and channels with the highest return on investment, thereby optimizing ad spend.

Enhancing Customer Satisfaction with AI

AI doesn’t just enhance business spending—it’s also a win for customer satisfaction:

  • Swift Problem Resolution: Quick and accurate customer service powered by AI leaves customers feeling heard and taken care of, directly boosting their satisfaction levels.
  • Constant Availability: AI solutions like chatbots ensure that customers have access to support whenever they need it, eliminating frustration due to time constraints or unavailability.
  • Tailored Experiences: Customers enjoy a sense of exclusivity and recognition when businesses effectively use AI to deliver personalized content and offers.

Implementing Your AI-Powered Customer Engagement Strategy

To harness the full benefits of AI in customer engagement, businesses must:

  • Invest in quality data. AI is only as good as the information it is fed.
  • Choose the right AI tools that align with specific business goals and customer needs.
  • Prioritize transparency and privacy, making sure customers are aware of how their data is used.
  • Continuously train and refine AI models to adapt to evolving customer behaviors and preferences.
  • Integrate AI seamlessly with human-led operations to ensure a holistic and empathetic customer experience.


An AI-powered customer engagement strategy is not just about staying ahead of the technological curve—it’s about optimizing business expenditure while simultaneously enhancing the customer experience. In a market that values personalization, responsiveness, and convenience, AI is the guiding force that can align customer satisfaction with business profitability. By embracing the right AI solutions and keeping customer-centricity at the heart of their digital initiatives, businesses can pave the way for a future where both customer happiness and company success soar to new heights.

Posted on Leave a comment

Stop The Software Waste!

When was the last time you checked your company’s monthly spending on software subscriptions?

One of my fellow founders recently told me a story about two Professional Hubspot accounts ($1,600 per month each) that his company was paying for until someone noticed that employees who should have been using these accounts left the company six months ago. 

According to a recent Forbes article, half of U.S. companies waste over 10% of their software budgets. That sums up to around $10B in 2023 only, and the problem seems to increase, as SaaS spending is growing worldwide. According to Zylo, in 2022, SaaS spending surpassed on-premises software spending for the first time, and by 2024 large organizations will be wasting $17M+ on average on unused or redundant SaaS applications.

This opened a whole new market for technology management companies like Zylo or Oomnitza, but guess what? They are using the same SaaS subscription model! Essentially, you have to pay more to start paying less. 

Looking for change

Let me get back for a moment to the $10B wasted by U.S. companies on SaaS in 2023. 

I am from Ukraine, and my country is at war now. Since the beginning of the war, U.S. and European countries have been constantly sending humanitarian aid to Ukraine, and the total amount between Feb 24th, 2022, and May 31, 2023, is $5B (I’m not counting military support here, just emergency assistance, health care, and refugee programs). Think about it for a moment – all this humanitarian aid could easily be financed by just cutting the software waste by half in the U.S. only!

We’ve gotten so used to services and software sold by subscription (thank you Google, Netflix, Amazon, and others!) that we almost forgot that software can be run privately. And that takes me to another observation that eventually led to a change in Activechat’s business model.

Embracing security and compliance

As personal data protection rules get more and more restrictive, businesses are forced to review their privacy protection measures and data processing policies. And relying on dozens of SaaS subscriptions can easily become a substantial obstacle on the way to proper compliance. Each cloud software provider relies on a different combination of data protection algorithms, third-party services, and analytics tools. Tracking the actual routes that your data travels outside of your company can easily become a challenge of its own. 

When we get to sensitive customer data (like personal information or order details) that can be used in customer support conversations, the situation becomes even more complicated. A lot of conversational AI systems, especially the ones that use generative AI, rely on third-party Large Language Models (LLMs), and their potential security vulnerabilities are a major talking point now. Some companies (Apple or Samsung, for example) are banning the use of third-party generative AI models just because of their potential security and privacy issues.

Switching to on-premise

Back in 2021, when we started shifting Activechat from being an SMB-oriented chatbot platform into a complete conversational AI and customer service tool, we noticed that the majority of our potential customers were already using some sort of custom-built software on their premises. It could be a custom CRM, an ERP, or even a homemade chatbot program, but the fact was there – these guys were open to using software in their private cloud or on-premises, but were extremely cautious about subscribing to yet another SaaS product. For some companies, the absence of an on-premises version of Activechat was an absolute deal-breaker.

The reasons for this were quite different. Some teams mentioned company security policies, others were concerned about growing usage costs or potential data breaks, but the fact was there – they wanted to own the software and data, instead of relying on a subscription service.

As Large Language Models started to conquer the chatbot space, another concern appeared, and it was latency. On average, requests to OpenAI’s API take 3 to 7 seconds each, and the delays can get even larger with advanced models like GPT-4. For some customers this kind of latency was unacceptable, so we decided to dive deeper into the on-premises models and local LLM hosting.

(Image credit: )

This eventually led us to the development of a stand-alone version of Activechat, which can be run in a private cloud or on-premises, within the internal IT infrastructure of any company.

Pros and cons

On-premises and private cloud installations are quite different from “software-as-a-service” (SaaS) subscriptions, so let’s dive deeper into their benefits and limitations. SaaS (Software-as-a-Service) is hosted in the cloud and accessed via the internet, with a subscription-based payment model, while on-premises software is installed locally on an organization’s servers and managed in-house, often involving an upfront investment and greater control over customization and updates. While cloud and SaaS options offer their own set of benefits, on-premises installations provide a compelling case for those seeking greater control, security, and customization over their Conversational AI platform.

  1. Enhanced Data Privacy and Security:

With sensitive customer data being processed and stored during Conversational AI interactions, data security becomes a top concern. On-premises installations allow organizations to keep data within their own servers, reducing the risk of unauthorized access or data breaches common in cloud-based systems. This level of control instills confidence in customers, meeting the strictest data privacy regulations and industry standards.

  1. Full Customization and Flexibility:

Every business has unique requirements when it comes to Conversational AI. On-premises installations offer the freedom to customize the platform to cater precisely to these specific needs. Organizations can modify algorithms, add or remove features, integrate with existing systems seamlessly, and adapt the solution as their requirements evolve, without being limited by a third-party provider’s offerings.

  1. Low Latency and High Performance:

On-premises installations ensure that all AI processing takes place within the organization’s local network. As a result, Conversational AI responses are faster and more reliable, reducing latency and enhancing overall performance. This is especially crucial for businesses that require real-time interactions and smooth user experiences.

  1. Compliance and Regulatory Adherence:

Certain industries, such as finance, healthcare, and government, have strict compliance regulations that govern data handling. On-premises installations give businesses complete control over data compliance measures, ensuring adherence to industry-specific regulations. This control helps build trust among customers and partners.

  1. Cost-Efficient for Long-Term Use:

While cloud and SaaS solutions might appear cost-effective initially, long-term expenses can escalate as usage grows. On-premises installations typically involve a one-time upfront investment with minimal recurring costs, making them a cost-efficient option in the long run, particularly for larger organizations with high usage volumes.

  1. Minimal Downtime and Dependency on External Services:

Cloud and SaaS solutions are vulnerable to internet connectivity issues or downtime experienced by third-party providers. On-premises installations reduce dependency on external services, ensuring continuity in service availability even during internet outages.

There are downsides too, of course. 

First of all, there’s an initial upfront investment into the software license and some infrastructure (private server or cloud). However, modern cloud service providers offer a wide range of options at affordable prices, and the remote installation process that we designed does 90% of the job for you automatically. And in the long run, the operating costs for the private cloud solution will be much cheaper compared to a monthly or annual SaaS subscription.

If you prefer on-premises installation, you will need to integrate Activechat into your existing IT infrastructure, and this may require some technical expertise. Again, we have your back covered with our team of DevOps engineers who can install Activechat almost anywhere! (We’re still working on that Raspberry Pi LLaMa project though 😁) 

Also, for on-premises installations, the performance of your server and the bandwidth of your Internet connection will be key factors that affect the response times and latency. Also, scalability for high usage periods could become an issue too. That’s why we advise using private cloud solutions over on-premises installations for those customers who experience irregularities in the volume of conversations. Private clouds combine the best of both worlds – the security and privacy of on-premises solutions with the scalability of a cloud.  

In conclusion, an on-premises installation for a Conversational AI platform provides businesses with greater control, security, and flexibility, making it an excellent choice for organizations prioritizing data privacy, customization, compliance, and long-term cost efficiency. However, the decision ultimately depends on each business’s unique needs and priorities, and a careful evaluation of the available options is crucial before making a choice. Check the table below for more details. 

Aspect of Conversational AIPros of SaaS SolutionPros of On-Premises (Private Cloud) Solution
Data Security and Control– Convenient, managed by the provider.– Scalability and resource allocation managed by the provider.
– Limited control over data security measures.– Direct oversight of security protocols and compliance, ensuring data integrity.
Customization and Flexibility– Quick deployment and minimal setup required.– Extensive customization and flexibility for tailored solutions.
– Limited customization options, often standardized.– Ability to fine-tune algorithms, features, and integration according to specific needs.
Performance and Latency– Low upfront costs, pay-as-you-go model.– Reduced latency due to localized data processing. Ideal for real-time interactions.
– Potential for performance degradation during peak usage.– Dedicated resources ensure consistent, optimal performance even under heavy workloads.
Cost Structure– Lower upfront investment.– Higher upfront costs for hardware, licenses, and setup.
– Recurring subscription fees might accumulate over time.– Long-term operational costs can be lower due to reduced subscription fees and greater control.
Data Compliance and Ownership– Compliance managed by provider.– Full ownership of data compliance measures, adhering to industry regulations.
– Limited control over data handling practices.– Ensured adherence to data ownership and industry-specific regulations.
Scaling and Resource Allocation– Scalability and resource allocation managed by provider.– Direct control over resource allocation, scaling according to specific needs.
– Limited flexibility in scaling for high-demand periods.– Ability to optimize resources for peak performance and efficient scaling.

License types

We offer two types of licenses for Activechat – Company and Developer. Although the names are pretty self-descriptive, let’s dive into some differences between them. Each license is lifetime, meaning that you can use your copy of the software indefinitely (provided that you comply with the terms of use). 

Company license is tailored for businesses and organizations who plan to use Activechat for their own needs only. It allows a single installation (one instance of the platform, running on your custom domain) and an unlimited number of projects, bots, users, and everything else. 

Every platform feature is included with this type of license, except the billing system. 

For experienced teams, agencies, and software companies we are offering the Developer license. It allows an unlimited number of installations (multiple platform instances running on multiple domains). Also, it includes the billing system which can be connected to your company’s Stripe account to collect monthly payments from your customers.

This type of license also includes the complete TypeScript source code of the platform, and developer documentation, which allows you to add new features to the platform and develop a new version of it on your own. 

For more details, visit our pricing page.


The installation process for the on-premise version of Activechat is simple and straightforward. 

  1. Get and set up your own private cloud according to the instructions that we provide:
  2. Create a private cloud account with one of our technology partners (we advise using Google Cloud)

    – OR –
  3. Create a virtual private cloud on a computer within your company’s network
  4. Download and run the installation package.
  5. Register your license.
  6. Create your first project and invite your team.
  7. [OPTIONAL] Import your existing data into the platform.

Support and updates

As we continue to develop Activechat, new versions of the platform will become available. To streamline the update process, we designed a custom procedure that will safely update your on-premise or local cloud system.

Before the update or new feature is released to the general public, we test it thoroughly on a number of different installations to make sure that it is 100% compatible with the previous version. When we make it available, you will be notified through email and get a notification on the platform. Once you confirm the update, it will be done automatically through the Internet. In case anything goes wrong after the update, you will be able to roll back immediately to the previous version, and that will create a support ticket for our team automatically.  

Sunsetting the cloud service

Starting September 2023, we will be gradually sunsetting our cloud service. If you already have an account with Activechat, we will reach out to you shortly with a discounted offer for the private cloud or on-premises license, and if you decide to switch, we will seamlessly copy all of your existing data into your new setup. 

Upgrading new trial accounts to the “Company” and “Team” plans will be disabled starting Sep 1st, 2023. 

If you have any questions about the change, please send an email to


What is the difference between SaaS (“software-as-a-service”) and on-premise or private cloud software?

SaaS (Software-as-a-Service) is hosted in the cloud and accessed via the internet, with a subscription-based payment model, while on-premise software is installed locally on an organization’s servers, or in a private cloud, often involving an upfront investment for software license and greater control over customization and updates.

In 2023, companies are increasingly turning towards on-premise and private cloud solutions for several reasons, particularly when dealing with conversational data and large language models. These solutions offer enhanced data privacy and security, crucial as data breaches become more sophisticated. On-premise and private cloud deployments grant organizations greater control over their sensitive conversational AI data, addressing concerns related to compliance and data ownership. Moreover, with the exponential growth of large language models, organizations seek to optimize performance and minimize latency, which on-premise installations can provide due to localized processing. This shift reflects a strategic move towards safeguarding data, ensuring compliance, and achieving optimal performance in the context of evolving technology landscapes.

How seamless is the transition from our existing SaaS solution to an on-premise or private cloud setup? What steps are involved in migrating our data and configurations?

If you already have projects running in the Activechat cloud solution, the transition will be 100% seamless. Your data will be copied into your new platform during the setup process.

With other conversational AI platforms, the process may get a bit more complex, involving custom data export and processing. We have successfully imported data from Intercom, Hubspot, Zendesk, Livechat, and other customer service tools. 

Contact us for more details.

How would adopting an on-premise solution impact the performance and latency of our conversational AI platform, especially when dealing with real-time interactions and responsiveness?

The latency will be reduced substantially, and you will notice an improved performance instantly.  Localized data processing reduces the time it takes for data to travel to and from external cloud servers, leading to significantly lower latency.

Why on-premise solution is better for running customized and fine-tuned large language models (LLMs)?

An on-premise solution offers several advantages for running customized and fine-tuned large language models (LLMs):

  • Tailored Customization: The level of control over LLMs that on-premise solutions offer extends to adjusting algorithms, parameters, and fine-tuning models for domain-specific vocabulary and nuances.
  • Reduced Latency: Customized LLMs used for real-time applications benefit from reduced latency in on-premise environments, as data processing takes place locally.
  • Experimentation and Testing: Fine-tuning LLMs involves experimentation and iterative testing. On-premise solutions enable you to conduct these experiments in a controlled environment, facilitating rapid iterations without concerns about external factors.
  • Business Differentiation: Fine-tuned LLMs often serve as a competitive differentiator. With on-premise solutions, you can create and maintain proprietary models that set your business apart from competitors relying on generic cloud-based solutions.

Can you explain how an on-premise solution enhances data security for our conversational AI platform compared to our current SaaS setup?

Switching from a SaaS (Software-as-a-Service) setup to an on-premise solution for your conversational AI platform can significantly enhance data security in several ways:

  • Local Data Storage: With an on-premise solution, all your conversational data is stored within your organization’s own servers, located within your controlled environment. This eliminates the need to transmit sensitive data to external cloud servers, reducing the risk of data exposure during transit.
  • Reduced Attack Surface: On-premise installations often involve fewer points of entry for potential cyberattacks, as the data is not accessible via the public internet. This reduces the attack surface and minimizes the potential vulnerabilities that can be exploited by malicious actors.
  • Physical Access Control: With on-premise solutions, you have direct control over who can access your data physically. You can implement strict access controls and security measures at the physical server locations, further safeguarding against unauthorized access.
  • Customized Security Measures: On-premise setups allow you to implement security measures tailored to your organization’s specific needs. This can include encryption protocols, firewalls, intrusion detection systems, and other advanced security practices that align with your security policies.
  • Regulatory Compliance: For industries with strict data regulations like healthcare, finance, and government, on-premise solutions offer better compliance control. You can design security practices that align with specific regulatory requirements, ensuring your conversational AI platform adheres to necessary data protection standards.
  • Minimized Third-Party Involvement: SaaS solutions often rely on third-party providers for data storage and processing. Shifting to an on-premise solution reduces dependency on external providers, putting you in charge of all aspects of your data security.
  • Isolated Environment: An on-premise solution operates within your organization’s local network, isolated from the broader internet. This isolation can mitigate the risks associated with external cyber threats and attacks targeting cloud-based systems.
  • Immediate Response Control: In the event of a security incident, you have immediate control and the ability to respond without relying on a third-party provider to manage the situation.

By adopting an on-premise solution for your conversational AI platform, you can strengthen data security by exercising greater control over data storage, access, and security measures. This can lead to enhanced protection against data breaches, compliance violations, and other security risks that are inherent in cloud-based SaaS setups.

Could you provide a breakdown of the cost implications associated with switching to an on-premise solution for a conversational AI platform?

It’s important to note that while upfront costs for on-premise solutions tend to be higher due to the initial investment into the software license and setup, long-term operational expenses will be lower than recurring subscription fees associated with SaaS solutions. Over time, the investment in your own infrastructure will pay off, particularly for organizations with significant data processing needs or those seeking to maintain control over data and customization.

We cannot provide exact quotes, since they depend on your setup type (private cloud or on-premises), volume of conversations, and a number of other important factors. 

Please contact us for more detailed information about the operating costs. 

Will you continue to develop Activechat?

Definitely! We’re not shutting down the product, we just change our focus and business model. There’s a huge demand for enterprise conversational AI solutions, and we’ll be focusing on generative AI, privately hosted large language models, and AI-based analytics from now on. 

How do I get new versions when you release updates to the platform?

When new features become available, you will get a notification in the platform and an email. 

If you decide to go on with an update,  an automated process will do a backup of your current setup, and then start to update your existing environment and perform stability tests. If anything goes wrong, you will be rolled back to the most recent version, and a support ticket will be generated automatically.

How do I get technical support?

There are two different support options, one for each license type. The Company license includes e-mail support with a guaranteed response time of 24 hours. The Developer license includes personalized phone support with instant response and a guaranteed resolution time of 3 hours.  

What if anything breaks? There’s no one with any technical background on my team, how do we fix it?

Activechat can run unattended for years. 

For your peace of mind please be aware that in the recent 4 years, the public cloud version of Activechat had an uptime of 99.99% despite some massive hacker attacks and high load times.

In the unlikely case that anything goes wrong with your local copy, though, you should notify us and you will get our full assistance in putting it back to work. 

Can you develop feature “X” for me?

Yes, and actually that’s exactly what we’ve been doing for the majority of our customers. Contact us for more details and for a quote.

Posted on Leave a comment

Intents and Insights (and some small talk too)

Intents training

Flip the switch. Keeping every advanced feature that we already have, Activechat is now one of the easiest-to-use platforms for smart natural language bots.

If you’ve ever been confused by the advanced features of our visual chatbot builder, it’s time to relax. With our recent “Intents and Insights” release, your smart AI agent is ready in minutes and keeps improving forever. Watch the video for a short (10 min) demo or keep reading!

Watch the 10-minute demo of Intents and Insights


The intent is something that your customer wants to achieve. It can be a question, issue description, request, order, or any other action that requires your business to respond. In Activechat, you can define thousands of different intents, and each of them will be performing one of these three actions:

  • Simple response – to provide an instant answer that does not require any further action (like in “What’s your opening times?”)
  • Trigger skill – launch a sophisticated sequence of actions that may include additional questions to customer, accessing your CRM or database, processing data, etc. Fits best for tasks like appointment setting, lead generation, checking order statuses, accessing balance, and so on. 
  • Start live chat – choose this option to handle the conversation to a human agent for complex requests which are difficult to automate.

To define your intents, open “Automation – Intents” in the bot menu. This is where you list phrases that your customers may be using when messaging your business. Once you seed each intent with 5-10 phrases that your customers may use to describe it, the natural language understanding engine will start guessing similar phrases and trigger the intent even if the customer re-phrased it or mistyped.

Intents can be organized into groups and sub-groups. For example, in the banking domain, you may have an “Account actions” group with “Checkings” and “Savings” subgroups for different account types.

👉 Read more about Intents in our manuals.

Small talk

For some bot languages, we’ve introduced a set of “small talk” intents into your agent template. These intents keep the conversation human-like, with phrases like “How are you?”, “Are you a bot?”, “Can you help me?”, “I’m feeling sad”, etc. To edit these intents (or remove completely if you don’t need it), open the “Small talk” category in the intents tree.

Please note that when you start building up your intents, some phrases from the “Small talk” section may be conflicting with phrases that you use in other intents’ definitions. If this happens, consider removing some of your Smalltalk intents.


Intents are good, but how do you know which phrases your customers use? Most conversational designers will be guessing that or digging into individual chat transcripts message by message. We simplify that process by grouping all messages sent by your customers within a specific time period into “topics”. Each of these topics will contain messages that seem similar to our AI. All that’s left to do is tick some checkboxes and add these phrases to the definition of specific intent.

Go to “Automation – Insights” in the bot menu and choose the source of your Insights. It can be either of:

  • Chat history – for conversations that are already happening on your website (if you have our chat widget installed)
  • Zendesk chat transcripts – to import messages from your Zendesk account
  • Text file – to import messages from plain text files (one message per line)
Just tick the boxes to add new phrases to intents

👉 Read more about Insights in our manuals

These tools, combined, can make the process of building your smart AI agent and automating your routine customer care tasks easy as never before. Just flip the switch in the bot settings to change the default NLP engine from “Dialogflow” to “Intents and Insights”.

If you want to use “Intents and Insights” engine in your existing bot, follow these simple steps:

  1. Go to the “default” skill, delete everything except the “CATCH” block and connect NLP block to the CATCH (don’t mind the error message)
  2. Add the “_default_fallback” skill that will be triggered if none of the intents was detected.
  3. Add the “_start_live_chat” skill for human escalation intent.
  4. Go to bot settings and flip NLP engine from Dialogflow to “Intents and Insights”
  5. Run the bot.
  6. Add any other intents you may need…
  7. Enjoy!

Again, these steps are required only if you’re converting an existing bot. When creating new bots from scratch, you’re good to go instantly!

Posted on Leave a comment

GPT-3 for live chat makes life easier for customer service agents

The vision behind Activechat is to make the most advanced AI technology easily available for customer care applications even if your team has zero technical background. This vision empowers our natural-language integrations, sentiment detection, and other advanced features packed into our visual chatbot builder. But there’s more to it, and we’re happy to introduce our recent integration with OpenAI’s beta of their GPT-3 model – GPT-3 for live chat.

GPT-3 is a mega machine learning model, created by OpenAI, and it can write it’s own op-eds, poems, articles, and even working code. As a result of its humongous size (over 175 billion parameters), GPT-3 can do what no other model can do (well): perform specific tasks without any special tuning. You can ask GPT-3 to be a translator, a programmer, a poet, or a famous author, and it can do it with its user (you) providing fewer than 10 training examples. Damn.

Dale Markowitz

Activechat has partnered with OpenAI team to build something that looks like real magic. Once you describe the context of your business in a plain natural language and provide a couple of example questions and answers that your human live chat agents may encounter in their day-to-day conversations with customers, we can use the power of GPT-3 to provide instant hints to your agents to help them answer almost any question that a customer may have.

Let’s look at some real-life examples of this amazing tech.

Bike shop – default settings

Imagine that you’re the owner of a bike shop selling hundreds of bikes from various manufacturers. Your website has a lot of traffic and you introduce live chat to help your customers make their choice and grow your revenue. After a week of accepting incoming chat requests, you suddenly realize that training your agents so that they can really answer this crazy amount of questions from customers-to-be takes tons of time and is quite costly. You have your knowledge base, but most of your agents feel lost when it comes to answering specific questions, and looking for the correct answer often takes quite a lot of time.

Luckily enough, your live chat solution is powered by Activechat, so you can go to “Settings – Integrations – OpenAI” and describe your business case in plain natural language:

This is a conversation between a website visitor and a smart virtual assistant. The conversations are happening across various pages of the website that is selling bicycles, and virtual assistant can answer all kinds of questions about various bike brands and models and help choose the right one according to description made by the visitor.

That’s all you need to seed the OpenAI’s GPT-3 for live chat

Next, you provide answers to three questions that your customers ask most often:

Q: What’s the difference between a carbon and regular bike?
A: The primary difference between carbon and aluminum comes down to weight and ride quality. Carbon frames are usually a bit lighter than aluminum — up to a pound for mountain frames and up to a half-pound on road frames.

Q: How much does a good bike cost?
A: Road bikes range between $350 and $700, Mountain bikes around $1000, Single-speed bike – $400, Beach cruiser $200-300, Recumbent bike $1000-2000, and Kids’ bike (3-8 yrs) will be $140-200.

Q: How do I service my bike?
A: You should regularly service your bike to ensure it is running efficiently and that there are no worn or damaged components. The more you ride the bike the more frequent you should be servicing it, especially after riding in dirt, sand, mud and in the rain.

Guess what? Your training is complete!

Now your agents can pull the “Show AI hints” tab in their live chat interface, and on every new message from a website visitor, there will be 2-3 ready-made answers suggested by the GPT-3 engine.

GPT-3 for live chat provides instant answer suggestions

Clicking any of these hints will copy the answer to the message window, and your agents can send it immediately or edit it, adding specific links to your product pages or other resources. Based on our research, this can reduce the time needed to find and type the answer by 70-80%!

If you’re not satisfied with what you see, just hit the “Refresh” icon and a new set of hints will appear. These hints are powered by all knowledge that the Internet has (GPT-3 model is trained on Common Crawl data, Wikipedia, and multiple other data sources, including a huge amount of books). This makes suggested answers sound human-like and in most cases, they will be relevant, useful, and valuable to your customers.

AI-powered live chat for mobile phones outlet

Another use case from one of our customers – an online shop selling mobile phones. Again, the problem is quite similar to the bike shop above – customers repeatedly ask questions that require a solid chunk of knowledge from customer service agents. Novice agents keep forwarding these questions to more experienced team members, and instead of taking care of really complex queries, these team members keep wasting their time responding to the same questions again and again.

After they introduced GPT-3 for live chat, their seeding settings would look like this:

GPT-3 settings for mobile phones retailer

And here is an example conversation that was made completely by sending GPT-3 answer suggestions, with zero time required from the human agent:

GPT-3-powered live chat conversation

How to use GPT-3 for live chat?

Currently, OpenAI’s GPT-3 is in a public beta. Activechat partnered with OpenAI team to include these amazing features into our live chat platform, and they are available for all our users on Team and Company plans. Here’s how to jump-start your AI-enabled live chat:

  1. Go to “Settings – Integrations – OpenAI” in any of your bots and type your business description in plain natural language.
  2. Add three questions that are most relevant to conversations happening on your website.
  3. Ask your live chat agents to pull the “Show AI hints” tab below the message editing window.
Accessing OpenAI’s GPT-3 settings in Activechat

Yep, it’s that simple! We can’t wait to hear about your use cases, so please feel free to share your stories of GPT-3 making life of your human live chat agents easier.

Posted on

How to survive a $510,000 launch on Appsumo

How to survive a $510,000 launch on Appsumo

It was January 2019, and we’ve been getting ready to launch our product on Appsumo. They are the largest software deals marketplace with over 1.5 million subscribers which I felt made it the perfect place to officially launch a new kind of chatbot platform to the world.

Launching on Appsumo is a lot of work. It took the rest of the team and me almost three months of meetings, online demos, content building, and negotiation to secure a deal date.

Before the official launch, our cost for a single chatbot having up to 500 conversations was $49 per month. We planned to offer Sumo-lings, the collective term for AppSumo’s subscribers, lifetime access to a single bot for the same price. This was an incredible deal that both teams were confident would be a hit, and we launched Activechat into the Appsumo Marketplace.

The Start

The impact was immediate. Before the launch, the record amount of daily visitors to our website was 150. After the launch, it leaped to 1,500 a day, but that extra attention almost led to the end of Activechat. Appsumo’s subscribers are mostly freelance marketers, and small agencies hunting for software tools and services they can re-sell to their customers, and they were not happy with the terms of the deal.

“One bot per coupon? BS, give us more!” was the type of comment on the deal page.

This initial negative feedback reflected low sales of the deal. After discussing with the AppSumo team, we increased the number of bots from 1 per coupon to 10 and upped the limit of monthly conversations from 500 to 5,000.

Sales and comments improved but Sumo-lings continued to demand more. A group of long-term AppSumo customers approached me and suggested I offer unlimited bots, with unlimited conversations for those who bought the maximum of 5 deals for $245. This is where I should have said “No” and stuck with ten bots per coupon, but I was obsessed with making this launch a success and agreed.

Sales sky-rocketed. In two weeks Activechat made it to the #1 product in Appsumo history with over half a million dollars in sales, 6,000 paying users, and over a hundred 5-star reviews for our product. This influx of users put a new level of demand on the tool and the team. The support team worked 24-hour shifts to fix issues and answer questions as soon as they were reported. Customer feedback was healthy and positive. Sumo-lings accepted that Activechat was a new product, and they were happy to wait for new features to be delivered.

The launch provided a massive cash injection into the company, the users were happy, and I was confident that we would build on that success to attract more monthly revenue from regular subscriptions.

Everyone was happy!

The Tool

A quick note about the Activechat product. A long time ago, I started as a digital marketer specializing in chatbots. There are a lot of cool products out there, but they lack something important. Regular chatbots are limited to fixed responses to a user tapping pre-set buttons or typing a few phrases. This is restricting, and it’s why most people do not like chatbots. When two people talk their conversation does not follow a strict path. Sometimes they answer a question with another question, sometimes they change topics mid-sentence or take a while to figure out what they’re trying to say.

I dreamt of a drag and drop tool that would allow me to build chatbots capable of having complex natural language conversations for my clients. I could not find such a tool, so I decided to make one myself, and that’s how began.

Activechat goes far beyond a few menu buttons and simple, canned responses. A well built and trained Activechat bot can hold tens of thousands of real-time, natural conversations with visitors every day without the need for human intervention. 

Combined with the ease of a drag and drop builder, I was looking forward to seeing the different bots built by this new army of Activechat users and a rise in sales.

Life proved me wrong.

The Catch

After the Appsumo launch, we offered fully-featured Activechat subscriptions on a freemium self-service model. We targeted small to medium-sized businesses with the belief they would trial the service and move to a paid subscription for additional bots and conversations. 

Freemium growth was strong, with around 1,000 sign-ups each month for the next six months. Guess what? We did not close a single sale and had zero monthly recurring revenue!


Demand was also high for lifetime deals. Sumo-lings were selling on their unlimited bot accounts for up to $1,500 in some Facebook groups. People obviously wanted Activechat, so why weren’t we selling more regular subscriptions?

And there was another problem that I was really worried about. Despite multiple investor and marketing pitches, I could not explain to myself – what’s the problem that Activechat is solving.   

The Frustration

Our first thought was that our freemium model was too generous. In July 2019, we limited our Free plan to a simple set of features and rebuilt our onboarding series to highlight the benefits of the premium subscription. This change barely moved the needle. We went from zero conversions to slightly over 2%, well below our forecasts.

By the end of 2019, the entire Activechat team felt defeated after almost two years building a powerful product that hardly anyone wanted to buy. 

Is that all we’re good for?

To make matters worse, we were under extreme pressure from Appsumo users who demanded immediate delivery of all the features that we promised. Only a few Sumo-lings were actively selling chatbots to their clients based on the powerful natural language features we were so proud of. The demand was mostly for features already offered by traditional chatbot services, and that was exactly what we did not want to be.

There was a major disconnect between the product we were building and the audience we were targeting, and if we didn’t find it soon, Activechat was going under.

The Change

The big change came in December 2019 when Activechat was accepted into the 3rd batch of Overkill Accelerator. Overkill is a VC fund in Latvia to coach and fund startups. Working with the program and other SaaS founders, it became apparent what we had been doing wrong. 

Activechat creates bots capable of answering questions for entire teams of sales and support staff 24×7, and you really can do things 10x more complex and 10x faster in Activechat than with any other competitor product. Even with our drag and drop builder, it is a significant investment of time to design and build a fully conversational natural language chatbot. That investment of time is overkill for most small to medium businesses who just want to deploy a simple chatbot with more traditional features. 

With help from the accelerator program we’d discovered we were targeting the wrong people. The primary audience for Activechat wasn’t small to medium businesses looking for a DIY chatbot. It was large Enterprises looking for a solution to a specific problem!

Enterprise customers wanted help with their customer service and communication. They wanted to reduce long waiting times for customers, lower the high workload for support teams, speed up internal requests, convert more sales and help leads, clients, and staff gets the answers they needed faster. 

Armed with this knowledge, we rewrote our pitch and approached a large telecom company that immediately switched to us from a competitive product. That relationship further refined our value message and opened doors to other Enterprises.

This new understanding of the specific problem we solve for an Enterprise rebuilt our cold outreach program. We’ve built a new sales team of 2 lead research specialists and one sales development representative who do their best to close demos made by me as founder, and we started the cold outreach that actually brings us demos and starts to fill in our pipeline. This new approach has increased our monthly revenue from $42 to $3,700 per paying user, and that keeps growing with every new deal!

We now have many enterprise deals in the pipeline, and we’ve been approached by a company with 19 million small business customers to discuss reselling our product to them as an add-on service. We know we’ll have to progress those small businesses with more structured hand-holding for them to get the most out of Activechat. We know this because we learned that customers might love you for your product, but they only pay you for solving their problems. 

The lesson learned

Activechat no longer builds products; we solve problems. That’s how we survived the most successful launch ever on Appsumo. 

The Tool (revisited)

Now we’re closing a larger seed round with Overkill (there’s still space in it if you’re an early-stage investor reading this!), but most importantly now we know what kind of problems we’re solving for our customers. We also know who these customers are. 

We help large enterprises improve everything that has to do with customer service and communication. We’re fixing long waiting times, the high workload for support teams, low CSAT levels, low conversions, the complexity of multichannel communication, etc. And we’re targeting large companies in telecom, services, SaaS, and e-commerce – they are aware of these problems, actively seek solutions and are ready to pay high prices once the solution is clear. 

To the powerful chatbot platform that we already had, we’ve added live chat CRM and conversational intelligence AI tools, and now we provide a complete solution for all customer communication needs. We help automate mundane support conversations with chatbots and we help improve the efficiency of more complex conversations carried out by humans. Activechat helps bots and humans work hand in hand for awesome customer service and increased sales.

Better customer service for enterprises
Better customer service for enterprises

We’re still perfecting both our software and our presentation skills, but it’s getting better every day and we start feeling confident that we can compete with big players like Intercom, Drift,, or even Salesforce – we have a vision and a secret sauce that helps us do that.

The Ask

Everyone’s tired of answering the same support questions over and over again. They are tired of confusing IVR menus, long waiting times, and soulless announcements. We know how to make automated conversations bring value and feel human, and we know how to reduce stress and take the load off of human support teams.

If you’d like to see how Activechat can massively reduce the demand on your sales, support, and internal teams while increasing your service to Wow! level then let’s get in touch. 

If you can introduce us to a large enterprise that does a lot of customer communication, we can help them reduce costs and increase the quality of service at the same time. 

If you’re an investor potentially interested in joining our seed round led by Overkill Ventures, send me an email and let’s talk. I’m available at Andrew [🐶] 

Let’s talk?

This article was edited by Stephen Gordon from Email Marketing Superstars

Posted on Leave a comment

How to run multiple lead generation chatbot campaigns with Facebook Ads

Multiple lead generation chatbot campaigns with Facebook Ads

How to customize the lead generation chatbot and run chatbot ad campaigns on Facebook

Reading time: 15 min


So, your basic lead generation chatbot is up and running. Cool. Now, let’s use it to get even more leads with Facebook Ads campaigns.
Chatbots have some important advantages over traditional lead generation tools like website forms or even Facebook Lead forms. Once users click the “Send message” button in your ad, you get them as leads immediately (instead of waiting until they complete the form), and instead of a dull form with multiple questions you can reward them instantly with some content and then collect the information in the conversational form. This alone can dramatically increase your conversion rates!
This manual will walk you through the process of customizing your chatbot flow for multiple lead-generation campaigns and describes the process for setting up Facebook Ad campaigns to get more leads into your bot.

Ready? Let’s go!

Table of contents

How to customize the chatbot for multiple lead gen campaigns

The flow of the basic chatbot for lead generation that we’ve already built is designed to start the lead generation campaign immediately when users start their conversations with a chatbot. Quite often, though, this is not an opportunity – your chatbot will live on your website or Facebook page, and conversations should start with another welcome sequence, which will  introduce the bot and inform the user what it can do. 

So, first of all let’s build a dedicated lead generation skill in your chatbot (and maybe duplicate it for different lead gen campaigns). If you’re not familiar with chatbot skills yet, don’t worry – we have a complete description of chatbot skills in our manuals. 

Move the lead generation flow to a dedicated chatbot skill

Sign in to your chatbot dashboard, go to “Bot builder – Skills” in the menu on the left and choose the “start” skill tab. Zoom the skill out (if necessary) so that every block is visible. Then, hold the “Shift” on your keyboard and drag around all blocks to select every block except the first CATCH block that starts the skill. 

Now, right-click any selected block and choose “Copy to clipboard” from the right-click menu. 

Click the blue plus sign button in the skill tabs area to add new skill to your chatbot. We’ll use this skill for our lead generation sequence, and we’ll be running ad traffic directly to that skill, skipping the welcome message. Give your new skill a name (in this example, I’m using “lead_gen_1”).

Right-click the canvas again, and choose “Paste from clipboard” to paste your lead generation sequence here. Don’t forget to connect the CATCH block that starts that skill with your pasted sequence, and click “RUN” to compile your bot.

To test your new skill, click the “Test your chatbot” button and type “/lead_gen_1” in the conversation. This will trigger the skill, and your lead generation sequence should start. If it does not, most probably you’ve either forgot to click “Run” or didn’t connect the CATCH block with the rest of the sequence. Fix it. 

By the way, if you type “/” sign followed by the event name in your chatbot conversation, it  will trigger that event and start the skill. You can learn more in the “Triggering chatbot skills” article in our manuals.

Customise the “start” skill with a welcome message

Now we need to remove the lead generation blocks from the “start” skill and make this skill more generic, suitable for your Facebook page or website chat widget.

Like many other things in Activechat, this can be done in multiple different ways. 

The easiest option is to choose “Bot builder – Welcome message” in the main menu on the left, and click “Restore skill” button. It will replace the content of your “start” skill with a predefined template that was built to support our “quick and dirty” welcome message from the bot settings. Once you click it, enter your new welcome message and click “Save” and then “Update skill”

You can also use visual flow builder to design more complex welcome sequence – for example, to include a button that will take your customers straight to the lead generation flow. To do so, toggle the “Enable visual builder for this skill” switch in “Bot builder – Welcome message” and open the “start” skill from “Bot builder – Skills”.

Delete default blocks from the “start” skill (remember to keep the leading CATCH block intact!) and use TEXT (or any other blocks) to build your welcome sequence. You can add an “event” type button which will take your customers to the lead generation skill – just use the same event name (“lead_gen_1” in our example) for that button.

What if you have multiple lead generation campaigns? Can this be done in Activechat? Absolutely!

Duplicate the lead gen skill for another campaign

You can have any number of lead generation skills in your chatbot, each customized for specific use case or ad campaign. We’ll look into setting up chatbot ad campaigns on Facebook in a moment, so let’s start with duplicating our lead gen skill and changing its content.

Imagine that you’re planning another lead gen campaign that will not require customers to enter their company name or phone number. Just two simple questions – customer’s name and email, and that’s all. We’ll duplicate our lead gen skill and remove unnecessary parts. 

Open your lead generation skill in the visual builder (“Bot builder – Skills”), right-click the skill tab with your mouse (in our example it’s “lead_gen_1” skill) and choose “Duplicate skill” from the right-click menu. A new skill will appear with a temporary name, and you can right-click it’s tab to edit the name (choose “Edit skill” from the right-click menu). 

IMPORTANT! Do not forget to change the name of the event that will be triggering this skill! If you forget to do this, the same event (“lead_gen_1” in our example) will be triggering both skills simultaneously. This will definitely cause a lot of confusion – messages doubled, different messages displayed at once, etc. So, click the CATCH block at the beginning of your new (duplicated) skill and change event name to “lead_gen_2”, for example (you can choose any other event name if you want).

Now, customize your new flow by removing unnecessary blocks and adding extra messages / questions / etc that you need (see the video above for details). Once you’re done with it, click the “Run” button to deploy your changes to the cloud. 

Now, you will have two independent lead generation skills in your chatbot, each of them triggered by it’s own event. You’re ready to start driving traffic to these skills with ad campaigns!

How to set up and run Facebook Ads with the chatbot

As you may have already noticed, every Activechat bot is built around various skills that it can handle, and in this example we’ve already created two different lead generation skills – “lead_gen_1” and “lead_gen_2”. The best part about Activechat architecture is that any of these skills can be triggered independently for new chatbot users, skipping the welcome message. One of the most frequent use cases for this is running ad campaigns that drive traffic to specific bot skills (lead generation in our example). Once that skill is completed, users can access any other skill in the chatbot according to the conversation flow that you’ve designed. 

As an example, let’s see how you can set up Facebook Ad campaigns to drive traffic to each of your lead generation skills. 

Campaigns that send traffic to Facebook bots are called “Click-to-Messenger” campaigns in Facebook Ads Manager. Their primary goal is to start new conversations with your Facebook Page. When you have your chatbot connected to your Page, these messages can be handled automatically by the bot. 

So, start with opening your Facebook Ads Manager and create new campaign, choosing “Messages” as your marketing objective.

Name your campaign and click “Continue”. Next, at the “Ad set” step, choose “Click to Messenger” as destination, set your ad audience, placements and budget settings exactly as you do with other ad types, and continue to the ad setup.

For those of you who have multiple Pages in their ad accounts, it’s essential to choose the right page in the “Identity” section (it should be the same page that your bot is connected to).

Building your ad creative is similar to any other ad type on Facebook – choose the image or video (or gallery), headline, text, description and CTA. We advise to use “Send message” as CTA to make it clear for your customers what will happen when they click your ad. 

Example below shows a creative for a pizza delivery chatbot, but it can be customized for your business case (particularly, lead generation).

Once the creative is in place, you should continue to Messenger setup. Scroll to that part of the ad setup screen and choose “Create new”. Later, when you have some Messenger templates designed, you will be able to choose one of them by switching to “Use existing” instead.

Choose the “Start conversations” template and click “Edit” to customize. Once you click “Edit”, another window will pop up, pre-populated with some standard questions from Facebook (we’ll get rid of it in a moment).

Messenger template consists of two parts – greeting and customer’s actions. When customers click the CTA button in your ad, Facebook will send them the greeting and expect them to take some action.

First, choose what kind of greeting you would like to use in your click-to-Messenger ad. Your options are “Text only”, “Text and image” and “Text and video”. In the example above we’ve been using “Text and image” to make the customer experience more consistent (using the same image in the template that we used in the ad creative), but the choice is completely yours. In certain situations “Text only” option will work best.

Next, type the greeting text in the box below. You can personalize it with the customer’s first, last or full name. Designing this part is crucial for your conversion rate and ROI since it will define the first impression that the customer gets from your chatbot.

Finally, you need to design certain “actions” that the customer is supposed to take upon seeing the initial “greeting”. Scroll down to the “Customer Actions” section and choose which options you would like to use. It can be either “Buttons” or “Quick replies”. Do not use “Frequently Asked Questions” or “None” – both of it will reduce your conversion rate dramatically since these options are for Pages that do not have a chatbot connected.

Based on our research, the “Quick replies” option works best in terms of interaction quality, but your case can be different. To learn more about differences between buttons and quick replies, check “How to use buttons and quick replies with Facebook Ads” article in our manuals. For now, let’s stick to quick replies.

Usually, you will want just a single quick reply that customers will click to start the conversation with your chatbot. Reducing the choices in your Messenger template will increase conversions. Keep the quick reply text simple and focused on your offer.

Since you already have different chatbot skills in Activechat, you can experiment with multiple quick replies, each triggering different (or even the same) skill in the chatbot. Refer to “How to use buttons and quick replies with Facebook Ads” article and don’t forget to share the results of your experiment with us!

In our simple example, we’re using two quick replies (“Sure!” and “Why not?”) that will trigger the same skill in the chatbot.

Edit quick reply text and click “Connect your bot” to specify the skill that should be triggered once the customer clicks on this reply. Add your skill name (actually, the name of the event that triggers that skill), preceded by the “/” sign. In the example above, we’re using the “fb_ad1” skill, but you should replace it with the name of the actual skill that should be triggered by this ad. Since we’ve named our lead generation skills “lead_gen_1” and “lead_gen_2”, choose one of these names here. 

IMPORTANT! Please note that if you do not specify the event name, the “default” skill will be triggered when the customer clicks that reply. The reason for this is that quick replies are treated as regular messages sent by your customer, and the “default” skill is triggered on every incoming message. The text of the quick reply will be available in the $_last_user_input system attribute. When you specify the event name in the “Connect your bot” box, the “default” skill will not be triggered.

You’re almost there! Give your Messenger template a recognizable name (remember you can re-use it in other ads and campaigns?) and click “Save and Finish”. You can also click “Preview on Messenger” to see how the template will work – Facebook will send the message to your own Messenger account.

Now you can preview your ad on Facebook, and publish it once you’re satisfied with the result. Don’t forget to experiment a lot, since fine-tuning your Messenger template and the conversation flow in your Facebook ads chatbot skill will have a dramatic effect on your conversion rate and ROI.

Repeat the process above for any other lead generation ad campaign that you have in mind, choosing various chatbot skills as Bot Payloads for your buttons and quick replies. 

Quick reminder: do not forget to click “Run” in Activechat bot builder when you copy or create new skills. Until you do this, the skills will not be deployed to your actual chatbot and Facebook ads will fail. Always test your ads by previewing it on Facebook to make sure that the right template is used, and the correct skill is triggered when the user performs an action. 

And, last but not least, keep experimenting and be creative with your conversation flows. As said before, even the most subtle changes can affect your ad performance immensely!

Not sure what's next?

Do you find this useful? Click to share with other bot builders!


© 2018-2020 Activechat, Inc.

existing users

Posted on Leave a comment

Build a chatbot for lead generation in 15 minutes

Build a chatbot for lead generation

and set it live in 15 minutes


Table of content:

Welcome to the world of chatbots! 🤖

Getting started with a technically complex product is always a challenge, so we’ve prepared this short guide to help you get your first chatbot up and running in a very short time. Reading and watching this guide will take approximately 15 minutes, and your bot will start bringing you new leads in less than half an hour after that – even if you’ve never heard about chatbots before!

IMPORTANT: please add to your address book (white-list the address, or mark the email as “Not spam” if it ended in your spam folder) to make sure that you get our emails with manuals and other important info (like lead data and notifications) from Activechat. 

The conversation in this chatbot is quite simple – it asks for the visitor’s name, then asks a couple of business-specific questions (which you will be able to customize) and finally gets visitor’s email and phone number, sends the data to your email and (optionally) adds it to Google Sheets and your CRM. 

For those of you who already have some background with chatbots and software, we’ve included some extra steps (they are marked with “ADVANCED” tag) to show the powers of Activechat, but you can easily skip them until later.

Ready? Let’s go!

Build a bot from template

Start with logging into your chatbot dashboard and click “New bot”. In the templates, choose the “Marketing” tab and click the “Lead generation chatbot”.

Once you do this, you will be taken to the bot settings page where you can choose a name for your new chatbot and upload an avatar (it will be displayed in the chat widget on your website pages).

Now you can click the “Test your chatbot” button at the top to open the stand-alone chat widget (later, at step 3, we’ll embed it into your website). Walk through the conversation as if you were the visitor of your own website, check your mailbox for that “You’ve got new lead” email when you answer bot’s questions, and let’s see how the conversation can be customized to your specific business case.

Customize the conversation

Now let’s customize the conversation so that it fits your actual business use case. You will love the power and flexibility of our visual chatbot builder, once you’re familiar with some basic concepts

Click “Bot builder” in the menu on the left and choose “Skills”. Don’t worry if you have no idea what a “skill” is – you can check our “Building chatbot conversations” guide later.

Find the “start” skill in the tabs on top of the page and you’ll see some basic building blocks that outline the conversation. Click the block on the canvas to edit its content.

Each message sent by the bot comes from a TEXT block, and you can start with adding your business name and chatbot name in the first two blocks.

After these first messages are displayed, the bot starts listening to the user’s input with the LISTEN block. Actual user responses are saved into chatbot attributes and you can use it later in the conversation. We’ll skip the first LISTEN that is asking for user’s name, and move straight to the second one, which is showing three canned responses (called “quick replies”). Your visitor can click one of these responses as an answer to the bot’s question (“What is your primary objective?”), and you can customize both the question itself and the options displayed by the chatbot. 

Uncheck the “Block keyboard input in the chatwidget” to enable free-form input by the user.

If you want to add more questions, just copy and paste some TEXT and LISTEN blocks, and reconnect them in the required sequence by arrows that you can pull from the connection point at the bottom of each block. Change message texts and don’t forget to change attribute names in LISTEN blocks to save user responses to specific attributes.  

There are three questions in this chatbot template: visitor’s objective, visitor’s company name and visitor’s team size. Make sure that these questions are relevant to your use case, customize it as described above and add or remove some questions if you need to. Just keep in mind that chatbot is sending messages with the TEXT block, and gets responses from your visitors with LISTEN block. It means that every question should contain one or more TEXT blocks and a single LISTEN.

Once the chatbot gets responses to each of these questions, it displays a confirmation message with a button that takes your visitor to some specific page on your website. Again, you can customize everything – the text of that message, the name of the button and the link that it contains. 

There’s a LEAD block after the last question that your chatbot asks. This block is sending lead data to your email address (Activechat will use the same address that you use to log in to the platform). Again, you can customize the content of the “Message” field in the editor to include any extra answers that you stored in user attributes when changing the conversation flow. This data will be delivered to your mailbox together with other attributes that chatbot collected from the user. 

Once you’ve made some changes to the conversation, click the “Run” button in the top right corner of the platform to push the new conversation to your chatbot. It takes 4-5 seconds to build, and you can immediately click “Test your chatbot” to go to the chat widget again. Hint: right-click the “Test your chatbot” button and open the link in incognito mode to restart the conversation, or just type “/start” in the existing conversation to start it from scratch. (Advanced – there are multiple ways to trigger chatbot skills in Activechat, and typing “/” followed by the skill name is just one of them).

Connect the bot to your website and/or Facebook page

Cool, your bot is ready now, congrats! Did it take more than 10 minutes to customize? Your lead generation questions can be too complex then, and it makes sense to reconsider your conversation flow. Remember, keeping the conversations as simple as possible is the key to getting more leads and conversions!

Now, let’s connect this chatbot to your website and Facebook page and put it to work.

Facebook Messenger chatbot

To connect the bot to your Facebook page, go to “Settings – Channels” in the main menu on the left, and click the gear icon in the “Facebook” tile. Authenticate with your Facebook account and click “Connect” to the right of the page that you want your bot to be connected to. It will start the conversation that you’ve just built for every new user who is messaging your Page. Check our “Messaging channels – Facebook Messenger” guide for more details.

IMPORTANT: Make sure that you have Admin rights for the Page that you want to connect, and that you give Activechat permissions to access that page when authenticate with Facebook for the first time. Hit “Refresh” in the integration settings to grab new pages from Facebook if you’ve been added as Admin there recently. 

Once your bot is connected to a Facebook Page, you will be able to open conversation with the bot on Facebook Messenger right from the “Test your chatbot” button, clicking the down arrow on the right.

WordPress plugin for website chat widget

If you’re using WordPress, the installation of the chat widget is very easy – just install and activate our WordPress chatbot and live chat plugin and paste your chatbot ID in the settings. Bot ID can be found in the “Settings – General – Advanced” in the main menu. For more details, check our “How to install pixel and website chatbot with WordPress plugin” guide.

Adding website chat widget with code

For those of you who use other web platforms, installation can be done by adding some lines of code to the <BODY> tag of your webpage. It will install the website chat widget and activate the chatbot pixel so that your bot will be able to interact pro-actively with your website visitors (more on this in the next series of this onboarding guide).  

Go to the “Settings” menu and click “Install pixel”. Type in your website domain and click “Validate”, then copy the code and paste it into your web page.

Finally, let’s choose and customize the chat widget for your website. Go to “Settings – General – Chat widget” and choose one of the options – “Activechat widget” or “Facebook messenger”. Each option has its pros and cons. Not sure which one to choose? Check our Website chat widget guide. 

Click the gear icon next to the selected widget to customize its appearance – fonts, colors and messages.

Congratulations! Your brand new lead generation chatbot is now live, connected to your website and to your Facebook page! It will collect lead data for you automatically, 24/7, and you can relax for a while and think about how it can be improved in the future. Opportunities are endless – we’ll be adding more advanced features like keyword detection or pro-active page-specific messages in the next series of this onboarding sequence.

Collect leads into Google Sheet [advanced]

This step (and the next one on CRM integration) is intended for users who already have some basic chatbot knowledge and want to explore advanced Activechat features and integrations. You can skip it if you’re just starting and get back to it later when you get used to our flow builder. 

Getting lead data in your mailbox is nice, but when the number of leads grow it can easily become hard to manage. Let’s connect your chatbot to your Google Sheets account and push lead data into the spreadsheet there. 

First, you need to connect your Google account. Go to “Settings – Integrations” in the main menu and click the gear icon in the “Google” tile. When you do this for the first time, the window will show “It looks like your Google account is not connected” message. Click “Connect” to fix this.

You will be taken to the standard Google authentication process, where you will be able to choose one of your Google accounts to use (if you have multiple). Click “Allow” when asked for permissions to access your Google Drive

Once you do this, a list of your Google Sheets (with their IDs) will be displayed in Activechat. Click “Refresh” to update the list when you add new Sheets in your Google Drive.

Create a new empty spreadsheet in your Google Account to store lead data from your chatbot and click “Refresh” to fetch its name and ID into Activechat. 

Now, open the visual flow builder again (select “Bot Builder – Skills” from the main menu) to choose which spreadsheet to use to store lead data. 

Remember that DATA block at the very beginning of your “start” chatbot skill? We did not mention it in the previous explanation to avoid extra confusion – data processing is one of the advanced features in Activechat. We’re using that block in our template to set the value of $google_sheets attribute. By default, it’s set to “false”, and the chatbot is skipping the integration (you’ll see how it’s made in a moment!). Now, when we have Google account connected, we can set this attribute to “true”.

At the end of our lead-generating conversation flow, there’s a SWITCH block that checks the value of this attribute and proceeds with sending the data to Google Sheets only if the value is set to “true”.

Notice that there are no blocks connected to the “≠ true” condition. It means that when $google_sheets attribute value is not equal to “true”, nothing will be executed. In other case (when $google_sheets is set to “true” by the DATA block at the beginning of the skill), the flow will continue to the next block, which is GS-UPDATE (part of our advanced Google Sheets integration). 

Click the GS-UPDATE block on canvas to open its settings and choose your spreadsheet and worksheet in the block editor.

Notice the use of the “Row” setting and “Insert” trigger – this combination tells Activechat to add new data as row #2 in the spreadsheet, shifting existing rows down. This will keep most recent leads at the top of your spreadsheet. Row #1 is reserved for column names.

Further down in the block settings, there are some assignments – which user attributes to put into certain columns of your spreadsheet. As you see here, we store $user_name attribute to column A, $user_phone to column B, $user_email to column C, etc. All these are attributes that the chatbot obtained from your potential customer in the conversation. 

Now, it’s time to click “Run” to deploy your changes to the chatbot cloud and test your conversation again. Click “Test your chatbot” and type “/start” in the conversation to re-start the bot. Once you answer all the bot’s questions and new lead notification arrives to your mailbox, there should be a new row in the spreadsheet that you’ve just connected.

Notice the use of system attributes ($_year, $_month, $_hour, etc) to store the exact time when specific lead was captured into column G. 

For extra convenience, give your columns specific names to make it easier to understand. Use row #1 for this, since new data will be added by your chatbot from row #2.

Now you can share this spreadsheet with other people on your team and they will be able to use that lead data to grow your revenue!

Send leads to your CRM [advanced]

Whoa, this stuff is really advanced! If you’re not satisfied with leads in the Google spreadsheet, you can go further and integrate your chatbot with a CRM of your choice. We’ll use Zapier for this, but you can do the same with other services like Integromat, or even connect the bot directly to your CRM’s API. 

To use this feature, you will need to create a Zap that will be triggered by a webhook, and set up a JSON block (connect it in the flow instead of the GS-UPDATE – or after it, if you need leads both in Google Sheets and in CRM).

For more details, check our “How to send data to Zapier” how-to. It’s based on a similar lead generation chatbot and explains how to send data to Pipedrive, but you can use it to connect any of dozens of CRMs supported by Zapier.

What’s next?

In this short tutorial we’ve just scratched the surface of the Activechat visual chatbot builder. In the next series we’ll continue to explore more advanced features, such as pro-active chatbot conversations on specific pages of your website, running Facebook Ads to get more traffic to your chatbot, using keywords to answer simple questions, etc. 

For an advanced version of quick-start with Activechat, try our “Getting started” section of the platform manuals.

Don’t forget to join our Facebook community of more than 3,000 chatbot developers. It’s a friendly group that can provide useful advice, answer your questions and share a lot of chatbot knowledge.

Stay tuned to our emails, and enjoy bot-building with Activechat!

Not sure what's next?

Do you find this useful? Click to share with other bot builders!


© 2018-2020 Activechat, Inc.

existing users

Posted on Leave a comment

Building an advanced restaurant delivery chatbot with Google Sheets integration

AC tips - building advanced restaurant chatbot

Building an advanced restaurant delivery chatbot with Google Sheets integration

Highly customizable chatbot in less than 2 hours


  •  Slide Item 4
Device Slider
This complete walk-through will teach you how to use Google Sheets integration in your chatbots. See how easy it is to build highly customizable chatbots for complex use cases with the power of Activechat. 

Table of content

Setting the goals

Let’s start with complete list of features for this simple chatbot. Since it’s not a production-ready solution, but rather an illustration of Google Sheets integration mechanics, there will definitely be some shortcuts. Feel free to use the template for your own design!

We’ll use a simple Google Sheets spreadsheet to store chatbot data. One sheet will contain complete list of products that are available for delivery, and another will hold orders from chatbot users. 

Click to see actual data here 👉 Restaurant delivery chatbot Google Sheets template

You can test the sample bot here 👉 Activechat Pizza Bot v.2

It’s supposed that there will be a bot admin, receiving new delivery orders, sending couriers and marking orders as delivered.

Here is the complete list of features for this simple chatbot:

  • Display a gallery of products from specific category based on certain search criteria
  • Display detailed information about specific products
  • Take delivery orders, send order notifications to admin’s email and store orders in the Google Sheets document
  • Allow users to check the status of their order and leave comments for couriers

Designing chatbot skills

designing chatbot skills

This chatbot is very simple, so it will have just a few simple skills. The complete development process should  take around an hour only.

First, we’ll have the “start” skill to greet the user and offer him/her some options. 

Next, we’ll have a “menu” skill, displaying the gallery of products that fit user’s search criteria. 

To process delivery orders, we’ll need the “order” skill. 

Another skill will be used to check the status of user’s order and add comments to orders that are not yet delivered. Let’s call it “status”.

These skills will be inter-connected with events, and “default” skill will trigger other skills based on the keywords detected in user’s message.


Preparing the data

Google Spreadsheet for restaurant delivery chatbot
Google sheet with restaurant menu for the chatbot (click to enlarge)

Our chatbot will be extremely flexible in terms of product catalogue. We’ll store everything in a Google spreadsheet, one product per row, with columns for:

  • Product ID
  • Product category (used for filtering)
  • Product name
  • Product description
  • Product price
  • Product weight
  • Link to product image
  • Product availability (a simple Yes/No)

Chatbot admin will be able to add more products and product categories easily, and disable product availability with a simple change of “Yes” to “No”  in a spreadsheet cell.

Google sheet with orders from delivery chatbot
Google Sheet with the list of chatbot orders (click to enlarge)

Delivery orders will be stored in another sheet of the same spreadsheet. For each order (one per line) we’ll put there:

  • Messenger ID of chatbot user
  • His (her) name, e-mail and phone number
  • Order date and time
  • Order cost
  • Name of the product ordered
  • Delivery address
  • Order status (“waiting”, “preparing”, “cooking”, “packing”, “delivering”, “done”, edited by admin)
  •  Estimated delivery time (edited by admin)
  • Link to product image (we’ll use this in the next chapter to display the gallery of previous orders for specific user)
  • User’s comments for this order (like, address details, extra add-ons etc).

Starting the conversation

Our “start” skill will be very simple. It will display “Choose something from our menu” message and then it will listen to user’s choice, displaying two quick replies – “pizza” and “salad”. Once user clicks one of these replies (or types anything else), “start” skill will continue to the SEND block, triggering “menu2” skill to display the menu.

"Start" chatbot skill
"Start" chatbot skill

Instead of clicking “pizza” or “salad” quick replies, user can type something else – for example “dessert”. If there’s anything in “desert” category in your Google Sheet, then these products will be displayed. LISTEN block is saving user’s input to the $search bot attribute, which is used in the next skill.


Now comes the fun part. We have product category in the $search attribute, and we want to display a gallery of products from our Google Sheet that relate to that category. Something that would require advanced coding in any other chatbot platform can be done in Activechat with just a couple of blocks. 

ℹ️ When working with dynamic galleries you should keep in mind Facebook’s limitations on gallery size – it’s limited to 10 scrollable cards. To make chatbot conversation flexible and able to display unlimited number of products we’ll use a simple navigation trick. 

GS-GALLERY block will do a search on your Google Sheet and display a gallery of cards that fit the search criteria. Let’s look into this in more detail. 

Dynamic Google Sheets gallery
Dynamic Google Sheets gallery (click to enlarge)

Once you connect your Activechat to your Google Account (go to Settings – Integrations – Google to do this), you can use GS-GALLERY block to build dynamic galleries from any spreadsheet. The block in the example above contains three self-explanatory parts:

  1. Set search criteria. In this example we’ll build the gallery from rows where column B (product category) is equal to $search attribute value (remember – we got this value from the user in our “start” skill?) and column H (product availability) is equal to “Yes” (means, the product is available for delivery).
  2. Build gallery content. We’ll use column C (product title) as Title for each gallery card, column D (product description) as card’s Subtitle and column G (product image) as image URL. 
  3. Add extra attributes to each card. We’ll add value from column E (product price) to “price” gallery attribute and column F (product weight) as “weight” gallery attribute. Later, when user clicks any of the gallery buttons, these values will be available as $_selected_gallery_price and $_selected_gallery_weight bot attributes (note the naming convention – we just add $_selected_gallery_ to the attribute name). 
To each of these cards we’ll add two buttons – one to order the displayed product (it will trigger the “order” skill) and another to display detailed information about the product.
Adding buttons to dynamic Google Sheets galleries
Adding buttons to dynamic Google Sheets galleries (click to enlarge)

These buttons will be added to each card in the gallery. Once the user clicks any of these buttons, chatbot will continue to the connected block, while setting a number of attributes to values defined by the card content:

  • $_selected_gallery_title will contain the “Title” field of the card
  • $_selected_gallery_subtitle will contain the “Subtitle” field
  • $_selected_gallery_image will contain the image link for that card
  • $_selected_gallery_<attribute> will contain any extra card attributes that you added in the “Attributes” part of GS-SEARCH

This gives your chatbot the ability to know which card was clicked, and you can use that data in the conversation that follows.

For example, when user clicks “Details” button, we want to display detailed info about the selected product. Note the use of dynamic gallery attributes in TEXT and IMAGE blocks that are connected to this button:

Using dynamic gallery attributes
Using dynamic gallery attributes (click to enlarge)

TEXT block that displays detailed product description from $_selected_gallery_subtitle contains two buttons. “Show more” will go back to the GS-GALLERY block, displaying the same gallery again, and “New search” will ask user for new search criteria.

Note the use of card attributes to display extra data (not available as card Title or Subtitle) in the detailed description. This allows you to store extra parameters with each gallery card, and these card-specific parameters can be used in the conversation when user clicks the card in the gallery:


Detailed info from card attributes
Detailed info from card attributes and the "New search" button (click to enlarge)

Navigating multiple gallery pages

Let’s see what happens if there’s more than 10 rows in your spreadsheet that fit GS-SEARCH block search criteria. Once this block is executed (and gallery built) you will have two system attributes to check the number of search results:

  • $_gs_total_results will contain total number of spreadsheet rows that fit your search criteria
  • $_gs_total_pages will contain the number of results divided by 10 (efficiently, the number of 10-card galleries required to display all search results)
We can check the value of $_gs_total_pages to see if there’s more than one gallery page and build a simple page navigation mechanics with quick replies:
Chatbot navigation for multiple pages in gallery
Chatbot navigation for multiple pages in gallery (click to enlarge)

What’s going on here? 

Immediately after we display the dynamic gallery with products, we check the value of $_gs_total_pages with SWITCH block. If it’s less than 2 (i.e. we have only one page of search results) we do nothing (notice that there’s no block connected to that exit in SWITCH). But if it’s 2 or more, we proceed to another SWITCH with three different options:

  • if current page number (we store it in $page attribute and set to 1 before displaying the gallery) is 1, we show “Use buttons to navigate” message and display a single quick reply for “Next page”
  • if current page is greater than 1 and less than $_gs_total_pages (i.e. the maximum page number possible for that search), we display two quick replies for navigation – “Previous page” and “Next page”
  • and, finally, if current page is equal to the maximum page number we display just a single quick reply – “Previous page”
Once the user clicks “Previous page” or “Next page” quick reply, we decrease or increase the current value of $page attribute by 1 and go back to GS-GALLERY block to display search results again, starting from the specified page:
Displaying specific page in dynamic gallery
Displaying specific page in dynamic gallery (click to enlarge)

Receiving delivery orders

What happens when chatbot users click the “Order” button in our dynamic gallery or in detailed product view? Let’s see how the bot is sending these orders to the Google spreadsheet. 

Collecting lead data with the chatbot
Collecting lead data with the chatbot (click to enlarge)

This flow is very simple. The bot is asking user a couple of questions like email, phone number and delivery address, and then sends this data to bot admin with the LEAD block and stores it to Google Sheets with GS-UPDATE block. When this is done, the bot displays “You’re all set” confirmation message and two quick replies to check pizzas or salads again.

LEAD block is combining user’s details and order data into a neat email message that is sent automatically to admin’s address.

Sending lead data to bot admin
Sending lead data to bot admin (click to enlarge)

After this, we proceed to GS-UPDATE block to store the order into Google Sheets. 

Storing data into Google Sheets with GS-UPDATE
Storing data into Google Sheets with GS-UPDATE (click to enlarge)

Notice – I’m setting “Insert” parameter to “true” and use “2” as the row number. It will instruct Activechat to add new rows above row 2, so that the latest orders are always on top of our spreadsheet (row 1 is reserved for column headers).

Cell values are obtained from attributes that the chatbot already has:

  • “User ID” (column A) – from $_id system attribute
  • “User name” (column B) – from  $_first_name and $_last_name system attributes
  • “E-mail” and “Phone” (columns C and D) – from lead data that we collected with LISTEN blocks ($user_email and $user_phone)
  •  “Order date” (column E) – from $_year, $_month, $_date system attributes (current date)
  • “Order time” (column F) – from $_hour, $_minute, $_second system attributes (current time)
  • “Order price”, “Order content” (columns G, H) – from $_selected_gallery_price and $_selected_gallery_title attributes that were set automatically when user clicked a button in the dynamic gallery
  • “Delivery address” (column I) – from $user_address attribute collected by LISTEN block 
  • “Order status” (column J) – set by default to “received”. This can be changed later in the Google Sheets document by bot admin and updated statuses will be displayed to the user.
  • “Delivery time” (column K) – set to “estimating..” by the bot. Once admin reviews the order, he/she can change the value in that cell to be displayed to user on every status check.
  • “Image” (column L) – from $_selected_gallery_image attribute set when user clicked a button in the dynamic gallery. This column is not used in the current version of the bot, but we’ll be using it later to display the gallery of previous orders
  • “Comment” – empty, the bot will be updating that column later, in the “status” skill.

Checking order status

Let’s make it possible for our chatbot users to check the current status of their order (remember we have “Status” column in our Google Sheet which is supposed to be updated by bot administrator?). 

The logic will be quite simple: once the user requests the status check, we’ll find a row in the Google Sheet with his (her) Messenger ID in column A and anything except “done” in column J (“Order status”) and display the status. It is supposed that at every moment there can be only one (or none at all) order in any other status – this can cause problems if user is placing multiple orders before admin changes their status to “done”. You can fix it with a simple check before accepting new order – just use a similar GS-SEARCH to check for open orders placed by the same user. Adding this check will be your homework assignment! 😁   

Searching for data in Google Sheets
Searching for data in Google Sheets (click to enlarge)

When this skill is triggered, the bot sends “Hold on, checking my records” message first and then we use GS-SEARCH to find a spreadsheet row where column A (user ID) is equal to the current user’s Messenger ID (it’s available in the $_id system attribute).

After GS-SEARCH is executed, we’ll check the value of $_gs_result system attribute. If it contains “This value was not found” (actually, I’m checking only for “not found”), it means that there are no active orders for that customer, and the bot is sending “It looks like there are no active orders from you currently”.

But if the value of $_gs_result is “Ok” – it means that the row was found, and we can update user with information from that row. So, the bot proceeds to the TEXT block:

Using values from Google Sheets in the TEXT block
Using values from Google Sheets in the TEXT block (click to enlarge)

This block is displaying data from Google Sheets row that the bot have found on the previous step. Notice the use of $_gs_<column> attributes – they are populated automatically after every successful search and contain values from every column in that row. That means that column A value will be available as $_gs_a, column B – as $_gs_b etc.

Adding comments to orders

You may have noticed “Add comment” button in the TEXT block that displays order status. I’ve added it to allow chatbot users to leave comments for their orders (for example, how to get to the building, adding extras to the order or anything else). 

When user clicks that button the bot says ” Sure, just type and send” and LISTENs to user’s input, saving it to the $order_comment attribute. Once the user send his/her comment, the bot proceeds to GS-UPDATE block, adding that comment to column M in our spreadsheet (and overwriting previous value in that column, if any).

Updating column value with GS-UPDATE block
Updating column value with GS-UPDATE block (click to enlarge)

We’re using the value of $_gs_row attribute to specify which row in the spreadsheet should be updated. This attribute always contains row number of the last successful execution of GS-SEARCH block.

Notice that “Insert” option in the GS-UPDATE block editor is set to “false”. This instructs Activechat to update the existing spreadsheet row instead of adding new one. on top When we were accepting orders above, we set this parameter to “true” so that new orders would be piled on top of your spreadsheet.

Triggering skills with keywords

How does the user triggers these skills and how does the bot know which skill to use? 

To make it possible we’ve introduced a very simple keyword detection in the “default” skill. For a quick recap – this skill will be triggered every time when user is sending message to your chatbot and you do not have any LISTEN block actively listening to user’s response (i.e. the bot is in “idle” mode).

Keyword detection with the "default" skill
Keyword detection with the "default" skill (click to enlarge)

We’re using SWITCH block to check the value of $_last_user_input system attribute (it always contains the last message that user sent to the chatbot).

If this attribute contains “pizza” or “salad” or “deliver” (the user asked something like “how to order delivery?” or “I want pizza” etc), the bot will trigger “start” skill again (since the ordering starts in that skill, with “Choose something from our menu” message).

If $_last_user_input contains words like “order” or “where” or “status” (for example, user is asking “Where is my order?” or “What’s my order status?”), the bot will trigger “status” skill (see above).

Please keep in mind that SWITCH block is evaluating conditions top to bottom, in the order they appear in the block editor. So, if you’re checking for “deliver” keyword first (to answer questions like “How do you deliver?”) and then for “delivery” keyword (to answer “Where is my delivery?”) you should be aware that both phrases will trigger the first condition because “delivery” contains “deliver” as sub-string. 


It looks like we’ve managed to build quite complex chatbot which is almost ready to be used in real-life application. Bot admin will be able to add new products and categories easily, adding new rows to Google spreadsheet. Admin will receive orders, update statuses and estimated delivery times and mark orders as “done” on delivery, and chatbot users will be able to browse products, make orders, check order statuses and leave comments.

It took us less than an hour to build that chatbot, and it’s just 5 skills with 58 blocks in total. Imagine doing something similar with Manychat or Chatfuel! 

You can test the sample bot here 👉 Activechat Pizza Bot v.2

You can experiment, customize and improve that bot from the template – look for “Activechat Pizza Bot v.2” in our chatbot templates

Chatbot templates in Activechat
Chatbot templates in Activechat

There are many improvements to make, of course. Throwing in a couple of extra blocks will add the ability to send instant in-Messenger notifications to bot admins or arrange direct communication between customers and delivery couriers right in the chatbot – we’ll be covering these and many other cool features of Activechat in the next walk-through sessions like this!

Did you like it? Just let me know in the comments on our Facebook community

Did you find this useful? Please share with other bot builders!


© 2018-2020 Activechat, Inc.

existing users

Posted on Leave a comment

Chatbot buttons vs quick replies

Chatbot buttons vs quick replies

Two basic approaches to chatbot navigation


A lot of people seem to be confused by two chatbot interaction elements that are available on every messaging platform – buttons vs quick replies. 
buttons vs quick replies
Example of e-commerce chatbot conversation using both buttons and quick replies

Chatbot navigation

Majority of chatbots built with modern low-code chatbot platforms are based on decision trees. Natural language understanding chatbots are still quite difficult to build and train.

Decision tree chatbots are using two basic types of interactive elements – buttons and quick replies – to navigate through various bot features and conversation parts.

Let’s look into details to see how these elements can be used!


Chatbot buttons

On most messengers (like Facebook Messenger or Telegram) buttons can be attached to specific messages that the chatbot is sending to users – texts, images and galleries (carousels). In the example above there are three buttons attached to “Pick an option below to get going” message in the CNN chatbot

Buttons are displayed as a small menu and are usually limited to 3 options. Maximum length of the button name (the text that is displayed on the button) is 20 characters on Facebook Messenger. 

A lot of chatbot designers are adding smileys to button names to make it more visually appealing and easy to understand.

Depending on the chatbot design, buttons can trigger specific parts in the chatbot flow (send events or postbacks), open website pages or initiate phone calls on mobile devices. 


Quick replies

Quick replies (or chips as Google calls it) are pre-defined responses that chatbots offer to their users. They are displayed as bubbles next to the message typing area, and users can click one of the replies instead of typing it in. 

Some messenger platforms like Facebook Messenger or Telegram allow bots to pre-populate quick replies with user-specific data like email or phone number, so that user can click this reply and share the information with the chatbot immediately, no need to type it manually. 

You can use up to 13 quick replies on Facebook Messenger, but usually it makes sense to limit the number to 3-5. It’s plain common sense and good conversational design – trying to keep things as simple as possible to make interaction with your chatbot easy.


Using buttons and quick replies

Example of buttons in the chatbot
Example of chatbot buttons (click to enlarge)

On Activechat visual chatbot builder you can add buttons to blocks from TALK category (TEXT, IMAGE and GALLERY) and also to e-commerce blocks (automated category and product galleries).

Example above shows a simple pizza chatbot that greets the user and asks “What would you like to order?”, offering two connection buttons for pizzas or salads. When the user clicks one of these buttons, the flow will continue from the block that is connected to it.

Please note that there’s no LISTEN block connected to the TEXT block with buttons. It means that if user types anything instead of clicking one of these buttons, the chatbot’s “default” skill will be triggered – use some type of keyword detection there to be able to respond to that message.

There are four common button types:

  • Connection button
  • Event button
  • URL button
  • Phone call button

Connection and event buttons are used to branch the conversation according to user’s choice. URL button will open a webview with the web page at the specified address, and phone call button will initiate a phone call where it’s supported (mostly on mobile devices).  

Example use of quick replies in the chatbot
Example of chatbot quick replies (click to enlarge)

This example shows how you can achieve exactly the same functionality with quick replies instead of buttons. Please note that now we’re using LISTEN block. It means that after “What would you like to order?” message your chatbot will be actively listening to user’s response, showing two quick reply bubbles for pre-defined options. 

If user clicks one of these quick replies (or exactly types the text on the quick reply, i.e. “pizza” or “salad”), the bot will save the response text to $choice attribute (as indicated in the LISTEN block editor) and the flow will continue to the block that is connected to that reply. If user types anything else, the flow will continue from the bottom of LISTEN block. We’ve connected another message there, saying “Please make a choice!” and looping back to the same LISTEN block, displaying the same two quick replies.

Feel free to reproduce these skills in your own Messenger chatbot and check how it works.


Connections vs event buttons

Connection buttons are used… well, to connect other blocks. It’s ok to do so in simple chatbot skills, where different conversation branches can be implemented in just a couple of extra blocks.

If your button should start a complex conversation, it makes sense to implement it as a separate skill, triggered by event, and use event button to start it.  

Example of event (postback) buttons
Example of event (postback) buttons (click to enlarge)

In the example above we’re using two event buttons, one to trigger “manuals” event (and thus start a “/manuals” skill) and another to trigger “faq” event. 

When using this type of buttons, you should have CATCH block somewhere in one of your chatbot skills, listening to these events.

Common mistakes

Good conversational design is not easy, and sometimes chatbot developers mess up with buttons and quick replies in the variety of ways. Let’s look into most common mistakes (try to avoid it!)


1. Nothing is connected to the button

Example of missing button connection

Guess why connection button is marked with yellow in the example above? It’s a warning that there are no blocks connected to that button, so if your chatbot user clicks it in the conversation nothing will happen.  


2. No matching CATCH block for event button

event buttons
Example of missing button connection

If you’re using “event” type buttons, make sure that somewhere in your chatbot there is a CATCH block listening to that event. Otherwise nothing will happen when user clicks on these buttons.


Buttons and quick replies use cases

To make a long story short, here are some recommendations on what type of interaction to use in various situations:

  • If you need to save user’s choice as bot attribute, use LISTEN block and quick replies
  • If your conversation is simple, use connection type buttons
  • If you need to trigger complex bot skills, use event type buttons
  • If you need to get user’s email or phone number, quick replies are the only option


Do you find this useful? Click to share with other bot builders!


© 2018-2020 Activechat, Inc.

existing users

Posted on

Chatfuel Or Manychat alternative?

Ok, yes, this is a promo. But in the last weeks, I’ve been talking to lots of our users and many of them asked for an explanation of our Bot Architect core features and best practices for designing bots that bring value. So, here’s a brief update on what we already have in the platform and what we plan to build soon. 

Visual chatbot builder

This is something that Manychat did much better than Chatfuel. But then we took it even further with more block types and the concept of bot skills. Bot events let you pass control between various skills effortlessly, providing great user experience.

Dialogflow direct integration

No need to use JSON APIs or external services like Janis. We connect your existing Dialogflow agent through developer token and you can use your intents to drive bot skills and trigger blocks in visual flow builder.

E-commerce chatbots

Some of you have already used our Integrator tool to get product galleries and category listings from your WooCommerce store in Chatfuel bots. In Bot Architect you can have those as native building blocks for your conversation, making bot ordering and e-commerce even better.Learn more

Bot variables and data

Do extensive math and take decisions based on your calculations. Fetch data from external integrations through JSON API. We’re still working on adding more powerful data processing (like introducing arrays and objects), but you already can do quite a lot!Learn more

Timers and delays

Both Chatfuel and Manychat are great in sending drip campaigns, but building these campaigns for the right conversational interaction can be an issue. We solve this with timers – now any skill can be triggered with a set delay (or even at a set date/time) and have any complexity that you need.Learn more

More chatbot features

We’ve just started our journey with Bot Architect, and we do our best to build a great tool for every chatbot developer. We’re constantly adding nice features and new integrations, and we have a great support team to help you with onboarding and getting most from your experience!

Visual Chatbot Builder

Stop building bots. Build conversations instead! It’s really easy. Pull the block from the toolbar, then pull a couple more, connect them with lines and season with some data processing and integrations – Voila! Your bot is ready and you can test it immediately. But when your users start to communicate, things tend to get a bit more complicated. “Hey, there’s a dead-end here, we need to add some quick replies”, “Look, these two intents can get mixed”, “Ok, we need one more button to make a reservation” – your bot can quickly turn into something unmanageable, and your overall business objectives fade behind blocks, buttons, replies, and integrations. We’ve decided to put the conversational design on top, so building bots in Architect is really easy and straightforward. Instead of managing the bot as a whole, you can teach him some small skills – short conversation flows that fulfill a specific action or provide a user with some specific value. These flows are then triggered by events – and you can use almost anything as an event. Some examples are: (1) user pressed a button – that’s an event, (2) user said something that was recognized as natural language intent – that’s an event too, (3) timer was triggered – event again, and so on and so forth. Here’s an example of a skill that is handling subscriptions and unsubscriptions to bot updates.

The conversation builder is based on the concept of “events” that drive bot interaction with end-users.

Simple skill to control bot subscriptions and unsubscribes.

Note how “Subscribe me!” and “Unsubscribe!” buttons are sending events that are being caught by CATCH blocks to trigger certain mini-flows. Good news is that once you’ve defined flow for a certain event, you can trigger it from anywhere in the bot by sending this event with a SEND block – for example, if you have “Unsubscribe” button hidden deep in another skill or connected to NLP intent (more on that in a moment). Using the flow builder is quite straightforward, and we have a short description of block types for your reference, feel free to check it.

Dialogflow direct integration

Understand natural language input from bot usersWe started as a service to help integrate Chatfuel to Dialogflow for better natural language understanding. Lots of people are using it now, and in Bot Architect we moved that integration to the next level. Now you can have your Dialogflow agent connected to your bot just by pasting developer access token, and all your intents will be immediately available in your bot as events, and entities and contexts – as variables. Even more – we’ll create skills for each of your intents, and all you’ll have to do is add some content to that skills to make your Dialogflow bot shine. There are two approaches to chatbot development. One is decision tree based – this is used by Chatfuel, Manychat and other similar platforms where users can control conversation by pressing buttons and providing quick replies. Another is free-form natural language interaction and is used by platforms like Dialogflow, etc. We managed to combine best of both worlds, so that in Activechat Bot Architect you can easily sketch decision-based conversation flow and then enrich it with natural language intents. The reason for this is that we firmly believe in the future of natural language interaction between computers and humans, and we also realize how difficult can complex bot design in Dialogflow be. Integrations, timed events and data processing are pain in the neck in Dialogflow, and hopefully we can make developer’s life a bit more easy here. is great. But we are better in contexts and entities, and you don’t have to pay extra!

Dialogflow intents as events in Bot Architect

All you have to do to extract intents from user’s freeform input is pass that input to NLP block. Here’s a simple example with “default” event that is triggered every time your user sends message to the bot. $_last_user_input is a system variable, storing last message received from your user.

Sending user input to Dialogflow to extract intents. Note incoming contexts: “ordering” and “usa”.

Working with entities is easy too – when any of your Dialogflow NLP intents triggers an event inside your bot, these intent’s entities are being passed as bot variables $_nlp_entity_<name> and you can use them in your bot logic. Need contexts? Sure – just check $_nlp_contexts for the list of outgoing contexts from Dialogflow intent or set incoming contexts in NLP block settings. Read more about NLP in Activechat.

Native e-commerce chatbots integration

Sell products and services directly in the botHalf of requests that we have for chatbot development is for e-commerce shops. If you are using Chatfuel or Manychat, adding product gallery requires lots of manual work and the updates are hard to implement. Searching through your products also requires manual integration and extensive use of JSON API – but now it’s in the past due to direct e-commerce integration that you can have in our Bot Architect. Currently we support WooCommerce CMS, and 3Dcart and Shopify are on the way. We have two two types of blocks for e-commerce – CATEGORIES and PRODUCTS. These are automatically populated with content from your CMS and do not require manual updates or complex searches. CATEGORIES block will display a list of categories (or sub-categories) in your shop as native Messenger gallery, and PRODUCTS will do the same to products in a certain category. 

Now you can have product gallery or build categories tree in a click of a mouse!

E-commerce blocks display products and categories from your online store

You can customize these blocks with buttons that will trigger other blocks or skills. For example, “Order now” button can lead to a “Add to cart” skill, and “Show similar” will trigger a skill showing more products that fit certain search criteria. Here’s how it will look in your chatbot conversation – and you can design a great chatbot shopping experience in just a couple of minutes!

Your complete online shop in a chatbot

Working with data and variables

Process user’s input and make decisionsAny chatbot is only as good as the value that it’s providing to the end users. And to provide that value it’s often necessary to do some numbers crunching or solve some other programming tasks. We simplify that by providing visual tools for data processing and manipulating. Currently we support only simple variables, and advanced data processing with arrays and objects is already in the works. Need more processing power? Just use our external JSON API tool and integrate with your own script running at your premises. You can store almost any data that you obtain from chatbot user in bot variables. These variables can be used to manipulate that data (for example, do some maths) or make decisions in the conversation flow. Some examples are below.

Complex programming made simple and visual – with no developer background required

Divide $number by 3 and check ranges
Check if user input contains “yes” or “no”

System variables are used to access certain data about your bot users or events, and here are some of them. You can find complete list in our manuals.

$_first_name – user’s first name

$_last_name – user’s last name

$_locale – user’s locale

$_timezone – user’s timezone

$_random – random value (0..1)

$_year – current year

$_month – current month (1..12)

$_date – current date (1..31)

$_day – current day (1..7)JSON API plugin can be used to fetch data from external sources. Just put external script address and parameters, and get values that the script sends you back in bot variables. 

Call external JSON APIs when necessary

Timers and delays

Send drip campaigns or just ping silent usersWorst thing that can happen to a chatbot is stalled conversation. Bots that bring value™ should be engaging and entertaining, and if the user is stuck somewhere in the flow there should be a way to re-engage her – that’s good both for the user and for your business goals. Sending mass broadcasts manually is time-consuming and can look spammy, but having a pre-designed schedule for bot interactions is a great tool to build long-term relationship with your customer. In Activechat’s Bot Architect you have three types of TIMER blocks. One is for ever-green timers that send events at regular intervals (be it minutes, days or months). You can CATCH these events to trigger certain skills within your bot, feeding fresh content to your users. Another is “WAIT FOR” block – it’s used to pause a flow for a certain amount of time, for example to check if the user has paid for her order in E-commerce shop. And third block is “WAIT UNTIL” – it can be used to wait until certain time or date. This one is great for time-bound announcements, product updates etc.

Remind your users to complete their purchases or drip content to engage and entertain them

Simple skill to check for order payment after 3 hours
Example of drip campaign that will be sent every 2 days with an option to stop it

Don’t forget to pay attention to conversational design – having powerful instruments like the ones that you have in Activechat Bot Architect can lead to unnecessary conflicts. Imagine two timers working independently, for example, or a single event being CAUGHT in multiple skills.

Do you want more?

We have some nice extras

Multiple communication channels

Currently Bot Architect supports Facebook Messenger, Telegram and Twilio (SMS) integrations. Viber, WhatsApp and Slack are in the works, and we’ll be adding Amazon Alexa, Google Home, Intercom and site chat widget soon!  

Mass broadcasts

Schedule a mass broadcast and trigger specific bot skill at a set time or immediately for all users in your chatbot.  

Courtesy waiting time

Sometimes bot users send message to your bot and then immediately start typing again. For example:

Bot: Hi, how can I help you?
User: Hi! Are you online?
User: I’d like to make a reservation…
Bot: There is no help for “Are you online”, sorry – FAIL!

In Bot Architect you can set delay time in LISTEN block, and your bot will wait for a couple of seconds to check if the user starts typing again. If she does – the bot will wait until another message is received and concatenate all user input in one long message to process.