Woo Basics

This add-on helps in two ways: it recommends products to you directly inside the chatbot, and for your logged-in users it can also retrieve their order information to share with them.

In the settings, just make sure to enable the “Woo Basics” for the specific chatbots you want. And that is it; nothing more to do. Make sure you are using a function-calling-compatible model; otherwise, the other integration types are very limited in what they can do.

Now you can just ask your chatbot about certain products, and it will perform a WordPress search (based directly on your core search functionality, so results may vary) and get a list or a single product to recommend. This will be returned in the form of an element that will get rendered separately (not directly by the chatbot) inside the message.

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

Get the add-on here: AI Engine 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.
  • Function Calling: Describe when the function should be triggered. The AI model will use this description to know when it is a good time to call this function and then send an notification by itself.

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.

In the Tasks Manager, make sure the “Notif Inactivity” task is registered and active. If it’s missing or showing as Error, you can delete it, then go back to the Notifications add-on settings, ensure you’ve selected Inactivity as the trigger type, and then return to the Tasks Manager. It should recreate the task automatically. This task should run every 5 minutes and check for inactive discussions based on the threshold you’ve set in the add-on settings.

You can also open the logs for that task to see how many notifications have been sent.

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. If it’s a paid plugin, you can share a ZIP file and a license with us, and we’ll create a test environment to build a parser for you and other users.

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

Of course, as with any AI Engine feature, this can be done for free without any add-on by building it yourself — all the add-ons rely on AI Engine filters, which you can also use. The add-ons are simply convenient no-code solutions we provide.

Web Search

The AI Engine Web Search can work both with Function Calling and as a RAG. You can use it with all Function Calling–compatible models from OpenAI, Anthropic, and Google, but also as a RAG with any model from any provider. It also offers you the choice to use different web search services, monitor, and reconfigure them.

If you only plan to use web search with an OpenAI model or Assistant, you can use the Tool instead. It’s free, requires no code or configuration, and comes built-in with supported models.

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.