Расширенная Google аналитика от Simtechdev

По-данному модулю тем нет, посему предлагаю создать. Модуль https://marketplace.cs-cart.com/google-analitycs-enhanced-ecommerce.html . Единственный модуль на данный момент среди продакшн который поддерживает Google Analytics 4

Мой отзыв. Ранее транзакции в GA передавались через модуль GTM на версии 4.10/ В феврале этого года Симтехдев обновил мне платформу до 4.11.5. GTM перестал передавать транзакции. Подключили “Расширенная Google аналитика от Simtechdev” через 2 недели поняли что разница по транзакциям в сравнения с Я. Метрикой меньше в 1,5 раза. Симтехдев ответили, что модуль доработают и будет все ок. В итоге модуль доработали, но при его активации отключается RetailCrm/
Ответ ТП
“Мы добавили несовместимость между модулями, так как в случае их одновременной работы в аналитику отправляются события в двойном размере (одно от модуля Google Analytics Enhanced Ecommerce, другое от RetailCRM).”
Но у меня нет GA в Rcrm/ Данные из Rcrm отправляются на сайт, где все равно учитываются.
И я не понимаю, когда плачу деньги за продукт , а в итоге получаю неработающий модуль, т.к в таком виде он не нужен от слова совсем.

1 лайк

Дефолтный модуль поддерживает GA4 начиная с версии 4.12.2.
Или вы имеете в виду что-то другое?

почему вы не поддерживаете электронную коммерцию GA внутри компании?

Но вы производите программное обеспечение для электронной коммерции. Вы не следите за электронной коммерцией. очень интересно

– Дефолтный модуль чуть более чем бесполезен. Лучшее что есть на маркеплейсе по аналитике с нормальным прокидыванием события + поддержкой ecommerce это модуль от @simtechdev
– Помотрите что он реализует если хотите иметь дееспособный модуль

1 лайк

У нас на тестировании уже есть модуль, с поддержкой GA4. Если желающие есть попробовать, напишите в личку.

4.11.5

Вообще странно, что не работает GA4 через подключение в GA universal на Cs-cart, хотя подобная операция на других платформах вполне себе передает события, и не нужно ставить код отдельно, сразу работает два ресурса.

подскажите плиз какие он реально преимущества дает, для несведущих
транзакции вроде и стандарная аналитика передает
события считывает, но они уже настроены через гугл Теги?
пытаюсь разбираться, но как то сложно идет…
need help

Я был лучшего мнения об @simtechdev . Купили модуль расширенной коммерции , тема от алексбрендинга unitheme2, в итоге поработав меньше года, модуль создает баг и не позволяет добавить товары для сравнения.

Алексбрендинг сказал обратиться к симтех.

Симтех исправить данный баг несовместимости предлагают за деньги.
Спрашивается , зачем покупал :slight_smile: выбросил просто деньги , ребята из @simtechdev не заботятся о репутации.

5 лайков

Напишите на маркетплейсе отзыв. Они тут не появляются. Может задумаются…
Это вы на последнюю версию модуля обновились и такое вылезло?

2 лайка

так и сделаю

На моем личном опыте, лидеры и тот кто реально заботиться о своих партнерах это ecomlabs, cartpower ну и конечно же на первом месте cs-commerce.

3 лайка

Коллеги, кто юзает этот модуль в странах где есть Google реклама.
И отправляет только ОПЛАЧЕННЫЕ заказы в аналитику.
Чтобы Google не привлекал потом аудитории долбней, которые хотят получить холодильник в зажопинске без предоплаты и аннулируют заказ, когда с них просишь хотя бы 10 баксов предоплаты.

Добавил себе некоторую оптимизацию, чтобы отправлялся timestamp времени заказ, если еще не прошло 72 часа с момента его оформления.
72 часа потому что больше Google не принимает через measurment.
В надежде, что так Google данные понравятся больше, чем когда отправляется событие покупки через пару дней, когда покупатель таки оплатил и менеджер поставил нужный статус заказу.

Т.к. в таком случае для Google это выглядит как будто юзер накидал товаров в корзину, потом исчез на 2 дня и тут хопа заказ! Даже без посещения сайта.

