Skip to main content

Cryptique.track()

Track custom events to capture specific user actions in your dApp. This is how you instrument Web3-specific interactions like swaps, stakes, mints, and more.
Cryptique.track(eventName, properties?, options?)

Parameters

eventName
string
required
The name of the event. Use descriptive, action-oriented names.
  • Maximum length: 255 characters
  • Case-sensitive
  • Use consistent naming conventions (e.g., Title Case or snake_case)
properties
object
Optional object containing event properties. Add context to your events with relevant data.See Implementation Guide for property constraints.
options
object
Optional configuration for this specific event.

Returns

void - Events are sent asynchronously.

Basic Examples

Simple Event

Cryptique.track('Button Clicked');

Event with Properties

Cryptique.track('Swap Completed', {
  fromToken: 'ETH',
  toToken: 'USDC',
  amount: 1.5,
  slippage: 0.5,
  dex: 'Uniswap'
});

Web3 Event Examples

// Swap
Cryptique.track('Swap Completed', {
  fromToken: 'ETH',
  toToken: 'USDC',
  fromAmount: 1.5,
  toAmount: 2847.50,
  slippage: 0.5,
  priceImpact: 0.02,
  dex: 'Uniswap V3'
});

// Stake
Cryptique.track('Stake Initiated', {
  token: 'ETH',
  amount: 32,
  protocol: 'Lido',
  expectedAPY: 4.2
});

// Liquidity
Cryptique.track('Liquidity Added', {
  pool: 'ETH-USDC',
  token0Amount: 1,
  token1Amount: 1850,
  lpTokensReceived: 42.5,
  protocol: 'Uniswap V3'
});

// Borrow
Cryptique.track('Borrow Completed', {
  collateral: 'ETH',
  collateralAmount: 5,
  borrowed: 'USDC',
  borrowedAmount: 5000,
  healthFactor: 1.8,
  protocol: 'Aave'
});

Event Naming Best Practices

Do ✅

// Action-oriented, descriptive names
Cryptique.track('Swap Completed');
Cryptique.track('NFT Minted');
Cryptique.track('Stake Initiated');
Cryptique.track('Wallet Connected');

// Consistent casing
Cryptique.track('Profile Updated');  // Title Case
Cryptique.track('profile_updated');  // or snake_case

Don’t ❌

// Vague names
Cryptique.track('click');
Cryptique.track('event');
Cryptique.track('action');

// Inconsistent casing
Cryptique.track('swapCompleted');  // camelCase
Cryptique.track('SWAP_COMPLETED'); // SCREAMING_CASE
Cryptique.track('swap completed'); // lowercase with spaces

Property Best Practices

Use Meaningful Properties

// Good - provides actionable context
Cryptique.track('Swap Completed', {
  fromToken: 'ETH',
  toToken: 'USDC',
  amount: 1.5,
  valueUSD: 2847.50,
  slippage: 0.5,
  success: true
});

// Bad - too vague
Cryptique.track('Swap Completed', {
  data: 'some swap',
  value: 1.5
});

Avoid Reserved Properties

These property names are reserved and will be stripped from event data:
// Don't use these - they're auto-captured
{
  page,
  full_url,
  current_url,
  uri,
  referrer,
  user_agent,
  language,
  screen_width,
  screen_height,
  viewport_width,
  viewport_height,
  dpi,
  timestamp,
  page_title,
  title,
  url,
  href
}

Tracking Conversion Funnels

Track each step of your conversion funnel to identify drop-offs:
// Step 1: User views swap page
Cryptique.track('Swap Page Viewed');

// Step 2: User selects tokens
Cryptique.track('Tokens Selected', {
  fromToken: 'ETH',
  toToken: 'USDC'
});

// Step 3: User enters amount
Cryptique.track('Amount Entered', {
  fromToken: 'ETH',
  amount: 1.5
});

// Step 4: User clicks swap
Cryptique.track('Swap Initiated', {
  fromToken: 'ETH',
  toToken: 'USDC',
  amount: 1.5
});

// Step 5: User confirms in wallet
Cryptique.track('Wallet Confirmation Requested');

// Step 6: Transaction succeeds
Cryptique.track('Swap Completed', {
  fromToken: 'ETH',
  toToken: 'USDC',
  amount: 1.5,
  txHash: '0x123...'
});

Error Tracking

Track errors to identify friction points:
try {
  await executeSwap();
  Cryptique.track('Swap Completed', { success: true });
} catch (error) {
  Cryptique.track('Swap Failed', {
    success: false,
    errorCode: error.code,
    errorMessage: error.message,
    errorType: error.name
  });
}

TypeScript

interface SwapEvent {
  fromToken: string;
  toToken: string;
  amount: number;
  slippage: number;
  success: boolean;
  txHash?: string;
}

Cryptique.track<SwapEvent>('Swap Completed', {
  fromToken: 'ETH',
  toToken: 'USDC',
  amount: 1.5,
  slippage: 0.5,
  success: true,
  txHash: '0x123...'
});

Identify Users

Link events to user identities

User Properties

Set persistent user attributes