@hubhorizonllc/tracker
Version:
Tracks and analyzes user behavior using Chrome's TextClassifier
177 lines (127 loc) • 3.9 kB
Markdown
# @hubhorizonllc/tracker
A TypeScript SDK for tracking and analyzing user behavior on websites using Chrome's Built-in AI TextClassifier API.
## Features
- 📊 Tracks user interactions (clicks, scrolls, inputs, errors)
- 📝 Generates text summaries of user behavior
- 🧠 Uses Chrome's Built-in AI TextClassifier API for local analysis
- 🔄 Provides sentiment classification results (frustrated, satisfied, confused, etc.)
- 🔞 Debug mode for development
- 💡 Auto-suggest mode for UX improvement recommendations
- ⚛️ React hook for easy integration with React applications
## Installation
```bash
npm install @hubhorizonllc/tracker
```
## Basic Usage
```typescript
import { UserBehaviorTracker } from "@hubhorizonllc/tracker";
// Initialize the tracker
const tracker = new UserBehaviorTracker({
debug: true,
autoSuggest: true,
});
// Start tracking with a callback
tracker.start((result) => {
console.log("User sentiment analysis:", result);
if (result.sentiment === "frustrated" && result.score > 0.7) {
// Show a help message or offer assistance
}
});
// Stop tracking when needed
tracker.stop();
```
## React Hook
For React applications, you can use the provided hook:
```tsx
import { useUserBehaviorTracker } from "@hubhorizonllc/tracker";
function MyComponent() {
const { result, isTracking, start, stop, addCustomInteraction } =
useUserBehaviorTracker({
debug: true,
autoSuggest: true,
// Start automatically on component mount (default: true)
autoStart: true,
});
// The result will update whenever a new classification is available
React.useEffect(() => {
if (result) {
console.log("User sentiment:", result.sentiment, "Score:", result.score);
if (result.sentiment === "frustrated" && result.score > 0.7) {
// Show help UI
}
}
}, [result]);
// Track custom events
const handleImportantAction = () => {
addCustomInteraction("important_action", {
actionId: "checkout",
timestamp: Date.now(),
});
// Rest of your code...
};
return (
<div>
{/* Your component JSX */}
<button onClick={handleImportantAction}>Important Action</button>
{/* Optional controls for tracking */}
<div>
<button onClick={start} disabled={isTracking}>
Start Tracking
</button>
<button onClick={stop} disabled={!isTracking}>
Stop Tracking
</button>
</div>
</div>
);
}
```
## Configuration Options
```typescript
const tracker = new UserBehaviorTracker({
// Enable debug mode to log events to console
debug: true,
// Automatically suggest improvements based on user behavior
autoSuggest: true,
// Minimum number of interactions before triggering classification
minInteractions: 5,
// Maximum time (ms) to collect interactions before triggering classification
maxCollectionTime: 30000, // 30 seconds
// Custom prompt template for classification
promptTemplate:
"Analyze this user behavior and classify the sentiment: {{summary}}",
});
```
## Browser Compatibility
This SDK relies on Chrome's Built-in AI TextClassifier API, which is currently available in:
- Chrome Dev/Canary with the appropriate flags enabled
- Future versions of Chrome (when the API becomes generally available)
The SDK will still collect user behavior data on unsupported browsers, but classification will not work.
## Custom Interactions
You can add custom interactions to the tracker:
```typescript
tracker.addCustomInteraction("form_submission", {
formId: "checkout",
success: true,
timeToComplete: 45000,
});
```
## Publishing
If you're contributing to this package, you can publish it to npm using:
```bash
# First build the package
npm run build
# Then publish
npm publish --access public
```
## License
MIT