Quick Actions

Quick Actions are buttons that can be added to the chatbot conversation. They are mostly used as conversation starters. You can choose a predefined message when the button is clicked. You can create Quick Actions sets, which are sets of Quick Actions that are each represented as a button.

Snippet Callback

You can run custom code directly on your live website’s frontend when a Quick Action is clicked.

If you were doing this without the Quick Actions add-on, you’d manually declare your shortcut using the “callback”parameter, and pass your JavaScript code as a string — it would execute as soon as the shortcut is triggered.

With the Quick Actions add-on, the proper way is to use Code Engine:

  1. Create a new snippet in Code Engine.
  2. Set its type to Callable, since it will be executed “when called”.
  3. Set the target to JS — this tells Code Engine to declare the function in the browser.
  4. Make sure the function takes no parameters, since none will be passed when the shortcut is clicked.

The snippet will only appear as selectable in the Quick Actions settings if all of the above is configured correctly.

Now we can save our function and set our Quick Action to “Callback” type. In the Callback section, we are able to choose our snippet.

Go in your browser and open the dev tools; this will let you know if your code is running correctly (assuming you have some console logs) or show you if an error has been found during the execution.

Notifications

This is a simple add-on that sends notifications for every conversation that occurs. You can choose from different types of events to trigger the email sending:

Trigger Options

  • Discussion Inactivity:If a conversation hasn’t received a new message after a set amount of time, an email will be sent.
  • Keyword Detection:If a user sends a message that contains a specific keyword, an alert email will be triggered.

Email Customization

You can customize both the subject and body of the notification email using placeholders. These placeholders will automatically be replaced with real values from the conversation:

  • {botId} – Chatbot ID
  • {id} – Conversation ID
  • {created} – Time conversation was started
  • {updated} – Time of the latest message
  • {messages} – Full message thread

If the user is logged in, you can also use:

  • {userId} – WordPress user ID
  • {userEmail} – User’s email
  • {userName} – User’s display name

This makes it easy to stay informed about chatbot activity or escalate when needed — whether you’re monitoring engagement, support leads, or moderation signals. Let me know if you’d like help configuring it!

Troubleshooting

Empty Mails

If the emails are sent correctly but appear empty — with placeholders showing no values — this is happening because the Discussion feature is not enabled. The email relies on data from the saved discussion to populate those placeholders.

You can check this documentation to learn more about enabling and using Discussions.

Not Receiving Mails

If you are using the Notification add-on, it will only work if your server has an SMTP service enabled and can run cron jobs properly.

If you’re not receiving any emails, this could be happening for various reasons, so let’s explore how to troubleshoot the issue.

You can enable Dev Tools in the AI Engine settings, which will allow you to view the logs for add-ons. If there’s a problem, it should be recorded there.

Make sure to Clear the logs so you start from a clean slate.

To manually trigger an email, go to the add-on settings and set the trigger to Keyword. Then set a keyword like “meowapps” and send a message to your chatbot including that keyword — this should artificially trigger an email.

Next, check the logs — they should indicate why the emails aren’t being sent. If the message doesn’t make sense to you, contact support and paste the error message so we can help identify the issue. If you don’t see any error messages, it’s possible the email was actually sent — if not, check your PHP error logs instead of the AI Engine logs to see if there’s a server-related issue.

If emails are being received through keyword triggers, but not with the Inactivity trigger, the issue is likely with your server’s cron system. You can refer to the documentation to learn how to troubleshoot cron-related problems.

You can also force the cron to run by using the “Run Tasks” button to manually execute any pending tasks.

Content Parser

The Content Parser addon works in the background — you don’t need to do anything manually. Its purpose is to help AI Engine handle content it can’t parse by default. For example, when using Content Awareness or syncing embeddings, certain content like ACF fields wouldn’t normally be included. With the Content Parser, that data is retrieved and treated as part of the main content automatically.

If you see only red ❌ icons in the Plugins section, it means none of those plugins were detected as installed on your server. That list shows all the themes and plugins the Content Parser is currently compatible with. If the plugin or theme you’re using isn’t listed there, the parser won’t provide any benefit for it.

If you need support for a new plugin or theme, just let us know — we can add a parser for that specific use case.

Custom Meta-data

