• Stars
    star
    134
  • Rank 270,967 (Top 6 %)
  • Language
    PHP
  • License
    Other
  • Created over 11 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Mixpanel PHP Library Build Status

This library provides an API to track events and update profiles on Mixpanel.

Install with Composer

Add mixpanel/mixpanel-php as a dependency and run composer update

"require": {
    ...
    "mixpanel/mixpanel-php" : "2.*"
    ...
}

Now you can start tracking events and people:

<?php
// import dependencies
require 'vendor/autoload.php';

// get the Mixpanel class instance, replace with your project token
$mp = Mixpanel::getInstance("MIXPANEL_PROJECT_TOKEN");

// track an event
$mp->track("button clicked", array("label" => "sign-up")); 

// create/update a profile for user id 12345
$mp->people->set(12345, array(
    '$first_name'       => "John",
    '$last_name'        => "Doe",
    '$email'            => "[email protected]",
    '$phone'            => "5555555555",
    "Favorite Color"    => "red"
));

Install Manually

  1. Download the Mixpanel PHP Library
  2. Extract the zip file to a directory called "mixpanel-php" in your project root
  3. Now you can start tracking events and people:
<?php
// import Mixpanel
require 'mixpanel-php/lib/Mixpanel.php';

// get the Mixpanel class instance, replace with your project token
$mp = Mixpanel::getInstance("MIXPANEL_PROJECT_TOKEN");

// track an event
$mp->track("button clicked", array("label" => "sign-up"));

// create/update a profile for user id 12345
$mp->people->set(12345, array(
    '$first_name'       => "John",
    '$last_name'        => "Doe",
    '$email'            => "[email protected]",
    '$phone'            => "5555555555",
    "Favorite Color"    => "red"
));

Production Notes

By default, data is sent using ssl over cURL. This works fine when you're tracking a small number of events or aren't concerned with the potentially blocking nature of the PHP cURL calls. However, this isn't very efficient when you're sending hundreds of events (such as in batch processing). Our library comes packaged with an easy way to use a persistent socket connection for much more efficient writes. To enable the persistent socket, simply pass 'consumer' => 'socket' as an entry in the $options array when you instantiate the Mixpanel class. Additionally, you can contribute your own persistence implementation by creating a custom Consumer.

Testing

mixpanel-php uses phpunit as the testing framework. Please ensure that composer is up to date. To run tests, execute composer run-script unit-tests on the root directory.

Documentation

For further examples and options checkout out the "examples" folder

Changelog

Version 2.11.0

  • Fix identify regex for $anon_id
  • Fix PHP 8.2 deprecation warning

Version 2.10.0

  • send millisecond precision timestamps

Version 2.9.0

  • update regex for $anon_id check
  • Group Analytics Support
  • Fix PHP 8.1 deprecation warning
  • PHP 7.4 compatibility

Version 2.8.1

  • Updated $anon_id regex in identify method to support all Mixpanel distinct IDs

Version 2.8.0

  • Added $anon_id parameter to identify method, and a track call when parameter exists and is in UUID v4 format
  • Change parameter names for createAlias method to $distinct_id and $alias
  • Prevent unnecessary call to _encode on non-forked CurlConsumer
  • make sure 'Connection' exists before accessing it

Version 2.7.0:

Version 2.6.2:

  • Added support for $ignore_time
  • Cleaned up some comments to be more clear

Version 2.6.1:

  • Fixed bug in SocketConsumer timeout

Version 2.6:

  • Updated default for connect_timeout in SocketConsumer to be 5

Version 2.5:

  • timeout option now refers to CURLOPT_TIMEOUT instead of CURLOPT_CONNECTTIMEOUT in non-forked cURL calls, it has been removed from the SocketConsumer in favor of a new connect_timeout option.
  • Added a new connect_timeout option for CURLOPT_CONNECTTIMEOUT in non-forked cURL calls (CurlConsumer) and the socket timeout (SocketConsumer)
  • Set default timeout (CURLOPT_TIMEOUT) to 30 seconds in non-forked cURL calls
  • Set default connection timeoute (CURLOPT_CONNECTTIMEOUT) to 5 seconds in non-forked cURL calls
  • We now pass cURL errors from non-forked cURL calls to _handle_error with the curl errno and message

