JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 24
  • Score
    100M100P100Q26938F

Enhanced analytics tracking library with comprehensive device, browser, and engagement data collection

Package Exports

  • pathingjs

Readme

Pathing.js SDK

Pathing.js is a lightweight analytics tracking library that helps you understand user behavior in your application without compromising privacy.

Features

  • Predefined events (e.g. pathing.send.purchase({...}))
  • Dynamic element binding (e.g. pathing.link.purchase(element, {...}))
  • Raw fallback API (pathing.send.raw(...), pathing.link.raw(...))
  • Parameter wrapper support (Parameter(label, key, value))
  • Automatic pageview tracking
  • Enhanced device and browser fingerprinting
  • Session and user tracking across visits
  • Performance and network data collection
  • Scroll depth and engagement metrics

Installation

Option 1: Script Tag (Browser)

Add the following script tag before the closing </body> tag:

<script src="https://www.pathing.cc/pathing.js" pathing-api-key="YOUR_API_KEY"></script>

Option 2: NPM Package

Install the package:

npm install pathingjs

Then import and initialize in your application:

// ESM import (recommended)
import { pathing } from 'pathingjs';

// Initialize with your API key
pathing.init('pk_[YOUR_API_KEY]');

// Or using default import
import pathing from 'pathingjs';
pathing.init('pk_[YOUR_API_KEY]');

Usage

When loaded via script tag, the pathing object is now available globally as window.pathing (or just pathing in browser context).

Tracking Events

Button Click

// Track a button click
pathing.send.button({
  buttonId: "signup-button",
  location: "homepage",
  action: "signup_click"
});

Playback Event

// Track a video or audio playback
pathing.send.playback({
  contentId: "video-123",
  timestamp: 42, // seconds into playback
  duration: 300, // total duration in seconds
  title: "How to Use Pathing.js"
});

Purchase Event

// Track a purchase
pathing.send.purchase({
  product: "premium-plan",
  price: 49.99,
  currency: "USD",
  quantity: 1
});

Custom Event

// Track any custom event
pathing.send.raw("form_submission", {
  formId: "contact-form",
  timeToComplete: 45, // seconds
  completed: true
});

Automatically Track DOM Elements

// Automatically track when a button is clicked
const button = document.getElementById('signup-button');
pathing.link.button(button, {
  location: "homepage",
  action: "signup_click"
});
// Automatically track when a play button is clicked
const playButton = document.getElementById('play-button');
pathing.link.playback(playButton, {
  contentId: "video-123",
  timestamp: 0,
  title: "Getting Started"
});
// Automatically track when a buy button is clicked
const buyButton = document.getElementById('buy-button');
pathing.link.purchase(buyButton, {
  product: "premium-plan",
  price: 49.99,
  currency: "USD"
});

Tracked Data

The latest version of Pathing.js automatically collects a comprehensive set of data with each event:

Device Information

  • Browser details (user agent, language, screen dimensions)
  • Device type and capabilities
  • Platform and operating system information
  • Connection speed and network type
  • Browser fingerprint for cross-session tracking

Session Information

  • Session ID and duration
  • First and last seen timestamps
  • Page entry points and navigation paths
  • Referrer information
  • Visit count and frequency

Engagement Metrics

  • Time on page and scroll depth
  • Tab visibility and focus tracking
  • Page exit events with engagement data
  • Element interactions (clicks, hovers)

Performance Data

  • Page load time and render metrics
  • Navigation timing data
  • Memory usage statistics
  • Resource loading performance

React Example

import React, { useRef, useEffect } from 'react';
import { pathing } from 'pathingjs';

function SignupButton() {
  const buttonRef = useRef(null);
  
  useEffect(() => {
    if (buttonRef.current) {
      pathing.link.button(buttonRef.current, {
        location: "pricing-page",
        action: "signup_click",
        buttonId: "premium-signup"
      });
    }
  }, [buttonRef]);
  
  return (
    <button ref={buttonRef} className="signup-button">
      Sign Up Now
    </button>
  );
}

TypeScript Support

This library includes TypeScript definitions. You can import types directly:

import { pathing, ButtonData, EventResponse } from 'pathingjs';

// Initialize with your API key
pathing.init('pk_[YOUR_API_KEY]');

function trackButtonClick(data: ButtonData): Promise<EventResponse> {
  return pathing.send.button(data);
}

API Reference

See full documentation for detailed API reference.

License

MIT