Quora Ads Event Tracking | OpsBlu Docs

Quora Ads Event Tracking

How to configure conversion tracking events for Quora Ads. Covers pixel event setup, custom parameters, conversion value assignment, audience building.

Standard Events

Quora supports the following standard events for conversion tracking:

ViewContent

Track when users view content (automatically fired by base code):

qp('track', 'ViewContent');

Generic

Track custom page views or actions:

qp('track', 'Generic');

GenerateLead

Track lead generation events:

qp('track', 'GenerateLead', {
  'lead_type': 'contact_form',
  'value': '50.00',
  'currency': 'USD'
});

CompleteRegistration

Track user registrations:

qp('track', 'CompleteRegistration', {
  'registration_method': 'email',
  'value': '25.00'
});

AddToCart

Track when users add items to cart:

qp('track', 'AddToCart', {
  'value': '49.99',
  'currency': 'USD',
  'product_id': 'SKU_12345',
  'product_name': 'Blue Widget',
  'category': 'widgets'
});

Purchase

Track completed purchases:

qp('track', 'Purchase', {
  'value': '99.99',
  'currency': 'USD',
  'order_id': 'ORDER_12345',
  'product_ids': ['SKU_12345', 'SKU_67890'],
  'num_items': 2
});

Custom Event Parameters

Purchase Event with Details

qp('track', 'Purchase', {
  'value': 149.99,
  'currency': 'USD',
  'order_id': 'ORDER_12345',
  'product_ids': ['SKU_12345', 'SKU_67890'],
  'product_names': ['Blue Widget', 'Red Widget'],
  'num_items': 2,
  'category': 'widgets',
  'shipping': 5.00,
  'tax': 12.00
});

Lead Event with Scoring

qp('track', 'GenerateLead', {
  'lead_type': 'demo_request',
  'value': 100.00,
  'currency': 'USD',
  'lead_score': 'high',
  'industry': 'technology',
  'company_size': '50-200'
});

Registration with Details

qp('track', 'CompleteRegistration', {
  'registration_method': 'email',
  'value': '25.00',
  'account_type': 'premium',
  'referral_source': 'quora_ad'
});

Dynamic Event Tracking

Product View Tracking

function trackQuoraProductView(product) {
  qp('track', 'ViewContent', {
    'product_id': product.id,
    'product_name': product.name,
    'category': product.category,
    'price': product.price,
    'currency': 'USD'
  });
}

// Usage
trackQuoraProductView({
  id: 'SKU_12345',
  name: 'Blue Widget',
  category: 'widgets',
  price: 49.99
});

Add to Cart Tracking

document.querySelectorAll('.add-to-cart-btn').forEach(button => {
  button.addEventListener('click', function(e) {
    const productId = this.dataset.productId;
    const productPrice = this.dataset.productPrice;

    qp('track', 'AddToCart', {
      'product_id': productId,
      'value': productPrice,
      'currency': 'USD'
    });
  });
});

Form Submission Tracking

document.getElementById('contact-form').addEventListener('submit', function(e) {
  qp('track', 'GenerateLead', {
    'lead_type': 'contact_form',
    'value': '50.00',
    'currency': 'USD',
    'form_location': 'homepage'
  });
});

E-commerce Event Sequence

Complete Purchase Flow

// Step 1: View Product
qp('track', 'ViewContent', {
  'product_id': 'SKU_12345',
  'value': '49.99',
  'currency': 'USD'
});

// Step 2: Add to Cart
qp('track', 'AddToCart', {
  'product_id': 'SKU_12345',
  'value': '49.99',
  'currency': 'USD'
});

// Step 3: Begin Checkout
qp('track', 'Generic', {
  'event_name': 'begin_checkout',
  'value': '49.99',
  'currency': 'USD'
});

// Step 4: Purchase
qp('track', 'Purchase', {
  'value': '54.99',
  'currency': 'USD',
  'order_id': 'ORDER_12345',
  'product_ids': ['SKU_12345'],
  'shipping': 5.00
});

GTM Event Implementation

Data Layer Push

// Push to data layer
dataLayer.push({
  'event': 'quora_purchase',
  'ecommerce': {
    'purchase': {
      'actionField': {
        'id': 'ORDER_12345',
        'revenue': '99.99',
        'tax': '8.00',
        'shipping': '5.00'
      },
      'products': [{
        'id': 'SKU_12345',
        'name': 'Blue Widget',
        'price': '49.99',
        'quantity': 2
      }]
    }
  }
});