Version 2.4:

  • Fixed a bug where passing the integer 0 for the ip parameter would be ignored

Version 2.1 - 2.3:

  • Broken releases

Version 2.0:

  • Changed the default consumer to be 'curl' (CurlConsumer)
  • Changed the default setting of 'fork' to false in the Curl Consumer. This means that by default, events and profile updates are sent synchronously using the PHP cURL lib when using the Curl Consumer.
  • 'createAlias' uses the CurlConsumer with 'fork' explicitly set to false (as we need this to be synchronous) instead of the SocketConsumer.
  • Fixed bug where max_queue_size was never read

More Repositories

1

mixpanel-iphone

Official iOS (Objective-C) Tracking Library for Mixpanel Analytics
Objective-C
1,027
star
2

mixpanel-android

Official Android Tracking Library for Mixpanel Analytics
Java
1,017
star
3

mixpanel-js

Official Mixpanel JavaScript Client Library
JavaScript
823
star
4

mixpanel-node

A node.js API for mixpanel
JavaScript
463
star
5

mixpanel-swift

Official iOS (Swift) Tracking Library for Mixpanel Analytics
Swift
395
star
6

panel

Web Components + Virtual DOM: web standards for powerful UIs
JavaScript
273
star
7

mixpanel-ruby

Ruby
170
star
8

mixpanel-react-native

Official React Native Tracking Library for Mixpanel Analytics
JavaScript
103
star
9

mixpanel-python

Official Mixpanel Python library.
Python
101
star
10

mixpanel-utils

Python
80
star
11

mixpanel-flutter

Official Flutter Tracking Library for Mixpanel Analytics
Dart
66
star
12

sample-android-mixpanel-integration

Java
55
star
13

tracking-proxy

One-click configuration to proxy tracking requests to Mixpanel's API
Dockerfile
49
star
14

mixpanel-java

Java
48
star
15

mixpanel-unity

Official Unity Tracking Library for Mixpanel Analytics
C#
37
star
16

docs

Mixpanel's Official Documentation
MDX
35
star
17

fuzzbunny

Fast fuzzy string searching/matching/highlighting
JavaScript
19
star
18

panel-farm

Manage cute animals with Web Components and Virtual DOM very wow
JavaScript
10
star
19

snabbdom-jsx-lite

Write snabbdom templates in .jsx or .tsx (JSX for TypeScript)
TypeScript
10
star
20

flask-tracking-proxy

Example Python Flask application to proxy tracking requests to Mixpanel's API
Python
10
star
21

configmanager

A library for adding dynamic configuration to your code
Go
9
star
22

webcomponent

Lightweight utilities for constructing web components
JavaScript
8
star
23

webpack-dev-server-status-bar

Unobtrusive HTML status indicator for Webpack compilation status
JavaScript
7
star
24

mixpanel-gtm-template

A GitHub project created under the Mixpanel organization to store the Mixpanel GTM template
Smarty
6
star
25

obs

Opinionated observability package that combines logging, tracing and metrics.
Go
6
star
26

mixpanel-go

Mixpanel Official Go SK
Go
4
star
27

framesg

request/response communication to/from iframes
JavaScript
4
star
28

sheets

πŸ”„ integrate mixpanel with google sheets
JavaScript
3
star
29

mixpanel-chrome-extension

This extension will inject the Mixpanel library into every page you visit
JavaScript
3
star
30

domsuite

JavaScript browser testing/automation utilities with async/await
JavaScript
2
star
31

mixpanel-js-wrapper

A GitHub project created under the Mixpanel organization to store the Mixpanel JS wrapper
JavaScript
2
star
32

django-prefetch-example

Python
1
star
33

dedupe-chunks-webpack-plugin

(make public later)
JavaScript
1
star