Search by

jeffersongoncalves / laravel-mixpanel-api

jeffersongoncalves

Laravel client for the Mixpanel HTTP API: track events, update user profiles, and query insights, funnels, retention, and raw event exports.

Package info

github.com/jeffersongoncalves/laravel-mixpanel-api

pkg:composer/jeffersongoncalves/laravel-mixpanel-api

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.0 2026-09-07 21:44 UTC

This package is auto-updated.

Last update: 2026-09-07 21:45:02 UTC


README

Laravel Mixpanel API

Laravel Mixpanel API

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads License

A Laravel client for Mixpanel's HTTP API: track events, update user profiles, and query insights, funnels, retention and raw event exports through a simple, typed API built on Laravel's Http client.

This is a server-side API client only. If you need the Mixpanel JS SDK / Blade view integration instead, see jeffersongoncalves/laravel-mixpanel.

Features

  • Ingestion: trackEvent, setProfile
  • Query API: queryEvents, getFunnel, getRetention
  • Export API: exportEvents (raw newline-delimited JSON)
  • Throws InvalidArgumentException when required credentials for a call are missing

Installation

You can install the package via composer:

composer require jeffersongoncalves/laravel-mixpanel-api

Publish the config file:

php artisan vendor:publish --tag=mixpanel-api-config

Set your Mixpanel credentials in .env:

MIXPANEL_TOKEN=your-project-token
MIXPANEL_API_KEY=your-api-key
MIXPANEL_SECRET=your-api-secret
MIXPANEL_PROJECT_ID=your-project-id

The project token is used for ingestion (trackEvent, setProfile). The API key, secret and project ID are used for the query/export endpoints (queryEvents, getFunnel, getRetention, exportEvents). Find them under Project Settings > Access Keys.

Configuration

// config/mixpanel-api.php
return [
    'token' => env('MIXPANEL_TOKEN', ''),
    'api_key' => env('MIXPANEL_API_KEY', ''),
    'secret' => env('MIXPANEL_SECRET', ''),
    'project_id' => env('MIXPANEL_PROJECT_ID', ''),
];

Usage

The package is resolved via the MixpanelApi facade or by injecting JeffersonGoncalves\MixpanelApi\MixpanelApi.

Track an event

use JeffersonGoncalves\MixpanelApi\Facades\MixpanelApi;

MixpanelApi::trackEvent('signup', $user->id, [
    'plan' => 'pro',
]);

Update a user profile

MixpanelApi::setProfile($user->id, [
    '$email' => $user->email,
    '$name' => $user->name,
]);

Query events (Insights)

$insights = MixpanelApi::queryEvents('purchase', '2026-08-01', '2026-08-31');

fromDate/toDate default to the last 30 days when omitted.

Get a funnel

$funnel = MixpanelApi::getFunnel('42', '2026-08-01', '2026-08-31');

Get retention data

$retention = MixpanelApi::getRetention('2026-08-01', '2026-08-31', 'signup');

Export raw events

$ndjson = MixpanelApi::exportEvents('2026-08-01', '2026-08-31', 'signup');

foreach (explode(PHP_EOL, trim($ndjson)) as $line) {
    $event = json_decode($line, true);
}

The export endpoint returns newline-delimited JSON (one event per line), not a single JSON document, so the raw response body is returned for the caller to parse.

Error handling

Calling a method without the credentials it requires throws InvalidArgumentException:

try {
    MixpanelApi::trackEvent('signup', $user->id);
} catch (InvalidArgumentException $e) {
    logger()->error($e->getMessage());
}

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Contributions are welcome. Please open an issue or pull request on GitHub.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.