@varyar/vy-ecom-telemetry
v1.0.0
Published
VarYar telemetry — server fire-and-forget sender, browser scroll/dwell tracker, UA and referrer helpers
Maintainers
Readme
@varyar/vy-ecom-telemetry
VarYar telemetry in two lines — server sender, browser tracker, and UA/referrer helpers.
Install
npm install @varyar/vy-ecom-telemetryEnvironment variables
VARYAR_TELEMETRY_URL=https://varyar-ecommerce.vercel.app/api/inbound/telemetry
VARYAR_BUSINESS_UID=VYB-XXXXXXXX
VARYAR_INBOUND_API_KEY=your_inbound_keyServer usage
import { tel } from "@varyar/vy-ecom-telemetry/server";
// Single event — fire and forget, never throws
tel().send({ event_type: "page_view", anon_session_id: sid, page_path: "/shop" });
// Batch
tel().sendBatch([
{ event_type: "product_view", anon_session_id: sid, product_id: "p_123" },
{ event_type: "add_to_cart", anon_session_id: sid, product_id: "p_123" },
]);Helpers
import { tel, parseUA, classifyReferrer, resolveSessionId } from "@varyar/vy-ecom-telemetry/server";
// Inside a Remix/React Router loader:
export async function loader({ request }: LoaderFunctionArgs) {
const sid = resolveSessionId(request); // ?sid= or x-session-id header
const referrer_type = classifyReferrer(request.headers.get("referer"));
const { device_type, browser_family, os_family } = parseUA(request.headers.get("user-agent") ?? "");
tel().send({ event_type: "page_view", anon_session_id: sid, referrer_type, device_type });
}Class API
import { VyTelemetry } from "@varyar/vy-ecom-telemetry/server";
const myTel = new VyTelemetry({
url: "https://...",
businessUid: "VYB-...",
apiKey: "...",
timeoutMs: 3000,
});
myTel.send({ event_type: "purchase", anon_session_id: sid });Client (browser) usage
Import from @varyar/vy-ecom-telemetry/client in your React components.
Events are posted to the same-origin /api/telemetry-relay — the API key never leaves the server.
import { initTelemetry } from "@varyar/vy-ecom-telemetry/client";
// In a useEffect or Remix clientLoader:
useEffect(() => {
const cleanup = initTelemetry({
sessionId: window.__SESSION_ID__,
pagePath: window.location.pathname,
productId: "p_123", // optional
});
return cleanup; // call on unmount / route change
}, []);initTelemetry automatically fires:
session_starton initscroll/scroll_stopas the user scrollspage_viewheartbeat every 30 ssession_endon tab hide / page unload / cleanup()
One-off events
import { fireEvent } from "@varyar/vy-ecom-telemetry/client";
fireEvent({ event_type: "add_to_cart", anon_session_id: sid, product_id: "p_123" });Supported event types
page_view · scroll · scroll_stop · element_peek · product_view · product_hover ·
add_to_cart · remove_from_cart · checkout_start · checkout_abandon · purchase ·
search · search_click · wishlist_add · session_start · session_end
