Mixpanel is the classic Analytics tool for event tracking, segmentation, and reporting. After sending Freshpaint data to Mixpanel, you'll be able to analyze the data and produce charts and graphs of your product data.

Getting Started

Follow these steps to set up the Mixpanel integration.
In Mixpanel, go to your Project Settings page and navigate to the Access Keys section to find your Project Token and API Secret:
Next, go to the Mixpanel configuration page in Freshpaint and click Configure. Then, configure the app credentials by copying and pasting your Project Token and API Secret into Freshpaint:
Mixpanel is now ready to be used as an event destination.

Configuration Options

Group Analytics

If you plan on using Mixpanel's Group Analytics feature, you should set up a group key in Mixpanel by clicking Add Group Key and entering in the name of the property you want to use (e.g. company_name). Then, copy the name of the group key you are using into Freshpaint as the Group Identifier Trait.
Learn more about setting Group profiles using the method.
Enable this option if your application has multiple subdomains and you want the Mixpanel cookie to persist across those subdomains. This setting is not enabled by default.

Enable EU Endpoint

When enabled, Freshpaint will send your events to Mixpanel's EU endpoint. In Mixpanel, be sure to enable Data Residency under Project Settings > Set up Mixpanel > Data Residency. Make sure you've followed Mixpanel's help article to set up EU data. This setting is not enabled by default.
Enabling this option will utilize a secure cookie that will only be transmitted over HTTPS. This setting is not enabled by default.

Consolidate Page Calls

This will send a Loaded a Page event to Mixpanel for all page() method calls. The Page call is transformed to Mixpanel events. This setting is not enabled by default.
This option only applies to Freshpaint's client-side SDKs and do not affect events originating from other sources such as React Native, Android, iOS, or when server-side connection mode is enabled.

Ignore DNT

When enabled, Mixpanel will track all events, regardless of if the browser has "Do Not Track" enabled. Learn More About DNT and how it relates to GDPR and CCPA policies. This setting is enabled by default.

Merge Anonymous

This setting merges anonymous users with identified users when a server-side identify call is performed. This setting is enabled by default.

Use Freshpaint ID for Device ID

Enable this setting to make the Mixpanel javascript web SDK use the Freshpaint device ID. This improves data consistency - you'll see the same device id for data streamed from your customers' web browsers as for data backfilled from Freshpaint's servers. This setting is not enabled by default.
Changing this setting for an existing project will break historical data, so only enable this if you're setting up a new Mixpanel project.

Enable Default Identify Transformations

Enable this setting to apply a default set of transformations from Freshpaint User Properties to Mixpanel Properties when making Identify call's.
Freshpaint User Property
Mixpanel Property
Changing this setting for an existing project may leave Mixpanel profiles in an inconsistent state.

Connection Mode Settings

Client-Side Connection Mode

Events user's web browser will be sent directly to Mixpanel. Events from other sources, including mobile and server, will be sent first to Freshpaint's servers and then on to Mixpanel.
When available, geo-location data is appended to an identified user's record in Mixpanel.

Server-Side Connection Mode

All events will be sent to Mixpanel from Freshpaint's servers. Your website will not send data directly to Mixpanel. Instead, your website and all other sources will send data to Freshpaint, which is translated then sent to Mixpanel. As mentioned above, sources such as React Native, Android, and iOS send data server-side.
By default, Freshpaint will provide the IP address of the browser to Mixpanel. You can also provide a custom IP address by providing a $ip property.
Learn more about which connection mode to choose.


It is important to first identify your users so Mixpanel knows who they are and associates events to their user record.
When you call freshpaint.identify, Freshpaint will create or update a user profile in Mixpanel. Any user properties you pass in will be forwarded directly to Mixpanel.
freshpaint.identify("[email protected]", {
/* user properties */
"email": "[email protected]",
"name": "Ada Lovelace",
"role": "mathematician",
"specialty": "computer languages"
By default, any properties set in an Identify call will be passed on as Super Properties in the Mixpanel cookie and in subsequent event properties while using client-side connection mode.
When the Merge Anonymous option is enabled, Freshpaint will send a server-side identify call to Mixpanel using their Create Identify endpoint. To set an anonymous id with an identify call, you can specify a value for the $device_id property.
The alias call can also be used to specify one user id as an alias for another user id. Mixpanel previously requiredaliasto connect anonymous users to identified users. However, Mixpanel has a Project setting named Enable ID Merge to control identity merging that you can read more about here. If it is disabled, you would need to call alias explicitly.


Seeing Freshpaint Events in Mixpanel

Once the Mixpanel integration is enabled, you can now set it as an event destination:
Events sent from Freshpaint to Mixpanel will show up as standard Mixpanel events. From there you can use your events in any of the Mixpanel reports.

UTM Parameters

As Freshpaint's client-side javascript library loads Mixpanel's javascript library in the background, any UTM parameters captured as built-in event properties are passed into Mixpanel as UTM properties.
When using server-side connection mode, UTM parameters will need to be explicitly passed in as an event property, for example:
freshpaint.track("Test Event", {
"UTM Campaign": "testing",
"UTM Source": "testing",
"UTM Medium": "web",
"UTM Term": "testing",
"UTM Content": "testing"

Geo Information

Geo location information is derived from the IP address of the original agent, the web sdk, or embedded sdk. That IP address is then passed through to Mixpanel where it is resolved to a geo location.

Group Analytics

When you call, Freshpaint will create or update a group profile in Mixpanel. Unlike other destinations, Mixpanel supports multiple group keys. That means one user can belong to multiple groups and the group a user is counted towards changes depending on which group key you are using. As an example, for the company_name group key, a user could belong to the group Google, while at the same time for the department_name group key, the user belongs to Software Engineering. Due to Mixpanel's support of multiple groups per user, there are some slight differences when using Mixpanel group compared to other destinations.
Before using Mixpanel Group Analytics, you will need to configure the Group Identifier Trait in Freshpaint. The setting can be found in the configuration options for the Mixpanel integration. The Group Identifier Trait is the name of the group key you want to use. When calling you will need to pass in the group key and the corresponding group id as group properties. As an example, if you are using company_name as your Group Identifier Trait, you'll want to call like so:"Google", {
"company_name": "Google"
Additionally, for events to be attributed to the right group, you'll need to pass in the group key as an event property with the group id as the value. This can be done by using freshpaint.addEventProperties. For this reason, we recommend after calling, you also make a call to freshpaint.addEventProperties with the group key and group id like so:
"company_name": "Google",
"department_name": "Software Engineering"
This will automatically attach the group key and group id to all events going forward.
Last modified 8d ago