вот в этом файле /app/addons/sd_google_analytics/func.php

заменяем функцию fn_sd_ga_send на вот это
вдруг кому пригодится или кто из знатоков скажет, что год кривой…

function fn_sd_ga_send($accounts, $order_info, $identification_type, $refuse = false, $refund = false, $vendor_accounts = [])
{
    $is_ga4 = fn_sd_ga_is_ga4(Registry::get('addons.sd_google_analytics.tracking_code'));
    if ($order_info) {
        //mymymy Получение временной метки заказа из $order_info
        $timestamp = isset($order_info['timestamp']) ? $order_info['timestamp'] : time();
        $current_time = time();
        $time_difference = $current_time - $timestamp;

        // Проверка прошествия 72 часов с момента оформления заказа
        if ($time_difference > (72 * 3600 - 100)) {
            // Если прошло более 72 часов, отправляем текущее время
            $timestamp = $current_time;
        }
		$timestamp_micros = $timestamp * 1000000;
		
        $cache_buster = ['z' => mt_rand(1, 99999),];
        $required_data = [
            'v' => '1',
            'ti' => $order_info['order_id'],
            'cu' => Registry::get('currencies.' . CART_PRIMARY_CURRENCY . '.currency_code'),
            'tsm' => $timestamp_micros, // Добавлено время заказа или текущее время, если прошло более 72 часов
        ];
        if (empty($order_info['sd_ga_cid'])) {
            $required_data['cid'] = md5($order_info['email']);
            $required_data['ni'] = 1;
        } else {
            $required_data['cid'] = $order_info['sd_ga_cid'];
        }
        $company_name = fn_get_company_name($order_info['company_id']);
        $coupons = isset($order_info['coupons']) ? implode(', ', (array_keys($order_info['coupons']))) : '';
        $sign = ($refuse) ? '-' : '';
        if ($refund) {
            fn_sd_ga_refund($accounts, $order_info, $identification_type, $is_ga4, null, $vendor_accounts);
            if ($is_ga4) {
                return;
            }
        }
        $event = ['t' => 'event', 'ec' => 'Ecommerce', 'ea' => 'purchase',];
        $transaction = [
            'ta' => $company_name,
            'tr' => $sign . $order_info['total'],
            'ts' => $sign . $order_info['shipping_cost'],
            'tt' => $sign . $order_info['tax_subtotal'],
            'tcc' => $coupons,
        ];
        $purchase = ['pa' => ProductActions::PURCHASE,];
        if (!empty($order_info['products'])) {
            list($purchase_data, $ga4_items) = fn_sd_ga_get_transaction_purchase($order_info['products'], $identification_type, $required_data, $sign);
        }
        $purchase = array_merge($purchase, $purchase_data);
        $promotions = empty($order_info['promotions']) ? [] : fn_sd_ga_get_transaction_promotions($order_info['promotions']);
        $data = array_merge($event, $transaction, $purchase, $promotions, $cache_buster);
        $json_params = [
            'client_id' => $required_data['cid'],
			'timestamp_micros' => strval($required_data['tsm']), // Добавлено время заказа или текущее время, если прошло более 72 часов
            'events' => [
                'name' => 'purchase',
                'params' => [
                    'coupon' => $transaction['tcc'],
                    'currency' => $required_data['cu'],
                    'items' => $ga4_items,
                    'transaction_id' => $order_info['order_id'],
                    'shipping' => $transaction['ts'],
                    'tax' => $transaction['tt'],
                    'value' => $transaction['tr'],                
                ],
            ],
        ];
        if ($is_ga4) {
            fn_sd_ga_ga4_post_request($json_params);
        } else {
            fn_sd_ga_request($accounts, $required_data, $data);
        }
        if (!empty($vendor_accounts['sd_ga_tracking_code']) && !empty($vendor_accounts['sd_ga_api_secret'])) {
            fn_sd_ga_ga4_vendors_post_request($vendor_accounts['sd_ga_tracking_code'], $vendor_accounts['sd_ga_api_secret'], $json_params);
        }
    }
}

Вроде работает.

1 лайк