Skip to main content

Overview

Now that you have Mixpanel installed and tracking events, here are some tips and tricks to help you get the most out of your implementation.

Implementation Best Practices

1. Track Consistently

Establish naming conventions early. Use consistent patterns like “Noun + Verb” (e.g., “Video Played”) or “Verb + Noun” (e.g., “Played Video”) across all events.
Good Examples:
  • Sign Up
  • Video Played
  • Purchase Completed
  • Search Performed
Avoid:
  • signup (inconsistent casing)
  • video_play (inconsistent format)
  • user-purchased-item (too verbose)

2. Choose the Right Tracking Method

Server-Side Tracking

Best for:
  • Critical business events
  • Payment/transaction tracking
  • Server-side operations
  • Most reliable data

Client-Side Tracking

Best for:
  • User interactions
  • Page views
  • Quick prototyping
  • Session replay data
Recommendation: Use server-side tracking for critical events and client-side for user interactions. Learn more in our choosing the right method guide.

3. Add Meaningful Properties

// Good: Includes context
mixpanel.track('Video Played', {
  'Video Title': 'Product Demo',
  'Video Duration': 120,
  'Video Category': 'Tutorial',
  'Auto Played': false,
  'Video Quality': '1080p'
});

// Less useful: Missing context
mixpanel.track('Video Played');

Privacy and Compliance

Implement Opt-Out Tracking

Respect user privacy by implementing opt-out tracking:
// When user opts out
mixpanel.opt_out_tracking();

// When user opts back in
mixpanel.opt_in_tracking();

// Check if user has opted out
if (mixpanel.has_opted_out_tracking()) {
  // Show appropriate UI
}

Don’t Track Sensitive Data

Never track:
  • Passwords or security credentials
  • Credit card numbers
  • Social security numbers
  • Health information
  • Full IP addresses (unless necessary)

Performance Optimization

1. Use Proxy Servers

Avoid ad-blockers by setting up a proxy:
mixpanel.init('YOUR_TOKEN', {
  api_host: 'https://your-proxy.yourdomain.com'
});
Learn how to set up a proxy

2. Configure Persistence

For web tracking, use localStorage for better reliability:
mixpanel.init('YOUR_TOKEN', {
  persistence: 'localStorage'
});
Note: localStorage doesn’t support cross-subdomain tracking. Use cookies if you need cross-subdomain support.

3. Batch Events on Mobile

Mobile SDKs automatically batch events. You can also manually flush:
// Flush events immediately
Mixpanel.mainInstance().flush()

Testing Your Implementation

1. Enable Debug Mode

mixpanel.init('YOUR_TOKEN', {
  debug: true
});

2. Use Browser Console

Check the browser console for Mixpanel debug output:
// Enable verbose logging
mixpanel.set_config({debug: true});

// Check if initialized
console.log(mixpanel);

// Verify events
mixpanel.track('Test Event');

3. View Live Events

Use the Events page to see events in real-time:
  1. Click “Live View” to see events as they arrive
  2. Filter by your user ID or device
  3. Verify event properties are correct

Advanced Tips

1. Use Super Properties

Set properties that are included with every event:
// Set super properties
mixpanel.register({
  'App Version': '2.5.0',
  'Plan Type': 'Premium',
  'Environment': 'Production'
});

// Now all events include these properties
mixpanel.track('Button Clicked');
// Automatically includes App Version, Plan Type, and Environment

2. Track Timing

Measure how long actions take:
// Start timing
mixpanel.time_event('Video Watched');

// Later, when video ends
mixpanel.track('Video Watched', {
  'Video Title': 'Product Demo'
});
// Automatically includes duration

3. Implement Funnel Tracking

Track complete user journeys:
// Step 1: User views product
mixpanel.track('Product Viewed', {
  'Product ID': '12345',
  'Category': 'Electronics'
});

// Step 2: User adds to cart
mixpanel.track('Add to Cart', {
  'Product ID': '12345',
  'Price': 99.99
});

// Step 3: User completes purchase
mixpanel.track('Purchase Completed', {
  'Product ID': '12345',
  'Revenue': 99.99
});

Common Pitfalls to Avoid

Start with 5-10 critical events. You can always add more later. Tracking everything makes analysis overwhelming and slows down reports.
Use a consistent naming convention from day one. Changing event names later requires code updates and makes historical analysis difficult.
Always call identify() when users log in. Without it, you can’t track user journeys across sessions or devices.
Always test your implementation in a development environment first. Use a separate Mixpanel project for testing.
Mobile SDKs buffer events for battery life. Call .flush() after critical events or use the track_pageview option.

Useful Resources

SDK Documentation

Complete reference for all Mixpanel SDKs

Property Reference

Learn about default and custom properties

Community Forum

Get help from the Mixpanel community

Support

Contact Mixpanel support team

FAQ

Yes, if you pass track_pageview: true in the mixpanel.init() call, Mixpanel will automatically track a “Page View” event every time a new page is loaded. Learn more here.
If tracking from web, make sure you’ve disabled ad blockers and your Do Not Track (DNT) browser settings are set to false when testing your JavaScript implementation. If the DNT setting is set to true, then Mixpanel won’t collect information from that Mixpanel instance. We also recommend setting up a proxy server so that you don’t lose events due to ad-blockers.If tracking from a mobile device, events may take 1-2 minutes to appear because Mixpanel’s mobile SDKs buffer events for 1 minute, or when the app transitions to the background, to conserve battery life and bandwidth. You can call .flush() in the mobile SDKs to manually flush events to Mixpanel.
If a user opts out of tracking, you can call the .optOutTracking() method on any of our client-side SDKs; this prevents any subsequent data being tracked from that user’s device. Learn more here.For iOS specifically: Mixpanel does not use IDFA, so it does not require user permission through the AppTrackingTransparency(ATT) framework. For more details, refer to our Apple App Developer Privacy Guidance.
No, our Mixpanel JavaScript SDK does not set or use any third-party cookies. If you wish to disable cookies entirely, you can set the disable_persistence option to true when initializing your Mixpanel JS instance. Note that disabling persistence will disable the use of super properties and anonymous -> identified user tracking.
If tracking client-side, just call .identify(<user_id>) when a user logs in and .reset() when they log out. Mixpanel will automatically stitch the user journey across logged out and logged in.If tracking server-side, check out our server-side best practices guide. For more information, read our comprehensive guide on Identifying Users.

Build docs developers (and LLMs) love