Integration Inventory
Native Integration Partners
Mixpanel offers extensive native integrations for product analytics and user engagement:
Data Warehouses & Storage
- Amazon S3 - Raw data export for archival
- Google BigQuery - SQL-based analysis and reporting
- Snowflake - Enterprise data platform integration
- Azure Synapse - Microsoft cloud analytics
- Amazon Redshift - Data warehouse connectivity
- Databricks - Lakehouse platform integration
Customer Data Platforms
- Segment - Unified customer data collection
- mParticle - Cross-platform event orchestration
- RudderStack - Customer data infrastructure
- MetaRouter - Enterprise CDP platform
Marketing & Advertising
- Google Ads - Conversion tracking and optimization
- Facebook Ads - Custom audience sync
- Braze - Multi-channel messaging automation
- Iterable - Growth marketing platform
- Customer.io - Behavioral email campaigns
- SendGrid - Email engagement tracking
CRM & Sales Tools
- Salesforce - Lead qualification and attribution
- HubSpot - Marketing automation workflows
- Pipedrive - Sales pipeline analytics
- Zendesk - Customer support correlation
- Intercom - In-app messaging and chat
Business Intelligence
- Looker - Custom dashboards and visualization
- Tableau - Data exploration and reporting
- Mode Analytics - SQL-based analytics platform
- Sigma Computing - Cloud-native BI tool
Product & Development
- Amplitude - Cross-platform behavioral analysis
- LaunchDarkly - Feature flag analytics
- Optimizely - A/B testing and experimentation
- Split.io - Feature delivery platform
- Firebase - Mobile app integration
Mixpanel Warehouse Connectors
Data Pipeline Architecture
Mixpanel Warehouse Connectors enable bi-directional data flow:
- Export to Warehouse - Send Mixpanel events to your data warehouse
- Import from Warehouse - Bring warehouse data into Mixpanel for analysis
- Cohort Sync - Export user cohorts to activation platforms
Supported Connectors
- BigQuery - Native real-time streaming
- Snowflake - Daily batch or continuous sync
- Amazon S3 - Raw JSON export
- Redshift - PostgreSQL-compatible sync
API Access & Custom Integrations
Query API
- JQL (JSON Query Language) for flexible data extraction
- Segmentation, Funnel, and Retention queries
- Event and User profile export
- Rate limits based on plan tier
Ingestion API
- HTTP endpoint for event tracking
- Batch import capability (up to 2000 events per request)
- User profile updates
- Group analytics support
Data Export API
- Raw event export for custom processing
- People (user) export for CRM enrichment
- Engage API for messaging campaigns
Lexicon API
- Programmatic schema management
- Event and property definitions
- Data governance automation
Plan-Based Feature Access
Mixpanel Pricing Tiers
| Feature | Free | Growth | Enterprise |
|---|---|---|---|
| Monthly events | 20M | Custom | Custom |
| Warehouse connectors | - | Limited | All |
| API rate limits | 60/hour | 400/hour | Custom |
| Data retention | 1 year | 5+ years | 7+ years |
| Cohort sync destinations | Limited | Standard | All + custom |
| Group analytics | - | Yes | Yes |
| Premium integrations | - | Yes | Yes + dedicated |
Implementation Playbooks
Salesforce Integration Setup
Connect Mixpanel with Salesforce for closed-loop attribution and lead enrichment:
Prerequisites
- Salesforce Professional or higher
- Mixpanel Growth or Enterprise plan
- Admin access to both platforms
Configuration Steps
- In Mixpanel, navigate to Project Settings > Integrations > Salesforce
- Click "Connect" and authorize Salesforce OAuth
- Map Mixpanel user properties to Salesforce fields
- Configure sync direction and frequency
- Select Salesforce objects (Leads, Contacts, Opportunities)
- Enable and test sync
Field Mapping Configuration
// Mixpanel user identification for Salesforce sync
mixpanel.identify('user_12345');
mixpanel.people.set({
'$email': 'user@example.com',
'$name': 'Jane Smith',
'Company': 'Acme Corp',
'Industry': 'Technology',
'Product_Qualified_Lead': true,
'Engagement_Score': 85,
'Trial_Stage': 'Active',
'Features_Adopted': 12,
'Last_Active': new Date().toISOString()
});
// These properties sync to Salesforce custom fields
// Lead__Engagement_Score__c, Lead__PQL__c, etc.
Automated Lead Scoring
// Track product engagement events for lead scoring
mixpanel.track('Feature Used', {
'Feature Name': 'Advanced Analytics',
'Usage Count': 15,
'First Time': false,
'Plan Type': 'Trial'
});
mixpanel.track('Key Action Completed', {
'Action': 'Invited Team Member',
'Team Size': 5
});
// Mixpanel calculates engagement score
// Syncs to Salesforce Lead_Score__c field
Bi-Directional Sync
Map Salesforce fields back to Mixpanel for analysis:
| Salesforce Field | Mixpanel Property | Sync Direction |
|---|---|---|
| Bidirectional | ||
| Lead Status | SF_Lead_Status | SF → Mixpanel |
| Opportunity Amount | SF_Opportunity_Value | SF → Mixpanel |
| Account Owner | SF_Account_Owner | SF → Mixpanel |
| Last Modified Date | SF_Last_Modified | SF → Mixpanel |
BigQuery Export Configuration
Stream Mixpanel events to BigQuery for advanced SQL analysis:
Setup Process
- Create Google Cloud Platform project
- Enable BigQuery API and create dataset
- Create service account with BigQuery Data Editor role
- In Mixpanel, navigate to Project Settings > Data & Privacy > Export Data
- Select BigQuery as export destination
- Upload service account credentials JSON
- Configure export schedule and event filters
- Test and enable export
Export Options
- Real-time streaming - Events appear within minutes (Enterprise only)
- Daily batch - Complete daily export by 9 AM UTC
- Event filtering - Export specific events only
- Property selection - Choose which properties to export
BigQuery Schema
-- Mixpanel events table schema
CREATE TABLE mixpanel.events (
event_name STRING,
time TIMESTAMP,
distinct_id STRING,
insert_id STRING,
mp_processing_time_ms INT64,
event_properties JSON,
user_properties JSON
)
PARTITION BY DATE(time)
CLUSTER BY event_name, distinct_id;
-- Query: User funnel analysis
WITH funnel_events AS (
SELECT
distinct_id,
COUNTIF(event_name = 'Signup Started') as signup_started,
COUNTIF(event_name = 'Email Verified') as email_verified,
COUNTIF(event_name = 'Profile Completed') as profile_completed,
COUNTIF(event_name = 'First Purchase') as first_purchase
FROM
mixpanel.events
WHERE
DATE(time) >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
GROUP BY
distinct_id
)
SELECT
COUNTIF(signup_started > 0) as step1_signup,
COUNTIF(email_verified > 0) as step2_verified,
COUNTIF(profile_completed > 0) as step3_completed,
COUNTIF(first_purchase > 0) as step4_purchased,
ROUND(COUNTIF(email_verified > 0) / COUNTIF(signup_started > 0) * 100, 2) as signup_to_verified_rate,
ROUND(COUNTIF(first_purchase > 0) / COUNTIF(profile_completed > 0) * 100, 2) as completed_to_purchase_rate
FROM
funnel_events
WHERE
signup_started > 0;
-- Query: Retention cohort analysis
SELECT
DATE_TRUNC(DATE(first_seen), WEEK) as cohort_week,
COUNT(DISTINCT distinct_id) as cohort_size,
COUNTIF(DATE_DIFF(DATE(last_seen), DATE(first_seen), DAY) >= 7) as retained_day_7,
COUNTIF(DATE_DIFF(DATE(last_seen), DATE(first_seen), DAY) >= 30) as retained_day_30,
ROUND(COUNTIF(DATE_DIFF(DATE(last_seen), DATE(first_seen), DAY) >= 7) / COUNT(DISTINCT distinct_id) * 100, 2) as retention_rate_7d,
ROUND(COUNTIF(DATE_DIFF(DATE(last_seen), DATE(first_seen), DAY) >= 30) / COUNT(DISTINCT distinct_id) * 100, 2) as retention_rate_30d
FROM (
SELECT
distinct_id,
MIN(time) as first_seen,
MAX(time) as last_seen
FROM
mixpanel.events
WHERE
DATE(time) >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY)
GROUP BY
distinct_id
)
GROUP BY
cohort_week
ORDER BY
cohort_week DESC;
Braze Integration for Messaging
Sync Mixpanel cohorts to Braze for targeted messaging campaigns:
Setup Steps
- In Mixpanel, navigate to Project Settings > Integrations > Braze
- Enter Braze API credentials (REST API URL and API Key)
- Create cohorts in Mixpanel based on user behavior
- Enable cohort sync to Braze
- Access synced cohorts in Braze for campaign targeting
Cohort Creation Examples
// Define behavioral cohorts in Mixpanel
// Example 1: Power users for upsell
// Criteria:
// - Last active within 7 days
// - Feature usage > 50 events in 30 days
// - Plan type = Free
// Example 2: At-risk users for re-engagement
// Criteria:
// - Last active 14-30 days ago
// - Previous active user (30+ sessions)
// - No activity in last 2 weeks
// Example 3: Onboarding incomplete
// Criteria:
// - Signed up within 7 days
// - Email verified = true
// - Profile completion < 50%
// - Key action not completed
Real-Time Messaging Triggers
// Track events that trigger Braze messages
mixpanel.track('Cart Abandoned', {
'Cart Value': 125.50,
'Items Count': 3,
'Abandonment Reason': 'Checkout Started'
});
mixpanel.people.set({
'Cart_Abandoned': true,
'Cart_Value': 125.50,
'Abandon_Timestamp': Date.now()
});
// Braze receives cohort update
// Triggers automated email campaign
Data Activation
Audience Segmentation & Targeting
Leverage Mixpanel's behavioral data for precise audience targeting:
Advanced Segmentation
// Programmatic cohort creation via API
const createCohort = async (cohortData) => {
const response = await fetch('https://mixpanel.com/api/2.0/cohorts/create', {
method: 'POST',
headers: {
'Authorization': 'Basic ' + btoa(API_SECRET + ':'),
'Content-Type': 'application/json'
},
body: JSON.stringify({
cohort_name: 'High Value Cart Abandoners',
filters: {
events: [{
event: 'Add to Cart',
where: {
'cart_value': { '$gt': 100 }
},
time_period: 'last_7_days'
}],
exclusions: [{
event: 'Purchase',
time_period: 'last_7_days'
}]
}
})
});
return response.json();
};
Predictive Cohorts
Use Mixpanel's ML capabilities for predictive segmentation:
| Cohort Type | Prediction | Activation Use Case |
|---|---|---|
| Likely to Convert | Probability of purchase within 7 days | Targeted ads, promotional offers |
| Churn Risk | Probability of churning within 30 days | Re-engagement campaigns |
| Upsell Ready | Likelihood of upgrading plan | Sales outreach, feature education |
| High LTV Potential | Predicted lifetime value > threshold | VIP treatment, referral programs |
Personalization & Product Optimization
A/B Test Analysis
// Track experiment exposure and outcomes
mixpanel.track('Experiment Viewed', {
'Experiment Name': 'Homepage Hero Redesign',
'Variant': 'Control',
'Session ID': session_id
});
mixpanel.track('Experiment Converted', {
'Experiment Name': 'Homepage Hero Redesign',
'Variant': 'Control',
'Conversion Type': 'Signup',
'Session ID': session_id
});
// Analyze in Mixpanel or export to BigQuery for advanced stats
Feature Flag Analytics
Integrate with LaunchDarkly or Split.io for feature rollout analysis:
// Track feature flag exposure
const featureFlag = launchDarkly.variation('new-checkout-flow', user, false);
mixpanel.track('Feature Flag Evaluated', {
'Flag Key': 'new-checkout-flow',
'Variation': featureFlag ? 'Treatment' : 'Control',
'User Segment': user.segment
});
// Track feature-specific outcomes
if (featureFlag) {
mixpanel.track('New Checkout Started', {
'Feature Flag': 'new-checkout-flow'
});
}
Marketing Attribution
Multi-Touch Attribution
// Track campaign touchpoints
mixpanel.track('Campaign Touchpoint', {
'Campaign Name': 'Summer Sale 2025',
'Channel': 'Email',
'Medium': 'Newsletter',
'Campaign ID': 'camp_12345',
'Touchpoint Position': 2 // Second touchpoint in journey
});
mixpanel.track('Purchase', {
'Revenue': 149.99,
'Attribution Campaign': 'Summer Sale 2025',
'Attribution Channel': 'Email',
'Touchpoints Count': 4
});
// Analyze attribution in Mixpanel's Impact report
UTM Parameter Tracking
// Automatically capture UTM parameters
mixpanel.track_pageview({
'utm_source': getQueryParam('utm_source'),
'utm_medium': getQueryParam('utm_medium'),
'utm_campaign': getQueryParam('utm_campaign'),
'utm_content': getQueryParam('utm_content'),
'utm_term': getQueryParam('utm_term')
});
// Set as user properties for attribution
mixpanel.people.set_once({
'$initial_utm_source': getQueryParam('utm_source'),
'$initial_utm_medium': getQueryParam('utm_medium'),
'$initial_utm_campaign': getQueryParam('utm_campaign')
});
Data Sync Schedules & Ownership
Integration Refresh Cadences
| Integration | Sync Frequency | Latency | Direction | Notes |
|---|---|---|---|---|
| Salesforce | 15-60 minutes | Near real-time | Bidirectional | Configurable by plan |
| BigQuery Export | Streaming/Daily | under 5 min / 24 hours | Mixpanel → BQ | Streaming = Enterprise only |
| Braze Cohorts | Hourly | ~1 hour | Mixpanel → Braze | Automatic updates |
| Segment | Real-time | under 30 seconds | Bidirectional | Event streaming |
| Google Ads | Daily | 24 hours | Mixpanel → Ads | Audience sync |
| Webhook Events | Real-time | under 1 minute | Mixpanel → Endpoint | Custom integrations |
Team Responsibilities
- Product Team - Event tracking schema, feature analytics, funnel optimization
- Marketing Team - Campaign attribution, cohort creation, A/B testing
- Data Team - Warehouse integration, SQL analysis, data modeling
- Engineering Team - SDK implementation, API integrations, data quality
- Growth Team - Activation metrics, retention analysis, monetization funnels
Compliance & Security
Privacy & Data Governance
// Implement consent management
if (userConsent.analytics) {
mixpanel.init('YOUR_PROJECT_TOKEN', {
opt_out_tracking_by_default: false
});
} else {
mixpanel.opt_out_tracking();
}
// Handle data deletion requests
const deleteUserData = async (distinctId) => {
const response = await fetch(`https://mixpanel.com/api/2.0/engage?data=${encodeURIComponent(JSON.stringify({
'$delete': distinctId,
'$token': PROJECT_TOKEN,
'$ignore_time': true
}))}`);
return response.json();
};
// Export user data (right to access)
const exportUserData = async (distinctId) => {
const response = await fetch(`https://mixpanel.com/api/2.0/engage?where=properties["$distinct_id"]=="${distinctId}"`, {
headers: {
'Authorization': 'Basic ' + btoa(API_SECRET + ':')
}
});
return response.json();
};
PII Management
// RECOMMENDED: Hash or use opaque identifiers
mixpanel.identify('user_8a7d9f23c1b4e5f6');
// AVOID: Using PII as distinct_id
// DON'T DO THIS:
// mixpanel.identify('user@example.com'); // Email as ID - avoid
// Safe property tracking
mixpanel.people.set({
'Account Type': 'Enterprise',
'Plan Level': 'Pro',
'Industry': 'Technology',
'Company Size': '100-500',
'Region': 'North America'
});
// NEVER track sensitive data
// DON'T DO THIS:
// mixpanel.track('Payment Made', {
// 'credit_card': '4111-1111-1111-1111', // NEVER
// 'ssn': '123-45-6789' // NEVER
// });
Data Residency
Mixpanel offers EU data residency for GDPR compliance:
- EU Data Residency option (Enterprise plan)
- Data stored in Frankfurt, Germany
- Separate API endpoints for EU projects
- Compliance with EU data protection regulations
Access Control & Security
Role-Based Permissions
- Owner - Full project access, billing, user management
- Admin - All features except billing and user roles
- Member - Standard analytics access, limited admin functions
- Consumer - View-only access to reports and dashboards
API Authentication
# Python SDK with secure token management
import mixpanel
import os
# Load token from environment variable
mp = mixpanel.Mixpanel(os.environ.get('MIXPANEL_TOKEN'))
# Track events server-side
mp.track('user_12345', 'Signup Completed', {
'source': 'web',
'plan': 'pro'
})
# Update user profiles
mp.people_set('user_12345', {
'$email': 'user@example.com',
'Plan': 'Pro',
'Signup Date': '2025-12-26'
})
Service Account Best Practices
# Secure credential storage
# Use environment variables
export MIXPANEL_TOKEN="your_project_token"
export MIXPANEL_API_SECRET="your_api_secret"
# Rotate credentials quarterly
# Document in security runbook
# Monitor API usage for anomalies
Integration Security
Webhook Signatures
// Verify Mixpanel webhook signatures
const crypto = require('crypto');
function verifyWebhookSignature(payload, signature, secret) {
const expectedSignature = crypto
.createHmac('sha256', secret)
.update(JSON.stringify(payload))
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expectedSignature)
);
}
// Validate incoming webhooks
app.post('/mixpanel-webhook', (req, res) => {
const signature = req.headers['x-mixpanel-signature'];
if (!verifyWebhookSignature(req.body, signature, WEBHOOK_SECRET)) {
return res.status(401).send('Invalid signature');
}
// Process webhook
processWebhookData(req.body);
res.status(200).send('OK');
});
Backlog & Opportunities
Requested Integrations
High Priority
- Snowflake Reverse ETL - Import warehouse data to Mixpanel for enrichment (Engineering: 3 weeks, High impact)
- Microsoft Dynamics 365 - CRM integration for enterprise clients (Engineering: 5 weeks, Medium impact)
- Klaviyo Integration - E-commerce email personalization (Engineering: 2 weeks, High impact)
Medium Priority
- Notion API - Documentation and knowledge base analytics (Engineering: 2 weeks, Low impact)
- Airtable Sync - Workflow and project tracking (Engineering: 2 weeks, Low impact)
- Discord Webhooks - Community engagement alerts (Engineering: 1 week, Low impact)
Exploration Phase
- Reverse ETL Platforms - Hightouch, Census native connectors
- Customer Success - Gainsight, ChurnZero, Totango integration
- Data Observability - Monte Carlo, Datafold quality monitoring
Technical Improvements
API Enhancements
- GraphQL API for flexible querying
- Webhook retry logic with exponential backoff
- Bulk event import optimization (>2000 events/request)
- Real-time cohort calculation API
Export Performance
- Incremental BigQuery export to reduce costs
- Compressed event export formats (Parquet, Avro)
- Partition-aware export for large datasets
- Query result caching for common analyses
Feature Requests
Track and prioritize integration enhancement requests:
| Request | Description | Effort | Impact | Status |
|---|---|---|---|---|
| Real-time Cohort Streaming | Instant cohort updates via webhooks | 4 weeks | High | In Review |
| Custom Object Sync (SFDC) | Support for custom Salesforce objects | 3 weeks | Medium | Backlog |
| Multi-Project Cohorts | Share cohorts across projects | 2 weeks | Medium | Planning |
| Advanced Funnel API | Programmatic funnel creation | 3 weeks | Medium | Backlog |
| ML Model Integration | Export data for custom ML models | 5 weeks | High | Research |