If you’re not interested in using a specific plugin’s post-related data, or if you’ve built your own plugin or custom post metadata manually, you can declare key–name pairs manually. Whenever a post is parsed, AI Engine will check if the specified key exists in the post meta, and if it does, it will include that value in the parsed content using the name you’ve registered.

Example

Post IDPost Content
1Hello World!
Post Meta IDPost IDKeyValue
9981total_likes145
9991total_dislikes11

Post Content Without Content Parser:

Hello World!

Post Content With Content Parser:

Hello World!
User positive reviews: 145
User negative reviews: 11

Web Search

OpenAI models are trained to respond that they can’t access live sources (like the internet) by default. So, if your query mentions “web search” or “internet,” you may get such a response. The filters (All Integration Types except Function Calling) add data from the web into the chatbot context, but the AI model itself doesn’t know where this data originates and won’t recognize it as coming from a web search. However, if you’re using a function-calling integration, the AI model will call this function to fetch live data directly.

How does it work?

If you are not using function calling, the system works as a RAG (Retrieval-Augmented Generation). Before it is actually sent, the user’s query will be transformed into a web request and sent through the API you choose in the add-on settings. The data from the web search will then be added to the current context for the ongoing discussion; you can think of it as embeddings in terms of how the data is added.

If you are using function calling, your chatbot can simply be asked to search the web, and it will run this call by itself. This will trigger the add-on web search query, and once it is done, the model will interpret the results.

Difference between Google and Tavily

Using Google will perform a Google search and have the same result (depending on your search engine settings) as if you were doing a manual search on the Google home page. This means you mostly have titles, links, and excerpts. The Google API isn’t a web crawler; you cannot have access to the content inside the searched web items; you cannot ask to have the content of a specific page. The only thing it does is a Google web search. Those results are then converted to text and handed to the model for interpretation.

If you are using Tavily, you will likely get better results. This will perform the same as Google but will also be able to send the content of the searched items, like a web crawler. It will also use AI to provide an already formulated response for the web search based on web results for your model to base its response on. You will also be able to receive image references (that can be displayed in the chatbot as well with Markdown format). This also allows you to do the other way around: send a link to any website in the chatbot, and the link will get crawled, so the chatbot can “visit” and understand any website link that is sent to it. Don’t be shy of using the “Advanced Settings” section where you can enable this behaviors.

How to check if my chatbot uses the web content?

You can go inside the AI Engine settings and enable the Dev Tools to have access to the log console. Whenever the Web Search add-on makes a search, you can see the result in this console. Also, you can check the context added to your chatbot in the discussion and/or the query tab as well.

Make sure that your chatbot’s context length is long enough to include the web search content. Also, if you are using embeddings and a merge integration, ensure that the embeddings are not taking up all of the context already, which might not let the web search content be added.

If it looks like the web search is triggering but the context of your chatbot appears empty or missing, this could be because you don’t have enough space in your context. Make sure your chatbot’s Context Max Length setting is high enough to store this data. If you’re also using embeddings, you need to account for the addition of both. This can be set per chatbot, but there’s also a general setting in the options.

Function Calling & Assistants

For OpenAI Assistants to call functions, the function calls must be registered on the OpenAI servers. If you want to use this integration with an Assistant, make sure you have registered the function; otherwise, it won’t be able to call any functions, and nothing will happen. You can do so by clicking the “Set Function” button.

On your OpenAI playground the function should be registered as such.

If you’re unable to register the function due to some issues, you can manually add the function definition using the + button. Here’s an example:

{
  "name": "mwaiAddonWebSearch",
  "description": "Search the web to retrieve additional/fresh information, answers, real-time data, etc.",
  "strict": false,
  "parameters": {
    "type": "object",
    "properties": {
      "query": {
        "type": "string",
        "description": "The terms to search for."
      }
    },
    "required": [
      "query"
    ]
  }
}

OpenAI Tools

Rather than using the custom AI Engine addon, you can use the directly integrated OpenAI solution, which is the Web Search Tool. If your model is compatible, you can simply select it and it will be used automatically, just like function calling. This approach runs entirely on OpenAI’s side, so you won’t have any control over it — there are no settings to customize or tweak the results. However, it’s a free and straightforward solution.

Of course, this only applies to OpenAI models. If you want web search capabilities for another service or model, you’ll need to either use the AI Engine addon or build your own web search logic if you have the technical expertise.