@searchmindai/event-tracking-sdk
v1.0.2
Published
TypeScript SDK for tracking SearchMindAI search, chat, and commerce events, with a browser IIFE bundle.
Readme
@searchmindai/event-tracking-sdk
TypeScript SDK for tracking SearchMindAI events. Wraps @searchmindai/event-tracking-commons and provides typed functions for all event types.
Auto-fills common fields on every event: session_id, user_id, event_id, url, ts, referrer, device_type, and session attribution (attribution_source, attributed_search_id, attributed_chat_id).
Build
npm install
# Build ESM library + browser bundle
npm run build
# Build ESM library only
npm run build:lib
# Build browser bundle only (minified)
npm run build:browser
# Build browser bundle with sourcemaps
npm run build:browser:devOutput:
dist/index.js— ESM librarydist/searchmindai.js— browser IIFE bundle (window.searchmindai)
test sdk locally
npm run build # build dist/searchmindai.js first
npm run serve # serves . at http://localhost:9080- open http://localhost:9080/test-html/index.html
- note: port 9080 can vary, see console output
- to test against local server, you need to use ngrok in the server for https
Usage as a library (npm install)
Install
npm install @searchmindai/event-tracking-sdkInitialize
Call sdk.init() once at app startup before tracking any events:
import { sdk } from '@searchmindai/event-tracking-sdk';
sdk.init({
store_api_key: 'your-api-key',
apiBase: 'https://api.searchmindai.com',
});Track a search event
import { sdk } from '@searchmindai/event-tracking-sdk';
sdk.trackSearch({
query: 'blue running shoes',
result_count: 24,
search_mode: 'semantic',
best_score: 0.94,
suggested_product_ids: ['prod_1', 'prod_2', 'prod_3'],
suggested_product_scores: [0.94, 0.91, 0.88],
});Available tracking functions
sdk.trackSearch({ query, result_count?, best_score?, filter_expr?, search_mode?, suggested_product_ids?, suggested_product_scores? });
sdk.trackSearchResultClick({ product_id, product_name?, price?, position?, query? });
sdk.trackChatMessage({ chat_message_id, query, question_type?, total_time_ms?, ref_count?, suggested_product_ids?, rating? });
sdk.trackChatResultClick({ product_id, product_name?, price?, position?, chat_message_id? });
sdk.trackProductView({ product_id, product_name?, price? });
sdk.trackAddToCart({ product_id, product_name?, price?, quantity? });
sdk.trackRemoveFromCart({ product_id, price?, quantity? });
sdk.trackBeginCheckout({ cart_value?, cart_item_count?, order_product_ids? });
sdk.trackPurchase({ order_id, revenue, cart_item_count?, order_product_ids?, order_product_revenues? });Usage in the browser
The npm package ships the ESM library only (dist/index.js); the minified browser
IIFE bundle (dist/searchmindai.js) is a separate build artifact for direct
<script> inclusion (e.g. hosted on a CDN or your own bucket), not published to npm.
Build it yourself with npm run build:browser and host the resulting file, then
include it directly in your HTML. It exposes a global searchmindai object.
<script src="https://your-cdn.com/searchmindai.js"></script>
<script>
searchmindai.init({
store_api_key: 'your-api-key',
apiBase: 'https://api.searchmindai.com',
});
searchmindai.trackSearch({
query: 'blue running shoes',
result_count: 24,
search_mode: 'semantic',
suggested_product_ids: ['prod_1', 'prod_2', 'prod_3'],
});
</script>All tracking functions are available on the global searchmindai object:
searchmindai.trackProductView({ product_id: 'prod_1', product_name: 'Blue Runners', price: 89.99 });
searchmindai.trackAddToCart({ product_id: 'prod_1', product_name: 'Blue Runners', price: 89.99, quantity: 1 });
searchmindai.trackPurchase({ order_id: 'ord_123', revenue: 89.99, order_product_ids: ['prod_1'] });License
MIT
