【问题标题】:Loading twice WooCommerce thankyou page would duplicate Conversion tracking?加载两次 WooCommerce 感谢页面会重复转换跟踪?
【发布时间】:2021-03-25 12:36:23
【问题描述】:

我在我的 woocommerce 商店的 tankyou 页面中实现了一个自定义脚本来跟踪 google 广告的转化。这是我的实现:

add_action( "woocommerce_thankyou", "pixel_analytics_conversion_track_script", 20 );
if ( ! function_exists( 'pixel_analytics_conversion_track_script' ) ) {
    function pixel_analytics_conversion_track_script( $order_id ) {
        if ( $order_id > 0 ) {
            $order = wc_get_order( $order_id );
            if ( $order instanceof WC_Order ) {
                $order_id               = $order->get_id(); // order id
                $order_key              = $order->get_order_key(); // order key
                $order_total            = $order->get_total(); // order total
                $order_currency         = $order->get_currency(); // order currency
                $order_payment_method   = $order->get_payment_method(); // order payment method
                $order_shipping_country = $order->get_shipping_country(); // order shipping country
                $order_billing_country  = $order->get_billing_country(); // order billing country
                $order_status           = $order->get_status(); // order status
                ?>
                <script type="text/javascript">
                    jQuery(document).ready(function( $ ){
                        console.log('PURCHACE EVENT');
                        /* Track conversion on facebook Pixel */
                        fbq('track', 'Purchase',
                        {
                            value: <?php echo $order_total ?>,
                            currency: "<?php echo $order_currency ?>"
                        });
                    
                        /* Track conversion on Google Ads */
                        gtag('event', 'conversion', 
                        { 
                            'send_to': 'AW-693771414/0MhwCMa9rLYBEJa56MoC', 
                            'value': <?php echo $order_total ?>, 
                            'currency': "<?php echo $order_currency ?>", 
                            'transaction_id': "<?php echo $order_id ?>"
                        });
                    });
                </script>
                <?php
            }
        }
    }
}

代码运行良好,但有些数据不准确,我认为如果用户访问感谢页面两次,上面的代码可能会重复转换。我们有一封订单确认电子邮件,其中包含指向 woocommerce 感谢页面的链接。

如您所见,我正在发送transaction_id 参数,所以我的问题是:

如果用户加载了两次或 N 次感谢页面,即使您发送 transaction_id 参数,转化也会在 Google 广告中显示重复?

【问题讨论】:

    标签: javascript php wordpress woocommerce google-ads-api


    【解决方案1】:

    您可以使用订单自定义元数据来避免重复的转化跟踪,如下所示:

    add_action( "woocommerce_thankyou", "pixel_analytics_conversion_track_script", 20 );
    if ( ! function_exists( 'pixel_analytics_conversion_track_script' ) ) {
        function pixel_analytics_conversion_track_script( $order_id ) {
            // Avoid if pixel analytics conversion track script has been run before
            if ( $order_id > 0 && 'done' !== get_post_meta( $order_id, '_pixel_tracking', true ) ) {
                $order = wc_get_order( $order_id );
                
                if ( is_a($order, 'WC_Order') ) {
                    $order_id               = $order->get_id(); // order id
                    $order_key              = $order->get_order_key(); // order key
                    $order_total            = $order->get_total(); // order total
                    $order_currency         = $order->get_currency(); // order currency
                    $order_payment_method   = $order->get_payment_method(); // order payment method
                    $order_shipping_country = $order->get_shipping_country(); // order shipping country
                    $order_billing_country  = $order->get_billing_country(); // order billing country
                    $order_status           = $order->get_status(); // order status
                    ?>
                    <script type="text/javascript">
                        jQuery(document).ready(function( $ ){
                            console.log('PURCHACE EVENT');
                            /* Track conversion on facebook Pixel */
                            fbq('track', 'Purchase',
                            {
                                value: <?php echo $order_total ?>,
                                currency: "<?php echo $order_currency ?>"
                            });
                        
                            /* Track conversion on Google Ads */
                            gtag('event', 'conversion', 
                            { 
                                'send_to': 'AW-693771414/0MhwCMa9rLYBEJa56MoC', 
                                'value': <?php echo $order_total ?>, 
                                'currency': "<?php echo $order_currency ?>", 
                                'transaction_id': "<?php echo $order_id ?>"
                            });
                        });
                    </script>
                    <?php
                    // Flag the order (with custom meta data) to avoid pixel analytics conversion track script run multiple times.
                    update_post_meta( $order_id, '_pixel_tracking', true );  
                }
            }
        }
    }
    

    代码进入活动子主题(或活动主题)的functions.php 文件中。它应该可以工作。

    【讨论】:

    • 我只是对某事感到好奇,为什么这有必要? if ( ! function_exists( 'pixel_analytics_conversion_track_script' ) ) {
    • @svelandiag 刚刚取自您的代码:它可以确保函数名称 pixel_analytics_conversion_track_script 尚未由插件、您的主题或其他自定义脚本定义,因此没有必要……跨度>
    • 如果你让条件 'done' === get_post_meta( $order_id, '_pixel_tracking', true ) 它永远不会进入。我使用你的版本,它从不跟踪转换,我不得不将 if 语句修改为 get_post_meta( $order_id, '_pixel_tracking', true ) != 'done'
    • @svelandiag Hum 抱歉,更新为 &amp;&amp; 'done' !== get_post_meta( $order_id, '_pixel_tracking', true )... 现在可以正常工作了。
    猜你喜欢
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2021-10-16
    • 2018-07-29
    • 2019-03-05
    相关资源
    最近更新 更多