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
- Go to Quora Ads Manager
- Click "Events Manager"
- Select your pixel
- View recent events (may take 20-30 minutes to appear)
- Check event parameters
Best Practices
- Always include
valueandcurrencyfor conversion events - Use unique
order_idto 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