daikazu / laravel-ga4-event-tracking
Laravel 包,用于轻松将事件发送到 Google Analytics 4
Requires
- guzzlehttp/guzzle: ^7.5
- illuminate/support: ~9
Requires (Dev)
- orchestra/testbench: ^7.0
- phpunit/phpunit: ^9.5
README
一个 Laravel 包,用于使用 Google Analytics 4 的测量协议。
安装
- 使用 Composer 安装包
composer require daikazu/laravel-ga4-event-tracking
-
在您的 .env 文件中设置
MEASUREMENT_ID
和MEASUREMENT_PROTOCOL_API_SECRET
。您可以从以下位置找到这些信息:Google Analytics > 管理 > 数据流 > [选择网站] > 测量协议 API 密钥 -
可选:您可以通过在终端/命令提示符中运行此命令来发布配置文件
php artisan vendor:publish --tag=ga4-event-tracking.config
client_id
是将事件发布到 Google Analytics 的必要条件。此包提供了一个 Blade 指令,您可以将它放在布局文件中 Google Analytics 跟踪代码之后。它向后端发送 POST 请求以将客户端 ID 存储在会话中,该会话随后用于将事件发布到 Google Analytics 4。
<!-- Google Analytics Code --> @sendClientID <!-- </head> -->
另一种选择是在每次调用 sendEvent()
方法之前在 GA4
门面上调用的 setClientId($clientId)
方法。
用法
此包提供了两种将事件发送到 Google Analytics 4 的方法。
直接发送事件与在您的后端任何位置调用 GA4
门面的 sendEvent($eventData)
方法并将事件发布到 Google Analytics 4 一样简单。`$eventData` 包含事件的名称和参数,如此参考页面所示。例如
GA4::sendEvent([ 'name' => 'login', 'params' => [ 'method' => 'Google', ], ]);
sendEvent()
方法将返回包含请求状态的数组。
将 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 而不是使用问题跟踪器。
鸣谢
许可证
麻省理工学院。请参阅许可文件获取更多信息。