genealabs/laravel-mixpanel

为 Laravel 5 提供的 MixPanel 包装器。

11.0.1 2024-05-21 14:44 UTC

README

Scrutinizer Coveralls GitHub (pre-)release Packagist GitHub license

Mixpanel for Laravel masthead image.

赞助商

我们感谢以下赞助商的慷慨捐赠。请花点时间了解他们。

特性

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

要求和兼容性

  • PHP >= 7.2
  • Laravel >= 8.0

旧版本

安装

  1. 安装包
    composer require genealabs/laravel-mixpanel
  2. 将您的 Mixpanel API 令牌添加到您的 .env 文件中
    MIXPANEL_TOKEN=xxxxxxxxxxxxxxxxxxxxxx
  3. 如果需要更改 MixPanel 主机,请添加 MixPanel 主机域名
    MIXPANEL_HOST=xxxxxxxxxxxxxxxxxxxxxx

配置

默认值

  • services.mixpanel.host: 从您的 .env 文件中提取 'MIXPANEL_HOST' 值。
  • 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) 设置事件跟踪超时后的秒数。
  • services.mixpanel.data_callback_class: (默认: null) 操作传递给 Mixpanel 的跟踪事件的返回数据。

升级说明

版本 0.7.0 for Laravel 5.5

  • /config/app.php 中删除服务提供者。现在在 Laravel 5.5 中自动发现服务提供者。

页面视图

  • 已删除页面视图跟踪,以支持 Mixpanel 内置的 Autotrack 功能,该功能跟踪所有页面视图。要启用它,请访问您的 Mixpanel 控制台,点击 应用程序 > Autotrack > Web > 等。 并启用自动跟踪。

使用方法

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

常见的用户事件会自动记录

  • 用户注册
  • 用户删除
  • 用户登录
  • 用户登录失败
  • 用户登出
  • Cashier 订阅
  • Cashier 提交支付信息
  • Cashier 订阅计划更改
  • Cashier 取消订阅

要创建自定义事件,只需使用 DI 从 IoC 获取 MixPanel

use GeneaLabs\LaravelMixpanel\LaravelMixpanel;

class MyClass
{
    protected $mixPanel;

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

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

$mixPanel = app('mixpanel'); // using app helper
$mixPanel = Mixpanel::getFacadeRoot(); // using facade

之后,您可以对 MixPanel API 进行常规调用

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

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

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

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

    等等...

    Stripe Web-Hook

    如果您想利用Stripe webhook并追踪每个用户的收入,您应该安装Cashier: https://www.laravel.com/docs/5.5/billing

    完成后,请将webhook端点从/app/Http/Middleware/VerifyCsrfToken.php中的CSRF验证中排除。

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

    剩下的唯一步骤是将webhook注册到Stripe:登录您的Stripe账户: https://dashboard.stripe.com/dashboard,并打开您的账户设置中的webhook标签页

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

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

    JavaScript事件 & 自动跟踪

    Blade模板(推荐)

    首先发布必要的资源

    php artisan mixpanel:publish --assets

    然后将以下内容添加到布局模板的头部(它已经为您调用了init,使用的是.env文件中的token)

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

    Laravel Elixir

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

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

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
    

跟踪数据操作

如果您需要更改或添加正在跟踪的数据,请创建一个实现\GeneaLabs\LaravelMixpanel\Interfaces\DataCallback的类

<?php

namespace App;

use GeneaLabs\LaravelMixpanel\Interfaces\DataCallback;

class MixpanelUserData implements DataCallback
{
    public function process(array $data = []) : array
    {
        $data["test"] = "value";

        return $data;
    }
}

然后在您的services配置中注册此类

    'mixpanel' => [
      // ...
        "data_callback_class" => \App\MixpanelUserData::class,
    ]

Stripe集成

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

默认情况下,它将记录以下Stripe事件到MixPanel:

费用

  • 授权费用(仅当为后续日期的收费进行授权时)

    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>
    

细节说明

对质量的承诺

在包的开发过程中,我尽可能地遵循良好的设计和开发实践,以确保这个包尽可能好。我的包开发清单包括

  • ✅ 使用单元测试尽可能达到接近100%的代码覆盖率。
  • ✅ 消除SensioLabs Insight和Scrutinizer识别的任何问题。
  • ✅ 完全遵循PSR1、PSR2和PSR4。
  • ✅ 在README.md中包含全面的文档。
  • ✅ 提供一个符合http://keepachangelog.com中概述的格式的最新CHANGELOG.md。
  • ✅ 在所有代码中没有任何PHPMD或PHPCS警告。

贡献

请遵守和尊重包含的行为准则的各个方面 https://github.com/GeneaLabs/laravel-model-caching/blob/master/CODE_OF_CONDUCT.md

问题报告

在报告问题时,请尽可能完整地填写包含的模板。如果信息不完整,可能无法采取行动,问题可能会被忽略或关闭。

提交Pull Requests

请查看贡献指南 https://github.com/GeneaLabs/laravel-model-caching/blob/master/CONTRIBUTING.md。只有符合所有标准的Pull Requests才会被接受。

❤️ 开源软件 - 给 ⭐️

我们已将出色的symfony/thanks composer包作为开发依赖项包含在内。通过在使用的包上打星来告知你的操作系统包维护者你对他们表示感谢。(不要担心,由于它是开发依赖项,它不会在你的生产环境中安装。)