daikazu/laravel-ga4-event-tracking

Laravel 包,用于轻松将事件发送到 Google Analytics 4

dev-main 2023-12-15 00:17 UTC

This package is auto-updated.

Last update: 2024-09-15 02:06:29 UTC


README

一个 Laravel 包,用于使用 Google Analytics 4 的测量协议

安装

  1. 使用 Composer 安装包
composer require daikazu/laravel-ga4-event-tracking
  1. 在您的 .env 文件中设置 MEASUREMENT_IDMEASUREMENT_PROTOCOL_API_SECRET。您可以从以下位置找到这些信息:Google Analytics > 管理 > 数据流 > [选择网站] > 测量协议 API 密钥

  2. 可选:您可以通过在终端/命令提示符中运行此命令来发布配置文件

php artisan vendor:publish --tag=ga4-event-tracking.config
  1. client_id 是将事件发布到 Google Analytics 的必要条件。此包提供了一个 Blade 指令,您可以将它放在布局文件中 Google Analytics 跟踪代码之后。它向后端发送 POST 请求以将客户端 ID 存储在会话中,该会话随后用于将事件发布到 Google Analytics 4。
<!-- Google Analytics Code -->
@sendClientID
<!-- </head> -->

另一种选择是在每次调用 sendEvent() 方法之前在 GA4 门面上调用的 setClientId($clientId) 方法。

用法

此包提供了两种将事件发送到 Google Analytics 4 的方法。

  1. 直接发送

直接发送事件与在您的后端任何位置调用 GA4 门面的 sendEvent($eventData) 方法并将事件发布到 Google Analytics 4 一样简单。`$eventData` 包含事件的名称和参数,如此参考页面所示。例如

GA4::sendEvent([
    'name' => 'login',
    'params' => [
        'method' => 'Google',
    ],
]);

sendEvent() 方法将返回包含请求状态的数组。

  1. 通过 Laravel 事件系统将事件广播到 Google Analytics 4

ShouldBroadcastToAnalytics 接口添加到您的事件,您就准备好了!您无需手动绑定任何监听器。

<?php
namespace App\Events;

use App\Order;
use Daikazu\GA4EventTracking\ShouldBroadcastToAnalytics;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

class OrderWasCreated implements ShouldBroadcastToAnalytics
{
    use Dispatchable, SerializesModels;
    public $order;
    public function __construct(Order $order)
    {
        $this->order = $order;
    }
}

还有两个附加方法,可以让您自定义对 Google Analytics 4 的调用。

使用 broadcastGA4EventAs 方法,您可以自定义 事件操作 的名称。默认情况下,我们使用没有命名空间类名的类名。此方法为您提供对底层 GA4 类的访问。

使用 withGA4Parameters 方法,您可以设置 GA4 事件的参数。

<?php
namespace App\Events;
use App\Order;
use Daikazu\GA4EventTracking\ShouldBroadcastToAnalytics;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

class OrderWasCreated implements ShouldBroadcastToAnalytics
{
    use Dispatchable, SerializesModels;
    public $order;
    public function __construct(Order $order)
    {
        $this->order = $order;
    }
    
    public function withGA4Parameters(GA4 $ga4){
        return [
            'method' => 'order_form',
            'value' => $this->order->sum_in_cents / 100
        ];
    }


    public function broadcastGA4EventAs(GA4 $ga4)
    {
        return 'CustomEventAction';
    }

}

处理框架和第三方事件

如果您想处理无法添加 ShouldBroadcastToAnalytics 接口的事件,您可以使用 DispatchAnalyticsJob 监听器手动在 EventServiceProvider 中注册它们。

<?php
namespace App\Providers;

use Daikazu\GA4EventTracking\Listeners\DispatchAnalyticsJob;
use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider

{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,
            DispatchAnalyticsJob::class,
        ],
    ];
}

调试模式

您还可以通过在调用 sendEvent() 方法之前调用 enableDebugging() 方法来启用 调试模式。如下所示 - GA4::enableDebugging()->sendEvent($eventData)。在这种情况下,sendEvent() 方法将返回来自 Google Analytics 请求的响应(数组)。

变更日志

有关最近更改的更多信息,请参阅 changelog

测试

$ composer test

贡献

有关详细信息和使用 to-do 列表,请参阅 contributing.md

安全

如果您发现任何与安全相关的问题,请通过电子邮件 daikazu@gmail.com 而不是使用问题跟踪器。

鸣谢

许可证

麻省理工学院。请参阅许可文件获取更多信息。