label84/ laravel-tagmanager
将Google Tag Manager轻松添加到您的Laravel应用程序中。
Requires
- illuminate/support: ^10.0|^11.0
Requires (Dev)
- larastan/larastan: ^2.0
- orchestra/testbench: ^8.0|^9.0
README
将Google Tag Manager轻松添加到您的Laravel应用程序中。包括对UserID、电子商务和服务器端事件(测量协议)的支持。
Laravel支持
安装
阅读Medium.com上的文章,获取更详细的说明:Medium:使用Google Tag Manager将Google Analytics添加到您的Laravel应用程序中。
1. 安装包
安装包
composer require label84/laravel-tagmanager
2. 将头部和主体标签添加到您的(布局)视图中
直接在</head>标签上方添加头部标签,并在<body>标签下方添加主体标签。
<x-tagmanager-head /> </head> <body> <x-tagmanager-body />
3. 将TagManagerMiddleware添加到您的Kernel中
在您的“web”中间件组中,将TagManagerMiddleware直接添加到StartSession中间件之后。
// app/Http/Kernel.php protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, ... \Illuminate\Session\Middleware\StartSession::class, \Label84\TagManager\Http\Middleware\TagManagerMiddleware::class, ...
4. 发布配置文件
发布配置文件。这将生成config目录中的tagmanager.php文件。
php artisan vendor:publish --provider="Label84\TagManager\TagManagerServiceProvider" --tag="config"
5. 将您的GTM ID添加到.env
// .env GOOGLE_TAG_MANAGER_ID=GTM-XXXXXX GOOGLE_TAG_MANAGER_ENABLED=true
访问https://tagmanager.google.com
并复制账户的“容器ID”(看起来像GTM-XXXXXXX)。
使用
use Label84\TagManager\Facades\TagManager; TagManager::push(['foo' => 'bar']);
事件
您还可以使用以下方法。这些方法将自动设置正确的事件键和值。
use Label84\TagManager\Facades\TagManager; TagManager::event('kissed', ['status' => 'failed', 'count' => 0]); TagManager::login(['foo' => 'bar']); TagManager::register(['foo' => 'bar']);
您可以在以下位置找到推荐事件的列表:https://support.google.com/analytics/answer/9267735?hl=en
UserID
此包还支持UserID功能。
要开始使用UserID功能,您需要在“web”中间件组中直接将TagManagerUserIdMiddleware添加到TagManagerMiddleware之后。
// app/Http/Kernel.php protected $middlewareGroups = [ 'web' => [ ... \Label84\TagManager\Http\Middleware\TagManagerMiddleware::class, \Label84\TagManager\Http\Middleware\TagManagerUserIdMiddleware::class, ...
默认情况下将使用User模型的'id'。您可以在config/tagmanager.php中更改键。
更多信息:https://developers.google.com/analytics/devguides/collection/ga4/user-id?technology=tagmanager
电子商务(GA4)
您可以使用以下片段触发Google Analytics 4(GA4)的电子商务事件。
电子商务商品
TagManagerItem
类允许您轻松创建电子商务商品。您可以使用动态调用设置额外的参数。方法名用作键,并自动转换为下划线形式。
use Label84\TagManager\TagManagerItem; new TagManagerItem(string $id, string $name, float $price, float $quantity);
示例:创建项目
use Label84\TagManager\TagManagerItem; $item1 = new TagManagerItem('12345', 'Triblend Android T-Shirt', 15.25, 1); $item1->itemBrand('Google') // will add the item parameter { item_brand: 'Google' } ->itemCategory('Apparel') // will add the item parameter { item_category: 'Apparel' } ->itemVariant('Gray'); // will add the item parameter { item_variant: 'Gray' }
电子商务事件
项目参数可以是一个TagManagerItem
项目或一个TagManagerItem
项目的数组。如果您不想使用TagManagerItem类,也可以使用普通的数组。
use Label84\TagManager\Facades\TagManager; // Product views and interactions TagManager::viewItemList($items); TagManager::viewItem($items); TagManager::selectItem($items); // Promotion views and interactions TagManager::viewPromotion($items); TagManager::selectPromotion($items); // Pre-purchase interactions TagManager::addToWishList(string $currency, float $value, $items); TagManager::addToCart($items); TagManager::removeFromCart($items); TagManager::viewCart(string $currency, float $value, $items); // Purchases, checkouts, and refunds TagManager::beginCheckout($items); TagManager::addPaymentInfo(string $currency, float $value, string $paymentType, $items, string $coupon = ''); TagManager::addShippingInfo(string $currency, float $value, string $shippingTier, $items, string $coupon = ''); TagManager::purchase(string $transactionId, string $affiliation, string $currency, float $value, float $tax, float $shipping, $items, string $coupon = ''); TagManager::refund(string $transactionId, string $affiliation, string $currency, float $value, float $tax, float $shipping, $items, string $coupon = '');
示例:使用项目调用事件
use Label84\TagManager\Facades\TagManager; TagManager::purchase('00001', 'Google', 'EUR', 12.10, 2.10, 0, [ new TagManagerItem('12345', 'Triblend Android T-Shirt', 10.00, 1), ]);
更多信息:https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtm
服务器端事件
Google Analytics测量协议允许开发人员向Google Analytics服务器发送HTTP请求,以将原始用户交互数据直接发送到Google Analytics服务器。这允许开发人员从几乎任何环境中衡量用户如何与其业务互动。然后,开发人员可以使用测量协议来
- 在新环境中衡量用户活动。
- 将线上行为与线下行为关联。
- 从客户端和服务器发送数据。
测量协议
首先需要完成一般安装步骤,例如添加.env
变量,将头部和主体标签添加到布局文件中,并添加TagManagerMiddleware
。
将以下额外变量添加到您的.env文件中。
// .env # Found in the Google Analytics UI under Admin > Data Streams > choose your stream > Measurement ID. The measurement_id isn't your Stream ID. GOOGLE_MEASUREMENT_ID=G-XXXXXX # Found in the Google Analytics UI under Admin > Data Streams > choose your stream > Measurement Protocol API Secrets GOOGLE_MEASUREMENT_PROTOCOL_API_SECRET=XXXXXX
将以下代码片段添加到您的blade布局文件的头部(在现有的x-tagmanager-head
标签下方)。
<x-tagmanager-head /> <x-tagmanager-measurement-protocol-client-id /> </head> <body>
use Label84\TagManager\Facades\MeasurementProtocol; MeasurementProtocol::event('some_event', ['foo' => 'bar']); // Set a specific User-ID for this event (you can customize the key in the config file) MeasurementProtocol::user($someUser)->event('some_event', ['foo' => 'bar']);
您可以直接在Google Analytics的实时 > 事件部分查看事件。
测量协议调试模式
通过调用debug()
方法启用调试模式。这将返回JSON验证响应而不是将请求发送到Google Analytics。如果有任何错误,它们将返回在验证消息响应中。如果没有错误,验证响应数组将为空。
use Label84\TagManager\Facades\MeasurementProtocol; dd( MeasurementProtocol::debug()->event('some_event', ['foo' => 'bar']) );
测试
./vendor/bin/phpstan analyze