Trackers

This guide shows you how to integrate CashIn's Event Tracker endpoints to understand user behaviour on your site while respecting privacy.

Tracker Endpoints

Endpoint

Method

Purpose

Key Parameters

Response Data

/partner/v1/partner/tracker

POST

Create new event tracker

name, tracker_type, reference_id, custom_script

tracker object, script_url

/partner/v1/partner/tracker/{trackerId}

GET

Get tracker details

trackerId (URL param)

tracker object, piic_summary, last_event_at

/partner/v1/partner/tracker/{trackerId}

PUT

Update tracker

trackerId (URL param), update fields

Updated tracker object

Tracker Types

Type

Purpose

Use Case

page_view

Track page visits and navigation

Site analytics, funnel analysis

click_tracking

Monitor button and link clicks

UX optimization, conversion tracking

scroll_tracking

Measure content engagement

Content performance, user engagement

time_tracking

Track session duration

Understand if they’re a lost, or quick purchaser or slow purchaser

custom

Your own tracking logic

Specialized business requirements

Authentication Setup

const headers = {
  'Authorization': 'Bearer sk_live_abc123def456...',
  'Content-Type': 'application/json'
};

Quick Start: Create Default Trackers

Create a Page View Tracker

async function createPageTracker() {
  const response = await fetch('/partner/v1/tracker', {
    method: 'POST',
    headers,
    body: JSON.stringify({
      name: "Website Page Views",
      tracker_type: "page_view",
      reference_id: "main-site"
    })
  });

  const result = await response.json();
  
  if (result.success) {
    console.log('Tracker created:', result.data.tracker.script_url);
    return result.data.tracker;
  }
}

Create a Click Tracker

async function createClickTracker() {
  const response = await fetch('/partner/v1/tracker', {
    method: 'POST',
    headers,
    body: JSON.stringify({
      name: "Button Clicks",
      tracker_type: "click_tracking",
      reference_id: "click-analytics"
    })
  });

  const result = await response.json();
  return result.success ? result.data.tracker : null;
}

Implement Tracking Scripts

Basic Script Implementation

function loadTracker(scriptUrl) {
  const script = document.createElement('script');
  script.src = scriptUrl;
  script.async = true;
  
  script.onload = () => console.log('Tracker loaded');
  script.onerror = () => console.error('Tracker failed to load');
  
  document.head.appendChild(script);
}

// Usage
const tracker = await createPageTracker();
if (tracker) {
  loadTracker(tracker.script_url);
}

HTML Embed Code

<!-- Simple embed for page tracking -->
<script>
  (function() {
    var script = document.createElement('script');
    script.src = 'YOUR_TRACKER_SCRIPT_URL';
    script.async = true;
    document.head.appendChild(script);
  })();
</script>

Custom Tracking

Create Custom Tracker

async function createCustomTracker() {
  const customScript = `
    // Track form submissions
    document.addEventListener('submit', function(e) {
      console.log('Form submitted:', e.target.id);
    });
  `;

  const response = await fetch('/partner/v1/tracker', {
    method: 'POST',
    headers,
    body: JSON.stringify({
      name: "Form Tracking",
      tracker_type: "custom",
      reference_id: "forms",
      custom_script: customScript
    })
  });

  return response.json();
}

Manage Trackers

Get Tracker Details

async function getTracker(trackerId) {
  const response = await fetch(`/partner/v1/tracker/${trackerId}`, {
    method: 'GET',
    headers
  });

  const result = await response.json();
  
  if (result.success) {
    console.log('Tracker info:', result.data.tracker);
    console.log('Privacy summary:', result.data.tracker.piic_summary);
  }
}

Update Tracker

async function updateTracker(trackerId, updates) {
  const response = await fetch(`/partner/v1/tracker/${trackerId}`, {
    method: 'PUT',
    headers,
    body: JSON.stringify(updates)
  });

  return response.json();
}

// Toggle tracker on/off
await updateTracker('tracker-id', { is_active: false });

Complete Setup Example

async function setupWebsiteTracking() {
  // Create trackers
  const pageTracker = await createPageTracker();
  const clickTracker = await createClickTracker();
  
  // Load scripts
  if (pageTracker) loadTracker(pageTracker.script_url);
  if (clickTracker) loadTracker(clickTracker.script_url);
  
  console.log('Website tracking setup complete');
}

// Initialize on page load
document.addEventListener('DOMContentLoaded', setupWebsiteTracking);

Tracker Types

Type

Purpose

What it tracks

page_view

Page visits

URLs, navigation patterns

click_tracking

User clicks

Button/link interactions

scroll_tracking

Content engagement

How far users scroll

time_tracking

Session duration

Time spent on pages

custom

Your own logic

Whatever you define

Privacy & PIIC

  • All trackers are automatically analyzed for privacy compliance

  • PIIC ensures no personal data is collected

  • Each tracker gets a privacy summary

  • Scripts are hosted securely on CashIn's CDN

Error Handling

async function createTrackerSafely(config) {
  try {
    const response = await fetch('/partner/v1/tracker', {
      method: 'POST',
      headers,
      body: JSON.stringify(config)
    });

    const result = await response.json();
    
    if (!result.success) {
      console.error('Tracker creation failed:', result.message);
      return null;
    }
    
    return result.data.tracker;
  } catch (error) {
    console.error('Network error:', error);
    return null;
  }
}

That's it! You can now track user behaviour on your website while respecting privacy and connecting to CashIn's session and campaign systems.