Quora Ads Event Tracking
Overview
Quora Ads uses the Quora Pixel and Conversions API for conversion tracking, audience building, and campaign optimization. The pixel enables website tracking for standard and custom events, while the API provides server-side tracking for improved accuracy. Both work together to provide comprehensive measurement across the customer journey.
Standard Events
Quora supports predefined events for common conversion types:
Conversion Events
- Generic - General conversion event
- Purchase - Completed transaction
- GenerateLead - Lead form submission
- CompleteRegistration - Account signup
- AddToCart - Product added to cart
- AddPaymentInfo - Payment method added
- AddToWishlist - Product wishlisted
- InitiateCheckout - Checkout started
- Search - Site search performed
Installing the Quora Pixel
Base Pixel Code
Install on all pages:
<!-- Quora Pixel Base Code -->
<script>
!function(q,e,v,n,t,s){if(q.qp) return; n=q.qp=function(){n.qp?n.qp.apply(n,arguments):n.queue.push(arguments);}; n.queue=[];t=document.createElement(e);t.async=!0;t.src=v; s=document.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s);}(window, 'script', 'https://a.quora.com/qevents.js');
qp('init', 'PIXEL_ID');
qp('track', 'ViewContent');
</script>
<noscript><img height="1" width="1" style="display:none" src="https://q.quora.com/_/ad/PIXEL_ID/pixel?tag=ViewContent"/></noscript>
Replace PIXEL_ID with your Quora Pixel ID from the Ads Manager.
Pixel Placement
- Base pixel: All pages (in
<head>or early in<body>) - Event pixels: Specific pages where conversions occur
- Noscript fallback: After the script tag
Custom Events
Creating Custom Conversions
Track business-specific actions:
// Custom event with type
qp('track', 'Generic', {
type: 'NewsletterSignup'
});
// Custom event with value
qp('track', 'Generic', {
type: 'ContentDownload',
value: 25.00,
currency: 'USD'
});
// Demo request
qp('track', 'GenerateLead', {
type: 'DemoRequest',
value: 100.00,
currency: 'USD'
});
Event Parameters
Customize with additional data:
qp('track', 'Purchase', {
value: 99.99,
currency: 'USD',
productId: 'SKU_12345',
quantity: 1,
type: 'Subscription'
});
Ecommerce Events
Purchase Tracking
Complete purchase implementation:
<!-- On thank you/confirmation page -->
<script>
qp('track', 'Purchase', {
value: 149.99,
currency: 'USD',
orderId: 'ORDER_12345'
});
</script>
<noscript><img height="1" width="1" style="display:none" src="https://q.quora.com/_/ad/PIXEL_ID/pixel?tag=Purchase&value=149.99¤cy=USD"/></noscript>
Add to Cart
qp('track', 'AddToCart', {
value: 49.99,
currency: 'USD',
productId: 'SKU_001'
});
Initiate Checkout
qp('track', 'InitiateCheckout', {
value: 99.99,
currency: 'USD',
numItems: 2
});
Complete Funnel Example
// 1. View Content (automatic with base pixel)
qp('track', 'ViewContent');
// 2. Add to Cart
qp('track', 'AddToCart', {
value: 49.99,
currency: 'USD',
productId: 'SKU_001'
});
// 3. Initiate Checkout
qp('track', 'InitiateCheckout', {
value: 49.99,
currency: 'USD'
});
// 4. Add Payment Info
qp('track', 'AddPaymentInfo');
// 5. Purchase
qp('track', 'Purchase', {
value: 49.99,
currency: 'USD',
orderId: 'ORDER_12345'
});
Lead Generation Events
Generate Lead
Track lead form submissions:
qp('track', 'GenerateLead', {
value: 50.00, // Estimated lead value
currency: 'USD',
type: 'ContactForm'
});
Complete Registration
Track account signups:
qp('track', 'CompleteRegistration', {
value: 10.00,
currency: 'USD',
type: 'FreeTrial'
});
Conversion Tracking
Implementation Methods
1. Quora Pixel (JavaScript)
Standard implementation:
<script>
!function(q,e,v,n,t,s){if(q.qp) return; n=q.qp=function(){n.qp?n.qp.apply(n,arguments):n.queue.push(arguments);}; n.queue=[];t=document.createElement(e);t.async=!0;t.src=v; s=document.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s);}(window, 'script', 'https://a.quora.com/qevents.js');
qp('init', 'PIXEL_ID');
qp('track', 'ViewContent');
</script>
2. Google Tag Manager
Deploy via GTM with Custom HTML:
Base tag (all pages):
<script>
!function(q,e,v,n,t,s){if(q.qp) return; n=q.qp=function(){n.qp?n.qp.apply(n,arguments):n.queue.push(arguments);}; n.queue=[];t=document.createElement(e);t.async=!0;t.src=v; s=document.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s);}(window, 'script', 'https://a.quora.com/qevents.js');
qp('init', '{{Quora Pixel ID}}');
qp('track', 'ViewContent');
</script>
Conversion tag (specific triggers):
<script>
qp('track', 'Purchase', {
value: {{DL - Order Total}},
currency: 'USD',
orderId: '{{DL - Order ID}}'
});
</script>
3. Quora Conversions API
Server-side tracking:
import requests
import hashlib
import time
def hash_value(value):
"""SHA256 hash for user data"""
return hashlib.sha256(value.lower().strip().encode()).hexdigest()
def send_quora_conversion(event_data):
url = "https://ads-api.quora.com/conversion-events"
headers = {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
payload = {
"pixel_id": "PIXEL_ID",
"events": [{
"event_name": "Purchase",
"timestamp": int(time.time()),
"event_id": "unique_event_id", # For deduplication
"value": 99.99,
"currency": "USD",
"user_data": {
"email": hash_value("user@example.com"),
"phone": hash_value("+15551234567"),
"client_ip_address": "192.168.1.1",
"client_user_agent": "Mozilla/5.0...",
"click_id": "quora_click_id"
},
"custom_data": {
"order_id": "ORDER_12345",
"content_ids": ["SKU_001", "SKU_002"]
}
}]
}
response = requests.post(url, headers=headers, json=payload)
return response.json()
Click ID Capture
Capture Quora click ID for attribution:
// Capture qclid from URL
function getQuoraClickId() {
const params = new URLSearchParams(window.location.search);
return params.get('qclid');
}
// Store for later use
const clickId = getQuoraClickId();
if (clickId) {
localStorage.setItem('quora_click_id', clickId);
document.cookie = `qclid=${clickId}; path=/; max-age=2592000`;
}
Attribution
Attribution Windows
Configure in Quora Ads Manager:
| Window Type | Default | Range |
|---|---|---|
| Post-click | 28 days | 1-90 days |
| Post-view | 1 day | 1-7 days |
Attribution Model
Quora uses last-touch attribution:
- Credit goes to last Quora ad interaction
- Configurable click and view windows
- Deduplication via order/event IDs
Audience Building
Retargeting Audiences
Build audiences from pixel events:
// All visitors
qp('track', 'ViewContent');
// Product page visitors
qp('track', 'ViewContent', {
contentType: 'product',
contentIds: ['SKU_001']
});
// Cart abandoners
qp('track', 'AddToCart');
// (Exclude purchasers in audience settings)
// Converters (for exclusion/lookalikes)
qp('track', 'Purchase');
Audience Types
- Website visitors: All pixel traffic
- Event-based: Users who triggered specific events
- Value-based: High-value customers for lookalikes
- List match: Upload customer emails
Debugging & Validation
Quora Pixel Helper
Chrome extension for validation:
- Install Quora Pixel Helper
- Navigate to your site
- View detected pixels and events
- Check parameters and errors
Browser Console
// Check if Quora pixel loaded
if (typeof qp === 'function') {
console.log('Quora Pixel loaded');
console.log('Queue:', window.qp?.queue);
} else {
console.error('Quora Pixel not found');
}
Network Tab
- Open DevTools > Network
- Filter for "quora.com"
- Trigger conversion
- Verify request fires with parameters
Quora Ads Manager
Check pixel health:
- Navigate to Pixels & Events
- View recent activity
- Check event counts by type
- Review any error notifications
Test Mode
Send test events:
qp('track', 'Purchase', {
value: 1.00,
currency: 'USD',
orderId: 'TEST_' + Date.now()
});
Best Practices
Implementation
- Install base pixel on all pages for complete audience building
- Place pixel in
<head>for reliable loading - Include noscript fallback for non-JS browsers
- Use Conversions API alongside pixel for accuracy
- Capture and store click IDs for offline attribution
Event Strategy
- Track full funnel from ViewContent to Purchase
- Use consistent event names matching Quora standards
- Include values for all revenue-generating events
- Pass order IDs for deduplication
- Create custom events for key business actions
Privacy Compliance
- Respect consent requirements before firing
- Hash PII when using Conversions API
- Update privacy policy to disclose tracking
- Honor opt-outs from privacy controls
- Use server-side tracking where client blocked
Optimization
- Optimize toward valuable events (Purchase, Lead)
- Build lookalikes from high-value converters
- Exclude recent converters from prospecting
- Test different attribution windows for your cycle
- Monitor conversion rates by targeting option