label84/laravel-tagmanager

将Google Tag Manager轻松添加到您的Laravel应用程序中。

v1.4.0 2024-02-24 19:44 UTC

This package is auto-updated.

Last update: 2024-09-25 20:26:12 UTC


README

Latest Stable Version MIT Licensed Total Downloads

将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

许可证

MIT