@jsv10/tracker-sdk
v1.0.20
Published
Browser tracking SDK for ecommerce analytics
Maintainers
Readme
Tracker SDK
This SDK captures web events in-browser and sends them to POST /api/v1/collect.
Integration goals
- one-line HTML bootstrap
- auto-tracking enabled by default
- canonical payload normalization before send
- compatibility with runtime
analytics.init(...)overrides
Initialization
Projects can initialize tracking with a single HTML line:
<script src="/sdk/tracker.js?api_key=trk_live_xxx"></script>Auto-tracking is enabled by default for this bootstrap style.
Optional query params:
auto=0: disable auto-tracking at bootstrap
The SDK still supports existing globals for compatibility:
window.__TRACKER_KEY__window.__TRACKER_API_KEY__window.__TRACKER_AUTO__window.__TRACKER_PID__(optional)
Runtime configuration is also supported:
import "../sdk/tracker.js";
window.analytics.init({
apiKey: "trk_live_xxx",
autoTrack: true, // optional
debug: false // optional
});SDK endpoint is intentionally fixed to same-origin /track and cannot be overridden from browser code.
projectId is optional in SDK config and is not required for normal usage.
Backend resolves project using the API key.
analytics.init(...) validates the API key against the backend before activating tracking.
It returns a promise that resolves after validation succeeds and rejects with status === 401
when the API key is missing or status === 403 when the key has been revoked.
Public API
analytics.init(config)analytics.autotrack(overrides)analytics.track(event, properties)analytics.identify(userId, traits)analytics.purchase(payload)analytics.getConfig()
npm Package Usage
Install from npm:
npm install @jsv10/tracker-sdkOr install from GitHub Packages:
npm install @jsv10/tracker-sdk --registry=https://npm.pkg.github.comThen import and initialize:
import "@jsv10/tracker-sdk";
window.analytics.init({
apiKey: import.meta.env.VITE_TRACKER_API_KEY,
autoTrack: true,
});CDN / HTML Usage
Script-tag query params still work for bootstrapping (api key and auto mode):
<script src="https://unpkg.com/@jsv10/tracker-sdk@latest/dist/tracker.min.js?api_key=trk_live_xxx&auto=0"></script>Data Sent By SDK
Each event payload includes:
event_nametimestamp(ISO string)api_keysession_iduser_id(defaults to anonymous id until identify is called)anonymous_idpage_urlreferreruser_agentsource,medium,campaigndevice_type,platform,is_new_user- event-specific fields (
duration,traits,value,order_id,product_id,category,cart_value,quantity, etc.) event_properties(custom metadata + detector payload)- optional
project_idif configured manually
For analytics.purchase(payload), required fields are:
order_idvalue(or legacyrevenue)currency(3-letter code, for exampleUSD)product_idcategoryquantity(> 0)cart_value
If any required purchase field is missing or invalid, the backend rejects the event with 400.
Currency behavior:
- 3-letter uppercase format is required by backend validation.
- Lowercase inputs are normalized server-side (for example
usd->USD).
Idempotency behavior:
- use a stable
order_idper order attempt - retries with the same
order_idare deduplicated server-side
Dynamic Auto-Tracking
When autoTrack is enabled, SDK dynamically inspects runtime interactions.
Canonical auto events
product_viewview_product(emitted as an alias with the same detector payload)add_to_cartbegin_checkoutpurchase_intentsearchsignuploginremove_from_cartclick_ctaclick(emitted only for key CTAs, not every link click)
Core lifecycle + commerce events
pageviewpage_view(emitted as an alias with the same payload)session_startsession_endpurchase
Keywords used for classification
add_to_cart:add to cart,add-to-cart,add cart,add bag,add basketbegin_checkout:checkout,proceed to checkout,go to checkoutpurchase_intent:buy now,purchase,order now,pay now,get nowsearch:search,find,look for,querysignup:sign up,signup,register,create account,join nowlogin:log in,login,sign in,signin,continue with,my accountremove_from_cart:remove,remove from cart,delete item,remove itemclick_cta:learn more,shop now,view details,explore,start now,get started,see plans
Detector metadata
Auto events attach detector metadata in event_properties.detector:
{
"event_name": "add_to_cart",
"timestamp": "2026-04-10T12:00:00Z",
"api_key": "trk_live_xxx",
"session_id": "uuid",
"anonymous_id": "anon_123",
"page_url": "/store",
"event_properties": {
"detector": {
"kind": "click",
"confidence": 0.95,
"matched_keywords": ["add to cart"],
"selector": "button.add-btn",
"tag": "button",
"label": "Add to Cart"
}
}
}Session behavior
- Creates session id in localStorage (
trk_sid) - Creates anonymous id in localStorage (
trk_aid) - Refreshes session activity from user interactions
- Sends
session_startwhen session expires/new - Sends
session_endwhen a previous session times out and a new one starts - Sends
pageviewon initial load and SPA route changes - Emits alias events (
page_view,view_product,click) alongside their canonical event names - Sends
time_on_pageon visibility hidden / unload
Hosting patterns
- Local/self-hosted:
<script src="/sdk/tracker.js?api_key=..."></script> - npm-backed CDN script:
https://cdn.jsdelivr.net/npm/@jinishv28/tracker-sdk@<version>/dist/tracker.min.js - npm package distribution: install
@jsv10/tracker-sdkand import in app build step
