TrustData
Tracking SDK

JavaScript SDK

Install and configure the TrustData JavaScript SDK.

Installation

Standard installation

Add this snippet before the closing </head> tag:

<script>
(function(w,d,s,u,n){
  w[n]=w[n]||[];
  w[n].push(['init','ATTRIBUTION_ID',{sendPageView:true}]);
  var f=d.getElementsByTagName(s)[0],j=d.createElement(s);
  j.async=1;j.src=u;f.parentNode.insertBefore(j,f);
})(window,document,'script','https://t.trustdata.tech/t.js','trustdata');
</script>

Replace ATTRIBUTION_ID with your Attribution's ID from the dashboard.

NPM installation

npm install @trustdata/sdk
import trustdata from '@trustdata/sdk';

trustdata.init('ATTRIBUTION_ID', {
  sendPageView: true
});

Configuration options

trustdata.init('ATTRIBUTION_ID', {
  // Send a pageview event on initialization
  sendPageView: true,

  // Enable cookieless tracking mode (in-memory only)
  cookieless: false,

  // Initial consent state
  consent: {
    analytics: false,
    advertising: false
  },

  // Domains to ignore for referrer tracking
  ignoreDomains: ['stripe.com', 'paypal.com'],

  // Event server endpoint (default: TrustData cloud)
  apiHost: 'https://t.trustdata.tech'
});

Configuration reference

OptionTypeDefaultDescription
sendPageViewbooleanfalseSend pageview on init
cookielessbooleanfalseDisable persistent storage (in-memory only)
consentobject{analytics: false, advertising: false}Initial consent state
ignoreDomainsarray[]Domains to exclude from referrer
apiHoststringhttps://t.trustdata.techEvent server endpoint

API methods

trustdata.event(name, props)

Track custom events:

trustdata.event('button_click', {
  button_id: 'signup',
  page: '/pricing'
});

trustdata.event('add_to_cart', {
  product_id: 'SKU123',
  value: 49.99
});

trustdata.consent(options)

Update consent state:

// Grant all consent
trustdata.consent({
  analytics: true,
  advertising: true
});

// Revoke advertising consent
trustdata.consent({
  analytics: true,
  advertising: false
});

trustdata.setUserId(id)

Associate events with a known user:

// After user logs in
trustdata.setUserId('user_123');

The user ID persists across sessions and is used for cross-device attribution.

trustdata.getVisitorId()

Get the current visitor's anonymous ID:

const visitorId = trustdata.getVisitorId();
console.log(visitorId); // "v_abc123..."

trustdata.getAttributionPath()

Get the current visitor's attribution journey:

const path = trustdata.getAttributionPath();
console.log(path);
// [
//   { source: 'google', medium: 'cpc', campaign: 'brand' },
//   { source: 'facebook', medium: 'paid', campaign: 'retarget' }
// ]

trustdata.debug(enabled)

Enable or disable debug logging:

trustdata.debug(true);  // Enable debug mode
trustdata.debug(false); // Disable debug mode

Debug output:

[TrustData] Initialized with attribution_id: TD-abc123
[TrustData] Pageview: /products/widget
[TrustData] Event: add_to_cart {product_id: "SKU123", value: 49.99}

Single page applications (SPA)

For SPAs, track pageviews on route changes:

// React Router example
import { useLocation } from 'react-router-dom';

function App() {
  const location = useLocation();

  useEffect(() => {
    trustdata.event('page_view', {
      path: location.pathname
    });
  }, [location]);

  return <Routes>...</Routes>;
}
// Vue Router example
router.afterEach((to) => {
  trustdata.event('page_view', {
    path: to.path
  });
});

Integrate with your consent management platform:

// Initialize without automatic page_view
trustdata.init('ATTRIBUTION_ID', {
  sendPageView: false,
  consent: {
    analytics: false,
    advertising: false
  }
});

// After user grants consent
function onConsentGranted() {
  trustdata.consent({
    analytics: true,
    advertising: true
  });
  trustdata.event('page_view');
}

// If user only grants analytics consent
function onAnalyticsOnlyConsent() {
  trustdata.consent({
    analytics: true,
    advertising: false
  });
  trustdata.event('page_view');
}