fix: Poprawki dataLayer GA4 — purchase price, format kluczy, fałszywa konwersja GADS

- purchase: id→item_id (string), name→item_name, price fallback na price_brutto gdy brak promo, user_data poza ecommerce
- begin_checkout: id→item_id, name→item_name, dodano google_business_vertical
- Usunięto fałszywą konwersję GADS (gtag conversion) ze strony checkout
- view_item: dodano currency PLN, price jako number zamiast string
- Dodano event view_cart na stronie koszyka
- add_to_cart: quantity parseInt zamiast string

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-25 18:41:19 +01:00
parent 9c2932dad1
commit 6a2bfeb4db
4 changed files with 52 additions and 25 deletions

View File

@@ -33,6 +33,35 @@
</div>
<? endif; ?>
</div>
<? if ( $this -> settings['google_tag_manager_id'] && is_array( $this -> basket ) && count( $this -> basket ) ):?>
<script>
dataLayer.push({
event: "view_cart",
ecommerce: {
currency: "PLN",
value: <?= \Shared\Helpers\Helpers::normalize_decimal( \Domain\Basket\BasketCalculator::summaryPrice( $this -> basket, $this -> coupon ) );?>,
items: [
<?
$view_cart_items = '';
foreach ( $this -> basket as $position_hash => $position ):
$product = (new \Domain\Product\ProductRepository($GLOBALS['mdb']))->findCached( (int)$position['product-id'], $GLOBALS['lang_id'] );
$price_product = \Domain\Basket\BasketCalculator::calculateBasketProductPrice((float)$product['price_brutto_promo'], (float)$product['price_brutto'], $this->coupon, $position);
if ( $view_cart_items ) $view_cart_items .= ',';
$view_cart_items .= '{';
$view_cart_items .= '"item_id": "' . $product['id'] . '",';
$view_cart_items .= '"item_name": "' . $product['language']['name'] . '",';
$view_cart_items .= '"price": ' . \Shared\Helpers\Helpers::normalize_decimal( $price_product['price_new'] ) . ',';
$view_cart_items .= '"quantity": ' . (int)$position['quantity'] . ',';
$view_cart_items .= '"google_business_vertical": "retail"';
$view_cart_items .= '}';
endforeach;
echo $view_cart_items;
?>
]
}
});
</script>
<? endif;?>
<script>
(function(o, r, l, e, n) {
o[l] = o[l] || [];

View File

@@ -73,10 +73,11 @@
$begin_checkout_items .= ',';
$begin_checkout_items .= '{';
$begin_checkout_items .= '"id": "' . $product['id'] . '",';
$begin_checkout_items .= '"name": "' . $product['language']['name'] . '",';
$begin_checkout_items .= '"item_id": "' . $product['id'] . '",';
$begin_checkout_items .= '"item_name": "' . $product['language']['name'] . '",';
$begin_checkout_items .= '"price": ' . \Shared\Helpers\Helpers::normalize_decimal( $price_product['price_new'] ) . ',';
$begin_checkout_items .= '"quantity": ' . $position['quantity'];
$begin_checkout_items .= '"quantity": ' . (int)$position['quantity'] . ',';
$begin_checkout_items .= '"google_business_vertical": "retail"';
$begin_checkout_items .= '}';
?>
<? endforeach;?>
@@ -184,11 +185,5 @@
]
}
});
gtag('event', 'conversion', {
'send_to': 'AW-11122553653/O1ImCNnJ9ecYELXm0rcp',
'value': <?= \Shared\Helpers\Helpers::normalize_decimal( \Domain\Basket\BasketCalculator::summaryPrice( $this -> basket, $this -> coupon ) );?>,
'currency': 'PLN'
});
console.log( 'Fired up event GADS purchase conversion marianek.pl' );
<? endif;?>
</script>

View File

