JavaScript SDK
Tracking Conversions

Tracking Conversions

Conversions are your most important events. Convultra provides specialized methods for each conversion type with automatic deduplication and platform forwarding.

Conversion Types

TypeMethodUse Case
PurchasetrackPurchase()E-commerce transactions
LeadtrackLead()Form submissions, contact requests
SignuptrackSignup()User registrations
SubscriptiontrackSubscription()Recurring payment signups
DownloadtrackDownload()File downloads, content access
CustomtrackConversion()Any other conversion

Purchase Tracking

Track e-commerce purchases:

Convultra.trackPurchase({
  // Required for deduplication
  orderId: 'ORDER-12345',
  
  // Revenue
  value: 149.99,
  currency: 'USD',
  
  // Optional: Product details
  items: [
    {
      sku: 'PROD-001',
      name: 'Widget Pro',
      price: 99.99,
      quantity: 1
    },
    {
      sku: 'PROD-002',
      name: 'Widget Accessory',
      price: 50.00,
      quantity: 1
    }
  ]
})

Order ID is crucial! It enables 24-hour deduplication. Without it, duplicate orders may be counted if users refresh the thank-you page.

E-commerce Platform Examples

Shopify thank-you page
// Access Shopify order data
Convultra.trackPurchase({
  orderId: Shopify.checkout.order_id,
  value: parseFloat(Shopify.checkout.total_price) / 100,
  currency: Shopify.checkout.currency,
  items: Shopify.checkout.line_items.map(item => ({
    sku: item.sku,
    name: item.title,
    price: parseFloat(item.price) / 100,
    quantity: item.quantity
  }))
})

Lead Tracking

Track form submissions and contact requests:

Convultra.trackLead({
  // For deduplication (recommended)
  leadId: 'LEAD_' + Date.now(),
  
  // Optional: Estimated value
  value: 100,
  currency: 'USD',
  
  // Context
  formName: 'Contact Form',
  source: 'pricing_page'
})

Form Integration Example

form-handler.js
document.querySelector('#contact-form').addEventListener('submit', async (e) => {
  e.preventDefault()
  
  const formData = new FormData(e.target)
  const leadId = 'LEAD_' + Date.now()
  
  // Track lead with user data for Enhanced Conversions
  Convultra.trackConversion('lead', 
    {
      leadId,
      value: 100,
      formName: 'Contact Form',
      source: 'website'
    },
    {
      email: formData.get('email'),
      phone: formData.get('phone'),
      firstName: formData.get('firstName'),
      lastName: formData.get('lastName')
    }
  )
  
  // Submit form to your backend
  await fetch('/api/leads', {
    method: 'POST',
    body: formData
  })
  
  // Show success message
  showThankYou()
})

Signup Tracking

Track user registrations and trial starts:

Convultra.trackSignup({
  // User identifier for deduplication
  userId: 'user_abc123',
  
  // Signup details
  plan: 'trial',  // 'free', 'trial', 'starter', 'pro'
  method: 'email', // 'email', 'google', 'github', 'apple'
  source: 'website'
})

Auth Integration Examples

// Auth0 post-registration action
auth0.on('authenticated', (user) => {
  Convultra.trackSignup({
    userId: user.sub,
    plan: 'trial',
    method: user.identities[0].provider
  })
  
  Convultra.identify(user.sub, {
    email: user.email,
    firstName: user.given_name,
    lastName: user.family_name
  })
})

Subscription Tracking

Track recurring payment signups:

Convultra.trackSubscription({
  // For deduplication
  subscriptionId: 'sub_xyz789',
  
  // Revenue
  value: 29.99,
  currency: 'USD',
  
  // Subscription details
  plan: 'pro',
  billingCycle: 'monthly', // 'monthly', 'annual', 'quarterly'
  trialDays: 14
})

Stripe Subscription Example

// After successful Stripe subscription
const subscription = await stripe.subscriptions.create({...})
 
Convultra.trackSubscription({
  subscriptionId: subscription.id,
  value: subscription.items.data[0].price.unit_amount / 100,
  currency: subscription.currency.toUpperCase(),
  plan: subscription.items.data[0].price.nickname,
  billingCycle: subscription.items.data[0].price.recurring.interval
})

Download Tracking

Track file downloads and content access:

Convultra.trackDownload({
  // For deduplication
  downloadId: 'DL_' + fileId + '_' + userId,
  
  // File details
  fileName: 'whitepaper-2024.pdf',
  fileType: 'pdf',
  category: 'lead_magnet' // 'ebook', 'software', 'resource'
})

Custom Conversions

For any conversion type not covered above:

Convultra.trackConversion('webinar_registration', {
  // Conversion data
  conversionId: 'WEBINAR_' + Date.now(),
  value: 50,
  currency: 'USD',
  
  // Custom properties
  webinarName: 'Product Launch 2024',
  webinarDate: '2024-03-15'
})

With Enhanced Conversions

Include user data for higher match rates:

Convultra.trackConversion('purchase',
  // Conversion data
  {
    orderId: 'ORDER-12345',
    value: 149.99,
    currency: 'USD'
  },
  // User data (hashed automatically)
  {
    email: 'customer@example.com',
    phone: '+1234567890',
    firstName: 'John',
    lastName: 'Doe',
    street: '123 Main St',
    city: 'New York',
    postalCode: '10001',
    country: 'US'
  }
)

Learn more in Enhanced Conversions โ†’


Deduplication

Convultra automatically prevents duplicate conversions:

ID TypeWindowPriority
orderId / leadId / userId24 hoursHighest
Click ID + value1 hourHigh
Event ID5 minutesMedium
Fingerprint5 minutesLow
๐Ÿ’ก

Always include an ID (orderId, leadId, userId, etc.) to ensure proper deduplication across page refreshes and multiple browser tabs.


Data Attribute Conversions

Track conversions without JavaScript:

<!-- Purchase button -->
<button
  data-convultra-track="purchase"
  data-convultra-order-id="ORDER-12345"
  data-convultra-value="149.99"
  data-convultra-currency="USD"
>
  Complete Purchase
</button>
 
<!-- Lead form -->
<form
  data-convultra-track="lead"
  data-convultra-lead-id="LEAD_12345"
  data-convultra-value="100"
  data-convultra-form-name="Contact Form"
>
  <input type="email" name="email" required />
  <button type="submit">Submit</button>
</form>

Pixel Tracking (No-JS)

For environments without JavaScript:

<!-- Pixel on thank-you page -->
<img 
  src="https://api.convultra.com/v1/pixel?pid=proj_xxx&e=purchase&value=149.99&oid=ORDER-12345&email=customer@example.com"
  alt=""
  style="position:absolute;width:1px;height:1px;border:0;"
/>

Learn more in No-JS Pixel โ†’


Next Steps