mixpanel

A simple server-side API for mixpanel

Mixpanel-node

This library provides many of the features in the official JavaScript mixpanel library. It is easy to use, and fully async. It is intended to be used on the server (it is not a client module). The in-browser client library is available at https://github.com/mixpanel/mixpanel-js.

npm install mixpanel
// grab the Mixpanel factory 
var Mixpanel = require('mixpanel');
 
// create an instance of the mixpanel client 
var mixpanel = Mixpanel.init('6fd9434dba686db2d1ab66b4462a3a67');
 
// track an event with optional properties 
mixpanel.track("my event", {
    distinct_id: "some unique client id",
    as: "many",
    properties: "as",
    you: "want"
});
mixpanel.track("played_game");
 
// create or update a user in Mixpanel Engage 
mixpanel.people.set("billybob", {
    $first_name: "Billy",
    $last_name: "Bob",
    $created: (new Date('jan 1 2013')).toISOString(),
    plan: "premium",
    games_played: 1,
    points: 0
});
 
// set a single property on a user 
mixpanel.people.set("billybob", "plan", "free");
 
// increment a numeric property 
mixpanel.people.increment("billybob", "games_played");
 
// increment a numeric property by a different amount 
mixpanel.people.increment("billybob", "points", 15);
 
// increment multiple properties 
mixpanel.people.increment("billybob", {"points": 10, "games_played": 1});
 
// append value to a list 
mixpanel.people.append("billybob", "awards", "Great Player");
 
// append multiple values to a list 
mixpanel.people.append("billybob", {"awards": "Great Player", "levels_finished": "Level 4"});
 
// merge value to a list (ignoring duplicates) 
mixpanel.people.union("billybob", {"browsers": "ie"});
 
// merge multiple values to a list (ignoring duplicates) 
mixpanel.people.union("billybob", {"browsers": ["ie", "chrome"]});
 
 
// record a transaction for revenue analytics 
mixpanel.people.track_charge("billybob", 39.99);
 
// clear a users transaction history 
mixpanel.people.clear_charges("billybob");
 
// delete a user 
mixpanel.people.delete_user("billybob");
 
// Create an alias for an existing distinct id 
mixpanel.alias("distinct_id", "your_alias");
 
// all functions that send data to mixpanel take an optional 
// callback as the last argument 
mixpanel.track("test", function(err) { if (err) throw err; });
 
// import an old event 
var mixpanel_importer = Mixpanel.init('valid mixpanel token', {
    key: "valid api key for project"
});
 
// needs to be in the system once for it to show up in the interface 
mixpanel_importer.track('old event', { gender: '' });
 
mixpanel_importer.import("old event", new Date(2012, 4, 20, 12, 34, 56), {
    distinct_id: 'billybob',
    gender: 'male'
});
 
// import multiple events at once 
mixpanel_importer.import_batch([
    {
        event: 'old event',
        properties: {
            time: new Date(2012, 4, 20, 12, 34, 56),
            distinct_id: 'billybob',
            gender: 'male'
        }
    },
    {
        event: 'another old event',
        properties: {
            time: new Date(2012, 4, 21, 11, 33, 55),
            distinct_id: 'billybob',
            color: 'red'
        }
    }
]);
# in the mixpanel directory
npm install
npm test

Heavily inspired by the original js library copyright Mixpanel, Inc. (http://mixpanel.com/)

Copyright (c) 2014-15 Mixpanel Original Library Copyright (c) 2012-14 Carl Sverre

Contributions from:

Released under the MIT license. See file called LICENSE for more details.