canerdogan/laravel-mixpanel

Laravel 5.*的MixPanel包装器

0.7.4 2017-04-13 18:59 UTC

README

功能

  • 异步数据传输到Mixpanel的服务。这可以防止Mixpanel宕机或响应缓慢时对您应用程序的任何延迟。
  • 直接安装和配置到您的Laravel应用中,开箱即用跟踪最常见的活动。
  • 简单的Stripe集成,允许您跟踪用户级别的收入。
  • 前端就绪的Mixpanel JS库,适用于Laravel Elixir包含或Blade模板使用。

要求和兼容性

  • PHP 7
  • Laravel 5.1 (LTS)
  • Laravel 5.3
  • Laravel 5.4 (当前)

旧版本

安装

composer require canerdogan/laravel-mixpanel

config\app.php中添加服务提供者条目

CanErdogan\LaravelMixpanel\Providers\LaravelMixpanelService::class,

验证您的认证配置文件config/auth.php是否在auth.providers.users.model中指定了用户模型(或对于L5.1,在auth.model中)。如果该条目缺失,请添加它。

// Laravel 5.3
'providers' => [
    'users' => [
        'driver' => '...',
        'model' => App\User::class,
    ],

// Laravel 5.1
'model' => App\User::class,

最后,将您的Mixpanel API令牌添加到您的.env文件

MIXPANEL_TOKEN=xxxxxxxxxxxxxxxxxxxxxx

配置

默认值

  • services.mixpanel.token:从您的.env文件中提取'MIXPANEL_TOKEN'值。
  • services.mixpanel.enable-default-tracking:(默认:true) 启用或禁用Laravel用户事件跟踪。
  • services.mixpanel.consumer:(默认:socket) 设置您想要使用的Guzzle适配器。
  • services.mixpanel.connect-timeout:(默认:2) 设置连接超时的秒数。
  • services.mixpanel.timeout:(默认:2) 设置事件跟踪超时的秒数。

升级说明

页面视图

  • 已移除页面视图跟踪,以支持Mixpanel内建的Autotrack功能,该功能跟踪所有页面视图。要启用它,请访问您的Mixpanel仪表板,点击应用程序 > Autotrack > Web > 等。并启用Autotracking。

使用方法

###跟踪

event( new MixpanelEvent( 'Dashboard' ) );

或者

event( new MixpanelEvent( 'Welcome Modal', Auth::user() ) );

或者带参数

event( new MixpanelEvent( 'Send Invitation', ['Status' => 'Done'] ) );

###增加

event( new MixpanelEvent( 'increment', ['Login Count', 1] ) );

PHP事件

Stripe Web-Hook

如果您想利用Stripe Web-Hook并跟踪每个用户的收入,您应该安装Cashier

完成后,在/app/Http/Middleware/VerifyCsrfToken.php中排除Web-Hook端点进行CSRF验证。

    protected $except = [
        'canerdogan/laravel-mixpanel/stripe',
    ];

剩余的步骤是将Web-Hook注册到Stripe:登录您的Stripe帐户:https://dashboard.stripe.com/dashboard,并打开您的帐户设置的Webhook选项卡

输入您的MixPanel Webhook URL,类似于以下内容:http://<your server.com>/canerdogan/laravel-mixpanel/stripescreen shot 2015-05-31 at 1 35 01 pm

如果您正在运行实时版本,请务必选择“Live”(否则将其置于测试模式并在上线时更新)。此外,选择“发送我所有事件”以确保Laravel Mixpanel可以充分利用Stripe数据。

JavaScript事件和Auto-Track

Laravel Elixir

将以下行添加到您的/resources/js/app.js(或等效文件),并不要忘记将YOUR_MIXPANEL_TOKEN替换为您的实际令牌

require('./../../../public/canerdogan-laravel-mixpanel/js/mixpanel.js');
mixpanel.init("YOUR_MIXPANEL_TOKEN");

Blade模板

首先发布必要的资源

php artisan mixpanel:publish --assets

然后将以下内容添加到布局模板的head部分

@include ('canerdogan-laravel-mixpanel::partials.mixpanel')

使用方法

MixPanel作为单例加载到IoC中。这意味着您不需要手动调用$mixPanel::getInstance()(如MixPanel文档中所述)。这已经在ServiceProvider中为您完成了。

常见用户事件会自动记录

  • 用户注册
  • 用户删除
  • 用户登录
  • 用户登录失败
  • 用户注销
  • 收银员已订阅
  • 收银员提交支付信息
  • 收银员订阅计划已更改
  • 收银员已取消订阅

要创建自定义事件,只需使用依赖注入(DI)从IoC中获取MixPanel即可

use CanErdogan\LaravelMixPanel\LaravelMixPanel;

class MyClass
{
    protected $mixPanel;

    public function __construct(LaravelMixPanel $mixPanel)
    {
        $this->mixPanel = $mixPanel;
    }
}

如果在某些情况下DI不可行,您也可以手动从IoC中检索它

$mixPanel = app('mixpanel');

之后,您可以像往常一样调用MixPanel API

  • $mixPanel->identify($user->id);

  • $mixPanel->track('用户刚刚付款!');

  • $mixPanel->people->trackCharge($user->id, '9.99');

  • $mixPanel->people->set($user->id, [$data]);

    以此类推...

Laravel集成

默认情况下,它将记录任何人都想跟踪的常见事件。另外,如果使用Laravel自带的默认$user->name字段,它将把名字分成两部分,将最后一个词作为姓氏,其余部分作为名字。否则,它将在用户表中查找first_namelast_name字段。

  • 用户注册

    Track:
      User:
        - Status: Registered
    People:
      - $first_name: <user's first name>
      - $last_name: <user's last name>
      - $email: <user's email address>
      - $created: <date user registered>
    
  • 用户信息更新

    People:
      - $first_name: <user's first name>
      - $last_name: <user's last name>
      - $email: <user's email address>
      - $created: <date user registered>
    
  • 用户被删除

    Track:
      User:
        - Status: Deactivated
    
  • 用户已恢复(从软删除状态)

    Track:
      User:
        - Status: Reactivated
    
  • 用户登录

    Track:
      Session:
        - Status: Logged In
    People:
      - $first_name: <user's first name>
      - $last_name: <user's last name>
      - $email: <user's email address>
      - $created: <date user registered>
    
  • 用户登录失败

    Track:
      Session:
        - Status: Login Failed
    People:
      - $first_name: <user's first name>
      - $last_name: <user's last name>
      - $email: <user's email address>
      - $created: <date user registered>
    
  • 用户注销

    Track:
      Session:
        - Status: Logged Out
    

Stripe集成(需要测试)

许多L5网站都在使用Cashier来管理他们的订阅。此包创建了一个API webhook端点,该端点将关键的支付分析记录在MixPanel中,以帮助识别客户流失。

默认情况下,它将为您在MixPanel中记录以下Stripe事件

费用

  • 授权费用(当只授权未来某个日期的付款时)

    Track:
      Payment:
        - Status: Authorized
        - Amount: <amount authorized>
    
  • 已捕获的费用(当完成之前已授权的费用时)

    Track:
      Payment:
        - Status: Captured
        - Amount: <amount of payment>
    People TrackCharge: <amount of intended payment>
    
  • 完成费用

    Track:
      Payment:
        - Status: Successful
        - Amount: <amount of payment>
    People TrackCharge: <amount of payment>
    
  • 退款费用

    Track:
      Payment:
        - Status: Refunded
        - Amount: <amount of refund>
    People TrackCharge: -<amount of refund>
    
  • 失败费用

    Track:
      Payment:
        - Status: Failed
        - Amount: <amount of intended payment>
    

订阅

  • 客户已订阅

    Track:
      Subscription:
        - Status: Created
    People:
      - Subscription: <plan name>
    
  • 客户已取消订阅

    Track:
      Subscription:
        - Status: Canceled
        - Upgraded: false
      Churn! :(
    People:
      - Subscription: None
      - Churned: <date canceled>
      - Plan When Churned: <subscribed plan when canceled>
      - Paid Lifetime: <number of days from subscription to cancelation> days
    
  • 客户开始试用

    Track:
      Subscription:
        - Status: Trial
    People:
      - Subscription: Trial
    
  • 客户升级了计划

    Track:
      Subscription:
        - Upgraded: true
      Unchurn! :-)
    People:
      - Subscription: <new plan name>
    
  • 客户降级了计划(基于与之前计划的美元价值比较)

    Track:
      Subscription:
        - Upgraded: false
      Churn! :-(
    People:
      - Subscription: <new plan name>
      - Churned: <date plan was downgraded>
      - Plan When Churned: <plan name prior to downgrading>