Skip to content

Releases: mixpanel/mixpanel-node

Custom logger support

12 Sep 18:41
Compare
Choose a tag to compare

The library can now be initialized with a logger option to provide custom logging instead of the default console logging:

const bunyan = require(`bunyan`);
const mixpanel = Mixpanel.init(`<YOUR_TOKEN>`, {debug: true, logger: bunyan});

Any logger which implements the interface at https://github.com/mixpanel/mixpanel-node/blob/7f334f1d3f07e1c7783887b8090211614a26d5bc/lib/mixpanel-node.d.ts#L9-L15 will work:

export interface CustomLogger {
  trace(message?: any, ...optionalParams: any[]): void;
  debug(message?: any, ...optionalParams: any[]): void;
  info(message?: any, ...optionalParams: any[]): void;
  warn(message?: any, ...optionalParams: any[]): void;
  error(message?: any, ...optionalParams: any[]): void;
}

Support has also been dropped for the long-deprecated Mixpanel.Client() initializer.

Default to millisecond-precision timestamps

11 Aug 22:29
Compare
Choose a tag to compare

As of this release, time properties set as Date objects will be sent to the Mixpanel API with millisecond precision (instead of being rounded to the second).

Support for geolocation and library version property

02 Jun 22:57
Compare
Choose a tag to compare

The configuration option geolocate can be used to take advantage of Mixpanel's automatic geolocation properties (converting the source IP address into properties for country/region/city). This is generally useful when the NodeJS SDK is used in a client application, such as an Electron app or IoT device; whereas in a server application (e.g. an Express application server), the IP address will be that of the server rather than the user. To turn on geolocation, initialize the library with geolocate: true:

const mixpanel = Mixpanel.init('<YOUR_TOKEN>', {
  geolocate: true,
});

The SDK also now sends the current library version as a property with every event, like Mixpanel's other SDKs.

Use keepAlive by default for request connections

20 May 18:46
Compare
Choose a tag to compare

The library now defaults to using keepAlive (https://nodejs.org/api/http.html#new-agentoptions) so that each request doesn't have to establish a new connection. This should result in better performance and network reliability. If you need to turn this option off, initialize the library with keepAlive: false:

const mixpanel = Mixpanel.init('<YOUR_TOKEN>', {
  keepAlive: false,
});

Support for latitude/longitude in profile operations

29 Oct 19:59
Compare
Choose a tag to compare

Profile update operations set and set_once now support passing latitude/longitude for geolocation (see https://help.mixpanel.com/hc/en-us/articles/115004499343#latitude-and-longitude-based-geolocation). These should be passed in the 'modifiers' object param, e.g.:

mixpanel.people.set('billybob', {
  plan: 'premium',
  games_played: 1,
}, {
  $latitude: 40.7127753,
  $longitude: -74.0059728,
});

Event operations like track() already supported latitude/longitude as regular event properties.

API Secret support for imports

04 Sep 18:28
Compare
Choose a tag to compare

The supported method for authenticating import() calls (for events more than 5 days old) is now via the project's API Secret, passed via the secret config option:

const mixpanel = Mixpanel.init(`<TRACKING TOKEN>`, {secret: `<API SECRET>`});

This will be passed as a HTTP Basic auth header as described in https://developer.mixpanel.com/reference/importing-old-events. It will only be sent over HTTPS (the default protocol); the library will throw an error rather than send the secret over HTTP in plaintext.

The older API "Key" authentication for import will still work, but is now deprecated and may be removed in a future version.

Support for Groups API

26 Nov 23:25
Compare
Choose a tag to compare

This release adds support for Mixpanel Groups, through the mixpanel.groups object, analogous to mixpanel.people. For projects which have groups support enabled, you can send group profile updates via calls such as:

mixpanel.groups.set('company', 'Acme Inc.', {
    'Industry': 'widgets',
    '$name': 'Acme Inc.',
});

mixpanel.groups.remove('company', 'Acme Inc.', {
  'products': 'anvil',
  'customer segments': 'coyotes'
});

mixpanel.groups.delete_group('company', 'Acme Inc.');

// etc

Support for configurable API path

04 Dec 00:56
Compare
Choose a tag to compare

Configure when initializing the instance with the path option:

const mixpanel = Mixpanel.init(`YOUR TOKEN`, {
  host: `sweet-corporate-proxy:6000`,
  path: `/mixpanel`,
});

In the above example, tracking requests will go to https://sweet-corporate-proxy:6000/mixpanel/track.

Dropped Node.js 4 support

13 Nov 18:45
Compare
Choose a tag to compare
v0.10.0

0.10.0

Add type declarations file