GTM Custom HTML Tag

<script>
qp('track', 'Purchase', {
  'value': {{DLV - Transaction Value}},
  'currency': {{DLV - Currency}},
  'order_id': {{DLV - Transaction ID}},
  'product_ids': {{DLV - Product IDs}},
  'num_items': {{DLV - Product Quantity}}
});
</script>

Trigger: Custom Event - quora_purchase

Custom Audience Events

Track High-Value Users

qp('track', 'Generic', {
  'event_name': 'high_value_user',
  'lifetime_value': 500.00,
  'order_count': 5,
  'customer_segment': 'vip'
});

Track Content Categories

qp('track', 'ViewContent', {
  'content_type': 'blog_post',
  'content_category': 'technology',
  'content_id': 'ARTICLE_789',
  'author': 'John Doe'
});

Track User Engagement

// Track scroll depth
window.addEventListener('scroll', function() {
  const scrollPercent = (window.scrollY / (document.documentElement.scrollHeight - window.innerHeight)) * 100;

  if (scrollPercent > 75 && !window.quoraScrollTracked) {
    qp('track', 'Generic', {
      'event_name': 'scroll_75_percent',
      'page_url': window.location.href
    });
    window.quoraScrollTracked = true;
  }
});

Mobile App Events (via MMP)

AppsFlyer Events

Map Quora events to AppsFlyer:

import AppsFlyerLib

// Purchase
AppsFlyerLib.shared().logEvent(AFEventPurchase, withValues: [
    AFEventParamRevenue: 99.99,
    AFEventParamCurrency: "USD",
    AFEventParamOrderId: "ORDER_12345",
    AFEventParamContentId: "SKU_12345"
])

// Registration
AppsFlyerLib.shared().logEvent(AFEventCompleteRegistration, withValues: [
    AFEventParamRegistrationMethod: "email"
])

Adjust Events

import com.adjust.sdk.Adjust
import com.adjust.sdk.AdjustEvent

// Purchase
val purchaseEvent = AdjustEvent("abc123")
purchaseEvent.setRevenue(99.99, "USD")
purchaseEvent.addCallbackParameter("order_id", "ORDER_12345")
Adjust.trackEvent(purchaseEvent)

// Lead
val leadEvent = AdjustEvent("def456")
leadEvent.addCallbackParameter("lead_type", "contact_form")
Adjust.trackEvent(leadEvent)

Server-Side Event Tracking

For server-side events, use the Conversions API:

import requests
import hashlib

def track_quora_conversion(event_type, event_data):
    """Track Quora conversion server-side"""
    url = 'https://conversion-event.quora.com/conversion/event'

    # Hash user data
    hashed_email = hashlib.sha256(event_data['email'].encode()).hexdigest()

    payload = {
        'pixel_id': 'PIXEL_ID',
        'access_token': 'ACCESS_TOKEN',
        'event_name': event_type,
        'event_time': event_data['timestamp'],
        'user_data': {
            'em': hashed_email
        },
        'custom_data': {
            'value': event_data.get('value'),
            'currency': event_data.get('currency', 'USD'),
            'order_id': event_data.get('order_id')
        }
    }

    response = requests.post(url, json=payload)
    return response.status_code == 200

# Usage
track_quora_conversion('Purchase', {
    'email': 'user@example.com',
    'value': 99.99,
    'currency': 'USD',
    'order_id': 'ORDER_12345',
    'timestamp': 1640000000
})

Testing Events

Console Testing

// Enable debug mode
window.quoraDebug = true;

// Track test event
qp('track', 'Purchase', {
  'value': '99.99',
  'currency': 'USD',
  'order_id': 'TEST_ORDER_' + Date.now()
});

console.log('✓ Quora purchase event tracked');

Verify in Events Manager

  1. Go to Quora Ads Manager
  2. Click "Events Manager"
  3. Select your pixel
  4. View recent events (may take 20-30 minutes to appear)
  5. Check event parameters

Best Practices

  • Always include value and currency for conversion events
  • Use unique order_id to prevent duplicate conversions
  • Track events as close to the action as possible
  • Use standard event names when available
  • Include relevant custom parameters for audience building
  • Test events before launching campaigns
  • Monitor event volume in Events Manager
  • Document your event schema for team reference
  • Use server-side tracking for sensitive data
  • Implement deduplication logic for hybrid tracking