interpreting Mixpanel engage table

  • 23 September 2019
  • 1 reply

  • New Participant
  • 0 replies

We are setting up Mixpanel with a Data Studio report, and we currently use Google Big Query with all the data from the mixpanel_engage table.

The problem is that there are many thousands rows more than there are people in our Mixpanel account, where many of the rows are duplicated.

I tried to find some documentation or figure out how exactly this data is stored to understand how we can replicate the data we see in the People - Explore functionality.

Why are there so many rows duplicated - is it that every time a new property gets set, a new row is inserted?

How exactly should we query the data to get the current state of users? Is there some documentation on how the data is stored?

Thank you!

1 reply

Userlevel 1

Hey @alfa, I recently did a user export using their Engage 2.0 query API and it is a lot of info to comb through. I tend to use to make the JSON a look a little more readable.

In regards to having multiple users, I am curious to know which parameter you might have called on your curl request? I believe the parameter include_all_users=false might be a good way to filter out double users. Your request can look something like this

curl \-u APISECRETHERE:-d'include_all_users=include_all_users=False'

Also checking if you do have duplicate users might be a good gut check just incase.

I also wanted to point out that you can also export user data via their API Module. Below I have shared the script I usually use to export people via CSV format + with some steps to help run it.

1. Install the Mixpanel API module on your Machine via Terminal using

pip install mixpanel-api

2. Fill out the 'FILL THIS IN' sections on the script below to be able to run it and save it as a python file.

To find the filter_by_cohort value, you can look at the XHR request of an Explore report that contains the profiles you want to export.

  • This is done by Pressing CMD+option+J on Chrome for macOS > selecting the Network tab > search for the "engage" endpoint in the list of requests.

  • If you are using behaviors in your parameters you must specify a timezone_offset. Your project timezone, api secret, and project token can be found in your Project settings.

from mixpanel_api import Mixpanel

if __name__ == '__main__':

    api_secret = 'FILL THIS IN'
    project_token = 'FILL THIS IN'

m = Mixpanel(api_secret,token=project_token)

filter_by_cohort = 'FILL THIS IN'

parameters = { 'filter_by_cohort' : filter_by_cohort}

m.export_people('people_export.csv',parameters, format='csv',timezone_offset=-8)

3. After filling in the info, all you have to do is run the script in your terminal by doing


Sorry for the overload but I hope it helps!