A self-learning AI chatbot that reads your product catalog, tracks orders, and handles customer queries around the clock — across your website, WhatsApp, and Telegram. And it costs nothing.
Running a WooCommerce store means drowning in repetitive customer queries. “Where is my order?” “Do you have this in size M?” “What is your return policy?” These questions arrive at 2 AM, on weekends, and during your busiest sales events — right when you have the least capacity to respond.
Live chat agents are expensive. Pre-scripted FAQ bots are frustrating to customers and fall apart the moment someone phrases a question slightly differently. Manual support tickets pile up, response times slip, and customer satisfaction tanks while your team spends their energy copy-pasting the same answers.
Most AI chatbot solutions on the market cost hundreds of dollars per month, lock your data into a proprietary platform, and still require hours of manual training. For small WooCommerce store owners, that trade-off rarely makes sense. What’s missing is a plugin that actually understands your specific products, reads your existing content, and plugs natively into the channels your customers already use — without a monthly bill.
Aisk is a free, open-source WordPress plugin that turns your existing site content into a live AI knowledge base. It reads your pages, products, FAQs, and PDFs — then uses OpenAI’s language models to answer customer questions intelligently, 24/7, across your website, WhatsApp, and Telegram.
The setup takes minutes: install the plugin, paste your OpenAI API key, click “Generate Embeddings,” and your store has a functioning AI support agent. No monthly subscription. No data locked in someone else’s cloud. No manual scripting of every possible question.
Aisk’s most powerful capability is its embedding-based knowledge system. When you click “Generate Embeddings,” the plugin crawls your WordPress pages, WooCommerce product descriptions, FAQs, and any custom content you’ve added. It sends that content to OpenAI, which converts it into vector embeddings — mathematical representations of meaning stored in your own database.
When a customer asks a question, Aisk performs a semantic search across those embeddings to find the most relevant chunks of your content, then passes them to the AI model as context. The result is accurate, specific answers that reference your actual products and policies — not generic AI guesses.
Whenever you update your site, regenerating embeddings takes one click. The chatbot immediately reflects your latest content without any manual retraining.
// Aisk triggers embedding generation via an admin AJAX action
add_action( 'wp_ajax_aisk_generate_embeddings', [ $this, 'generate_embeddings' ] );
// For each post/page/product, content is extracted, chunked, and sent to OpenAI
// The resulting vectors are stored in a custom DB table: {prefix}_aisk_embeddings
Aisk is built specifically for WooCommerce. The plugin connects directly to your product catalog and order database, which means the chatbot can do things a generic AI cannot:
// Aisk hooks into WooCommerce order data for real-time status lookups
// Customer provides order_id + email → plugin verifies ownership → returns order meta
$order = wc_get_order( $order_id );
if ( $order && $order->get_billing_email() === $customer_email ) {
$status = $order->get_status();
$tracking = $order->get_meta( '_tracking_number' );
// Formatted response sent back to the chat widget
}
The chat widget lives on your WordPress site, but Aisk extends the same AI to WhatsApp (via Twilio API) and Telegram (via the Telegram Bot API). Customers can browse products, check order status, and get support from apps they use every day — without visiting your site.
All three channels feed into a single unified admin dashboard. Your team sees every conversation from every channel in one place, with full history, timestamps adjusted to the user’s local timezone, and the ability to escalate to a human agent when needed.
// Telegram webhook handler routes incoming messages through the same AI pipeline
add_action( 'rest_api_init', function() {
register_rest_route( 'aisk/v1', '/telegram-webhook', [
'methods' => 'POST',
'callback' => [ $telegram_handler, 'handle_webhook' ],
'permission_callback' => '__return_true',
]);
});
Your support knowledge rarely lives entirely on your website. Aisk lets you upload PDFs, link external URLs, and paste custom text directly into the knowledge base through the “External Knowledge” section of the dashboard. Training manuals, detailed spec sheets, supplier documentation — all of it becomes searchable context for the AI.
When the AI cannot find a confident answer, it doesn’t just say “I don’t know.” It offers to create a support ticket on the customer’s behalf, collecting the relevant information and routing it to your team. This graceful fallback keeps customers from hitting dead ends and ensures nothing falls through the cracks.
Added in version 2.5.0, the analytics panel gives you visibility into chat volume, common query topics, resolution rates, and escalation frequency — the data you need to identify gaps in your knowledge base and measure the chatbot’s impact on support load.
aisk-ai-chat/
├── includes/
│ ├── Admin/
│ │ ├── class-aisk-admin.php — Dashboard, menus, settings pages
│ │ └── class-aisk-analytics.php — Analytics data aggregation
│ ├── API/
│ │ ├── class-aisk-openai.php — OpenAI API client (embeddings + completions)
│ │ ├── class-aisk-telegram.php — Telegram Bot API handler
│ │ └── class-aisk-whatsapp.php — Twilio/WhatsApp API handler
│ ├── Chat/
│ │ ├── class-aisk-chat-handler.php — Core message routing & intent classification
│ │ └── class-aisk-woocommerce.php — WooCommerce product/order queries
│ ├── Embeddings/
│ │ └── class-aisk-embeddings.php — Content crawl, chunk, embed, store
│ └── PDF/
│ └── class-aisk-pdf-processor.php — PDF text extraction & batch embedding
├── assets/
│ ├── js/
│ │ ├── chat-widget.js — Frontend chat UI
│ │ └── admin.js — Admin dashboard interactions
│ └── css/
│ └── chat-widget.css — Widget styles & theming
├── templates/
│ └── chat-widget.php — Chat widget HTML template
└── aisk-ai-chat.php — Plugin entry point, constants, autoloader
The embedding pipeline is the engine behind Aisk’s “self-learning” capability. Here is the flow:
text-embedding-ada-002 model). OpenAI returns a 1,536-dimensional vector representing the semantic meaning of that chunk.{prefix}_aisk_embeddings) alongside the source post ID, chunk index, and original text.// Simplified embedding retrieval for a customer query
public function get_relevant_context( string $query ): array {
// 1. Embed the user's query
$query_vector = $this->openai->create_embedding( $query );
// 2. Pull all stored embeddings from DB
$stored = $this->db->get_all_embeddings();
// 3. Compute cosine similarity, return top 5 chunks
usort( $stored, function( $a, $b ) use ( $query_vector ) {
return $this->cosine_similarity( $query_vector, $b['vector'] )
- $this->cosine_similarity( $query_vector, $a['vector'] );
});
return array_slice( $stored, 0, 5 );
}
Before routing a message to the knowledge base, Aisk classifies the intent. A dedicated classification call determines whether the customer is asking a general question, searching for a product, inquiring about an order, or requesting human support. This intent label controls which downstream handler processes the message — preventing, for example, a product search query from triggering the order-lookup flow.
// Intent classifier returns one of: general | product_search | order_inquiry | support_ticket
$intent = $this->classify_intent( $user_message );
switch ( $intent ) {
case 'product_search':
return $this->woocommerce->search_products( $user_message );
case 'order_inquiry':
return $this->woocommerce->lookup_order( $session_data );
case 'support_ticket':
return $this->create_support_ticket( $session_data );
default:
return $this->knowledge_base->answer( $user_message );
}
Option 1 — From the WordPress Plugin Directory (Recommended):
Option 2 — Manual Upload:
# Download the latest release
wget https://downloads.wordpress.org/plugin/aisk-ai-chat.2.6.5.zip
# Upload and unzip to your plugins directory
unzip aisk-ai-chat.2.6.5.zip -d /wp-content/plugins/
# Activate via WP-CLI
wp plugin activate aisk-ai-chat
Option 3 — WP-CLI:
wp plugin install aisk-ai-chat --activate
Requirements:
After activation, navigate to Settings → Aisk in your WordPress admin.
Step 1 — Add Your OpenAI API Key:
Dashboard → Aisk Settings → API Configuration → OpenAI API Key
Paste your key from: https://platform.openai.com/api-keys
Step 2 — Generate Embeddings:
Dashboard → Aisk → Knowledge Base → Generate Embeddings
This crawls your site and builds the AI knowledge base. Run it again whenever you publish new content.
Step 3 — Configure the Chat Widget:
Dashboard → Aisk → Widget Settings
- Set widget title, greeting message, and theme color
- Toggle the chat bubble icon on/off
- Upload a custom header logo (optional)
WhatsApp via Twilio:
Account SID, Auth Token, and WhatsApp Number in Aisk settings.https://yoursite.com/wp-json/aisk/v1/whatsapp-webhookTelegram Bot:
Most chatbots are built on rigid decision trees or keyword matching. Aisk takes a fundamentally different approach — one that makes it genuinely useful without any manual scripting.
When you ask a traditional rule-based chatbot “Do you sell waterproof hiking boots?”, it looks for the literal words “waterproof hiking boots” in a predefined FAQ list. If your product is listed as “all-weather trail footwear,” the bot fails.
Aisk embeds both the question and your content into the same vector space. In that space, “waterproof hiking boots” and “all-weather trail footwear” are mathematically close — because they mean the same thing. The retrieval finds the right product description regardless of exact wording.
// Cosine similarity measures the angle between two vectors.
// Score of 1.0 = identical meaning. Score of 0.0 = completely unrelated.
private function cosine_similarity( array $vec_a, array $vec_b ): float {
$dot_product = array_sum( array_map( fn($a, $b) => $a * $b, $vec_a, $vec_b ) );
$magnitude_a = sqrt( array_sum( array_map( fn($a) => $a ** 2, $vec_a ) ) );
$magnitude_b = sqrt( array_sum( array_map( fn($b) => $b ** 2, $vec_b ) ) );
if ( $magnitude_a === 0.0 || $magnitude_b === 0.0 ) return 0.0;
return $dot_product / ( $magnitude_a * $magnitude_b );
}
Storing and querying high-dimensional vectors at scale typically requires a dedicated vector database (Pinecone, Weaviate, etc.). Aisk skips this infrastructure cost entirely by storing vectors in a standard MySQL table and computing similarity in PHP at query time. For most WooCommerce stores (hundreds to a few thousand pages), this is fast enough and eliminates an external dependency. As your content library grows, you can regenerate embeddings incrementally.
The trade-off is honest: very large catalogs (tens of thousands of products) may see slower similarity searches. For those stores, the plugin’s batch processing system helps manage embedding generation without overwhelming server memory.
| Setting | Type | Default | Description |
|---|---|---|---|
openai_api_key |
string | '' |
Your OpenAI API key for embeddings and chat completions |
embedding_model |
string | text-embedding-ada-002 |
OpenAI model used for content vectorization |
chat_model |
string | gpt-4o-mini |
OpenAI model used for generating responses |
widget_title |
string | 'Chat with us' |
Displayed in the chat bubble header |
widget_color |
string | '#007cba' |
Primary color for the chat widget UI |
excluded_post_types |
array | [] |
Post types to skip during embedding generation |
excluded_post_ids |
array | [] |
Specific posts/pages to exclude from the knowledge base |
telegram_bot_token |
string | '' |
Token from @BotFather for Telegram integration |
twilio_account_sid |
string | '' |
Twilio Account SID for WhatsApp integration |
twilio_auth_token |
string | '' |
Twilio Auth Token for WhatsApp integration |
twilio_whatsapp_number |
string | '' |
Your Twilio WhatsApp-enabled phone number |
show_chat_bubble |
bool | true |
Toggle the floating chat bubble icon |
show_header_logo |
bool | true |
Show/hide the widget header logo |
rolling_messages |
array | [] |
Rotating greeting messages shown in the bubble |
Cause: Missing or invalid OpenAI API key, or insufficient OpenAI account credits. Fix:
# Verify your key is valid by testing it directly
curl https://api.openai.com/v1/models \
-H "Authorization: Bearer YOUR_API_KEY"
# A 200 response confirms the key works. A 401 means the key is wrong or expired.
Also check your server’s PHP max_execution_time. Embedding large sites takes time. Aisk uses WordPress filters to extend execution time, but some hosts override this. If you see timeouts, process embeddings in smaller batches using the “Excluded Post Types” setting.
Cause: Webhook URL not registered, or the site URL changed after setup. Fix: Re-save your Telegram bot token in Aisk settings — this triggers an automatic webhook re-registration. For WhatsApp/Twilio, manually verify the webhook URL in your Twilio console matches https://yoursite.com/wp-json/aisk/v1/whatsapp-webhook and that your SSL certificate is valid (Twilio requires HTTPS).
Cause: Embeddings not generated, or content has changed since last generation. Fix:
Aisk Dashboard → Knowledge Base → Generate Embeddings → Run
After publishing new products or pages, always regenerate embeddings to keep the knowledge base current. Check the “Unprocessed Items” counter — if it shows a number greater than 0, the generation did not complete successfully.
Cause: Chat session is tied to browser storage, which is cleared in private mode. Fix: This is expected behavior as of v2.0.5, which added explicit incognito support. The chatbot still functions fully; only conversation history is not persisted between sessions.
Aisk’s architecture opens natural paths for extension. The plugin’s intent classification layer is a clean abstraction — developers could register custom intent handlers to connect the chatbot to any WooCommerce extension (subscriptions, bookings, memberships). The External Knowledge system already supports PDFs and URLs; document format support (Google Docs, Notion exports) would be a logical next step. Multi-language support and a native vector storage solution for larger catalogs are the two most impactful improvements that would push Aisk into production-ready territory for high-volume stores.
Aisk solves a real problem that most small WooCommerce stores face: customer support volume that outpaces team capacity, but budgets that can’t justify enterprise chatbot pricing. By using vector embeddings to learn from your existing content and routing queries intelligently across web, WhatsApp, and Telegram, Aisk delivers a quality of automated support that previously required a significant ongoing investment.
The plugin is free, the code is open source, and the only recurring cost is your own OpenAI API usage — which you control completely. For a WooCommerce store handling a moderate volume of support inquiries, the API costs will be a fraction of what a single live agent hour would cost.
If you run a WooCommerce store, install Aisk today from the WordPress Plugin Directory, generate your first embeddings, and see how many support queries it can resolve without any human involvement. The setup takes under 15 minutes.
Built with ❤️ by Aisk.chat Team