Overview
Woopra integrates with dozens of popular business tools to centralize your customer data and enable powerful workflows. Connect your CRM, marketing automation, support, and communication platforms to get a complete view of your customers.
Native Integrations
CRM Platforms
- Sync customer data bidirectionally
- Create leads and contacts from Woopra
- View Woopra analytics in Salesforce
- Trigger workflows based on user behavior
// Track Salesforce-related events
woopra.track('crm_contact_created', {
contact_id: 'SF_12345',
source: 'web_form'
});
- Sync contacts and companies
- Trigger HubSpot workflows from Woopra events
- View user timeline in HubSpot
- Score leads based on engagement
Pipedrive
- Create and update deals
- Sync contact information
- Track sales pipeline activities
Marketing Automation
Marketo
- Sync lead data
- Trigger campaigns from user actions
- Track email engagement
- Score leads dynamically
Mailchimp
- Sync subscriber data
- Segment based on behavior
- Trigger email campaigns
- Track email performance
Campaign Monitor
- Sync subscriber lists
- Personalize campaigns
- Track engagement metrics
Customer Support
Zendesk
- View customer journey in support tickets
- Create tickets from Woopra
- Sync customer data
- Track support interactions
// Track support interactions
woopra.track('support_ticket_created', {
ticket_id: 'ZD_789',
category: 'technical_issue',
priority: 'high'
});
Intercom
- Sync user data
- Trigger messages based on behavior
- View user timeline
- Track conversation metrics
Help Scout
- View customer context in conversations
- Sync contact information
- Track support metrics
Communication
Slack
- Send notifications for key events
- Alert team on high-value actions
- Monitor user activity
// Example: Trigger Slack notification for high-value events
woopra.track('enterprise_signup', {
company: 'Acme Corp',
plan_value: 999,
notify_slack: true
});
Microsoft Teams
- Post notifications to channels
- Alert on important user actions
Data Warehouse
Segment
- Send Woopra data to Segment
- Distribute to other tools
- Centralize event tracking
// Track through both Woopra and Segment
analytics.track('purchase', { amount: 99 }); // Segment
woopra.track('purchase', { amount: 99 }); // Woopra
Google BigQuery
- Export Woopra data
- Run custom queries
- Build data warehouse
Amazon Redshift
- Export analytics data
- Combine with other data sources
API Integration
REST API
Send events and identify users via API:
# Track event
curl "https://www.woopra.com/track/ce/" \
-X POST \
-d "host=example.com" \
-d "event=purchase" \
-d "cv_email=user@example.com" \
-d "ce_amount=99.99" \
-d "ce_product=Pro Plan"
Identify API
# Identify user
curl "https://www.woopra.com/track/identify/" \
-X POST \
-d "host=example.com" \
-d "cv_email=user@example.com" \
-d "cv_name=John Doe" \
-d "cv_plan=enterprise"
Python Integration
import requests
class WoopraIntegration:
def __init__(self, domain):
self.domain = domain
self.base_url = "https://www.woopra.com/track"
def track_event(self, email, event_name, properties=None):
"""Track event via API"""
url = f"{self.base_url}/ce/"
params = {
'host': self.domain,
'event': event_name,
'cv_email': email
}
if properties:
for key, value in properties.items():
params[f'ce_{key}'] = value
response = requests.post(url, data=params)
return response.status_code == 200
def identify_user(self, email, properties=None):
"""Identify user via API"""
url = f"{self.base_url}/identify/"
params = {
'host': self.domain,
'cv_email': email
}
if properties:
for key, value in properties.items():
params[f'cv_{key}'] = value
response = requests.post(url, data=params)
return response.status_code == 200
# Usage
woopra = WoopraIntegration('example.com')
# Identify user
woopra.identify_user('user@example.com', {
'name': 'John Doe',
'plan': 'enterprise'
})
# Track event
woopra.track_event('user@example.com', 'feature_used', {
'feature': 'export',
'format': 'csv'
})
Webhooks
Outgoing Webhooks
Trigger external actions based on user behavior:
Setup:
- Go to Woopra Settings → Integrations → Webhooks
- Add webhook URL
- Select trigger events
- Configure payload
Example Webhook Payload:
{
"event": "purchase",
"visitor": {
"email": "user@example.com",
"name": "John Doe",
"plan": "enterprise"
},
"properties": {
"amount": 99.99,
"product": "Pro Plan",
"timestamp": 1704067200
}
}
Processing Webhooks:
// Node.js webhook handler
app.post('/woopra-webhook', express.json(), (req, res) => {
const { event, visitor, properties } = req.body;
console.log(`Received event: ${event}`);
console.log(`User: ${visitor.email}`);
console.log(`Properties:`, properties);
// Process the event
if (event === 'purchase') {
// Update your database
updateCustomerPurchase(visitor.email, properties);
// Send notification
sendSlackNotification(`New purchase: ${properties.product}`);
}
res.status(200).send('OK');
});
Custom Integrations
Build Your Own
Create custom integrations using Woopra's API:
# Example: Sync Woopra data to your database
import requests
from datetime import datetime
def sync_woopra_to_database():
"""Sync Woopra events to your database"""
# Get events from Woopra API (requires API key)
events = get_woopra_events()
for event in events:
# Transform data
db_event = {
'user_email': event['visitor']['email'],
'event_name': event['event'],
'event_time': datetime.fromtimestamp(event['timestamp']),
'properties': event['properties']
}
# Save to database
save_to_database(db_event)
Zapier Integration
Connect Woopra with 5,000+ apps via Zapier:
Example Zaps:
- New Woopra event → Create Google Sheets row
- User milestone → Send email via Gmail
- Purchase event → Update Airtable
- High engagement → Create Trello card
Integration Use Cases
Sales Workflows
// Track engagement for lead scoring
woopra.track('whitepaper_download', {
resource: 'Enterprise Guide',
lead_score_points: 10
});
woopra.track('pricing_page_view', {
time_on_page: 120,
lead_score_points: 15
});
woopra.track('demo_requested', {
company_size: '100-500',
lead_score_points: 50
});
Trigger CRM Actions:
// High-value action triggers CRM workflow
woopra.track('enterprise_trial_started', {
company: 'Acme Corp',
seats: 100,
trigger_sales_alert: true
});
Marketing Campaigns
// Segment users for targeted campaigns
woopra.identify({
email: 'user@example.com',
segment: 'power_user',
feature_adoption: 0.85,
last_active: Date.now()
});
Campaign Attribution:
// Track campaign performance
woopra.track('signup', {
utm_source: 'google',
utm_medium: 'cpc',
utm_campaign: 'spring_2024',
utm_content: 'variant_b'
});
Customer Success
Churn Prevention:
// Identify at-risk users
woopra.identify({
email: 'user@example.com',
days_since_login: 15,
feature_usage: 'declining',
churn_risk: 'high'
});
// Trigger intervention
woopra.track('churn_risk_detected', {
send_email: true,
assign_csm: true
});
Onboarding Tracking:
// Monitor onboarding progress
woopra.track('onboarding_step_completed', {
step: 3,
step_name: 'first_project_created',
total_steps: 5,
completion_percentage: 60
});
Data Export
CSV Export
Export Woopra data for analysis:
- Go to Reports → Export
- Select date range
- Choose metrics and dimensions
- Download CSV
API Data Export
# Export data via API
import requests
def export_woopra_data(api_key, project, start_date, end_date):
"""Export data from Woopra API"""
url = f"https://www.woopra.com/rest/v2.6/reports/analytics"
headers = {
'Authorization': f'Bearer {api_key}'
}
params = {
'project': project,
'start_date': start_date,
'end_date': end_date,
'granularity': 'day'
}
response = requests.get(url, headers=headers, params=params)
return response.json()
# Usage
data = export_woopra_data(
api_key='your_api_key',
project='example.com',
start_date='2024-01-01',
end_date='2024-01-31'
)
Best Practices
Integration Strategy
- Start with Core Tools: Integrate your CRM and email platform first
- Test Thoroughly: Verify data flows correctly before relying on integrations
- Monitor Data Quality: Regularly check that data is syncing properly
- Document Mappings: Keep track of how fields map between systems
Data Consistency
// Use consistent identifiers across all integrations
const userIdentifier = {
id: 'user_12345', // Your internal ID
email: 'user@example.com' // Email for matching
};
// Woopra
woopra.identify(userIdentifier);
// Segment
analytics.identify(userIdentifier.id, userIdentifier);
// HubSpot (via API)
updateHubSpotContact(userIdentifier.email, userData);
Error Handling
// Handle integration failures gracefully
function trackWithFallback(eventName, properties) {
try {
// Try Woopra
woopra.track(eventName, properties);
} catch (error) {
console.error('Woopra tracking failed:', error);
// Fallback to server-side tracking
fetch('/api/track', {
method: 'POST',
body: JSON.stringify({ event: eventName, properties })
});
}
}
Troubleshooting Integrations
Data Not Syncing
- Check credentials: Verify API keys and authentication
- Test connection: Use integration health checks
- Verify permissions: Ensure proper access rights
- Check field mappings: Confirm fields are mapped correctly
Duplicate Data
// Prevent duplicate events in integrations
const trackedEvents = new Set();
function trackOnce(eventName, properties) {
const eventKey = `${eventName}_${JSON.stringify(properties)}`;
if (!trackedEvents.has(eventKey)) {
woopra.track(eventName, properties);
trackedEvents.add(eventKey);
}
}
Rate Limiting
// Handle API rate limits
async function trackWithRateLimit(eventName, properties) {
const maxRetries = 3;
let retries = 0;
while (retries < maxRetries) {
try {
await woopraApiCall(eventName, properties);
break;
} catch (error) {
if (error.status === 429) { // Rate limited
retries++;
await new Promise(resolve => setTimeout(resolve, 1000 * retries));
} else {
throw error;
}
}
}
}