@@ -170,25 +170,27 @@
currency: "PLN",
value: <?= \Shared\Helpers\Helpers::normalize_decimal( round( $this -> order['summary'], 2 ) ) - str_replace( ',', '.', round( $this -> order['transport_cost'], 2 ) );?>,
shipping: <?= \Shared\Helpers\Helpers::normalize_decimal( $this -> order['transport_cost'] );?>,
user_email: "<?= $this -> order['client_email'] ?>",
user_phone: "<?= $this -> order['client_phone'] ?>",
user_name: "<?= $this -> order['client_name'] ?>",
user_surname: "<?= $this -> order['client_surname'] ?>",
user_street: "<?= $this -> order['client_street'] ?>",
user_city: "<?= $this -> order['client_city'] ?>",
user_country: "Polska",
user_postal_code: "<?= $this -> order['client_postal_code'] ?>",
items: [
<? foreach ( $this -> order['products'] as $product ):?>
{
id: <?= (int)$product['product_id'];?>,
name: '<?= $product['name'];?>',
quantity: <?= $product['quantity'];?>,
price: <?= $product['price_brutto_promo'];?>,
item_id: "<?= $product['product_id'];?>",
item_name: '<?= $product['name'];?>',
quantity: <?= (int)$product['quantity'];?>,
price: <?= (float)$product['price_brutto_promo'] > 0 ? \Shared\Helpers\Helpers::normalize_decimal( $product['price_brutto_promo'] ) : \Shared\Helpers\Helpers::normalize_decimal( $product['price_brutto'] );?>,
google_business_vertical: 'retail'
}<? if ( $product != end( $this -> order['products'] ) ) echo ',';?>
<? endforeach;?>
]
},
user_data: {
email: "<?= $this -> order['client_email'] ?>",
phone_number: "<?= $this -> order['client_phone'] ?>",
first_name: "<?= $this -> order['client_name'] ?>",
last_name: "<?= $this -> order['client_surname'] ?>",
street: "<?= $this -> order['client_street'] ?>",
city: "<?= $this -> order['client_city'] ?>",
country: "PL",
postal_code: "<?= $this -> order['client_postal_code'] ?>"
}
});
<? endif;?>

View File

@@ -247,16 +247,17 @@
dataLayer.push({
event: "view_item",
ecommerce: {
currency: "PLN",
value: <? if ( $this -> product['price_brutto_promo'] ): echo \Shared\Helpers\Helpers::normalize_decimal( $this -> product['price_brutto_promo'] ); else: echo \Shared\Helpers\Helpers::normalize_decimal( $this -> product['price_brutto'] ); endif;?>,
items: [
{
item_id: "<?= $this -> product['id'];?>",
item_name: "<?= str_replace( '"', '', $this -> product['language']['name'] );?>",
price: '<? if ( $this -> product['price_brutto_promo'] ): echo \Shared\Helpers\Helpers::normalize_decimal( $this -> product['price_brutto_promo'] ); else: echo \Shared\Helpers\Helpers::normalize_decimal( $this -> product['price_brutto'] ); endif;?>',
price: <? if ( $this -> product['price_brutto_promo'] ): echo \Shared\Helpers\Helpers::normalize_decimal( $this -> product['price_brutto_promo'] ); else: echo \Shared\Helpers\Helpers::normalize_decimal( $this -> product['price_brutto'] ); endif;?>,
quantity: 1,
google_business_vertical: "retail"
}
],
value: <? if ( $this -> product['price_brutto_promo'] ): echo \Shared\Helpers\Helpers::normalize_decimal( $this -> product['price_brutto_promo'] ); else: echo \Shared\Helpers\Helpers::normalize_decimal( $this -> product['price_brutto'] ); endif;?>
]
}
});
<? endif;?>
@@ -573,7 +574,7 @@
item_id: "<?= $this -> product['id'];?>",
item_name: "<?= str_replace( '"', '', $this -> product['language']['name'] );?>",
price: <? if ( $this -> product['price_brutto_promo'] ): echo \Shared\Helpers\Helpers::normalize_decimal( $this -> product['price_brutto_promo'] ); else: echo \Shared\Helpers\Helpers::normalize_decimal( $this -> product['price_brutto'] ); endif;?>,
quantity: quantity,
quantity: parseInt(quantity),
google_business_vertical: "retail"
}
]