Asyntai AI Chatbot for Vendure
Put an AI assistant on your Vendure storefront. It talks to your shoppers, answers
questions about your products, prices and delivery, and hands you the leads it
collects. It works day and night, in the language each visitor writes in.
The plugin connects your Vendure server to Asyntai, sends
your catalogue to the chatbot, and serves the widget configuration to your
storefront through the Shop API.
What you get
- A settings page in the dashboard. Connect an Asyntai account with one
button, paste an API key, and send your catalogue.
- A Shop API query. Your headless storefront reads
asyntaiWidgetConfig and
loads the chat widget. No hard coded ids in your storefront code.
- Catalogue sync. Every enabled product goes to the Asyntai knowledge base
with its name, description, variants, prices and product link, so the chatbot
answers with real data.
- Live updates. Turn on auto sync and every product you save goes straight to
the chatbot.
Requirements
- Vendure 3.0 or higher
- Node.js 20 or higher
- An Asyntai account. The catalogue sync uses the Asyntai API, which is available
on the Starter plan and higher.
Installation
npm install vendure-plugin-ai-chatbot
Add the plugin to your Vendure config:
import { AsyntaiPlugin } from 'vendure-plugin-ai-chatbot';
export const config: VendureConfig = {
plugins: [
AsyntaiPlugin.init({}),
],
};
Then generate and run a migration, because the plugin adds two tables:
npx vendure migrate
Restart the server. Asyntai AI Chatbot now appears in the dashboard under
Settings.
Setup
- Open Settings → Asyntai AI Chatbot in the dashboard.
- Press Get started. A popup opens on asyntai.com. Sign in, or create a free
account. The widget id is saved for you when the popup closes.
- Fill in the Storefront address, for example
https://shop.example.com.
Product links in the chatbot answers are built from it.
- Paste your API key from the Asyntai dashboard (Settings → API), press
Save key, then Send catalogue.
- Turn on Send a product whenever it changes to keep the chatbot current.
Loading the widget on your storefront
The Shop API exposes one query:
query {
asyntaiWidgetConfig {
siteId
scriptUrl
enabled
}
}
Load the script once the page is ready. A React storefront can do it like this:
useEffect(() => {
if (!config.enabled) return;
const script = document.createElement('script');
script.src = config.scriptUrl;
script.dataset.asyntaiId = config.siteId;
script.defer = true;
document.body.appendChild(script);
return () => script.remove();
}, [config]);
The dashboard also shows a ready <script> tag if you prefer to paste it into
your storefront template.
Plugin options
AsyntaiPlugin.init({
apiUrl: 'https://asyntai.com',
scriptUrl: 'https://asyntai.com/static/js/chat-widget.js',
syncBatchSize: 500,
});
apiUrl | https://asyntai.com | Origin of the Asyntai service. |
scriptUrl | https://asyntai.com/static/js/chat-widget.js | URL of the widget script. |
syncBatchSize | 500 | How many products are read per page during a sync. |
Permissions
Reading the settings needs ReadSettings. Saving them, testing the key and
running a sync need UpdateSettings. The API key is stored on the server and the
Admin API returns a masked preview of it.
Using the service from your own plugin
import { AsyntaiService } from 'vendure-plugin-ai-chatbot';
@Injectable()
export class MyService {
constructor(private asyntaiService: AsyntaiService) {}
async resend(ctx: RequestContext) {
return this.asyntaiService.syncCatalogue(ctx);
}
}
Documentation
Full setup guide: https://asyntai.com/documentation/integrations/vendure/
Support
hello@asyntai.com
Licence
MIT