Skip to content

Commit f41875a

Browse files
authored
Added 'cart_state' to DataLayer (#45)
1 parent b2c6fa7 commit f41875a

14 files changed

+331
-5
lines changed

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
**Tested up to:** 6.7.1
88

9-
**Stable tag:** 2.1.39
9+
**Stable tag:** 2.1.40
1010

1111
**License:** GPLv2 or later
1212

@@ -85,6 +85,9 @@ Yes. Follow this guide: [How to Setup Facebook Conversion API](https://stape.io/
8585
<details>
8686
<summary>Version 2 changelog</summary>
8787

88+
### 2.1.40
89+
- Added "cart_state" to DataLayer
90+
8891
### 2.1.39
8992
- Rename "product" to "accountType"
9093
- Added some cookies to the purchase webhook list

README.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Contributors: gtmserver,bukashk0zzz
33
Tags: google tag manager, google tag manager server side, gtm, gtm server side, tag manager, tagmanager, analytics, google, serverside, server-side, gtag
44
Requires at least: 5.2.0
55
Tested up to: 6.8.0
6-
Stable tag: 2.1.39
6+
Stable tag: 2.1.40
77
License: GPLv2 or later
88
License URI: http://www.gnu.org/licenses/gpl-2.0.html
99

@@ -67,6 +67,9 @@ Yes. <a href="https://stape.io/blog/how-to-set-up-facebook-conversion-api">How t
6767

6868
== Changelog ==
6969

70+
= 2.1.40 =
71+
* Added "cart_state" to DataLayer
72+
7073
= 2.1.39 =
7174
* Rename "product" to "accountType"
7275
* Added some cookies to the purchase webhook list

assets/js/javascript.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,12 @@ var pluginGtmServerSide = {
219219
}
220220
}
221221

222+
if ( 'yes' === varGtmServerSide.is_custom_event_name ) {
223+
this._pushWithStateCartData( eventData );
224+
225+
return;
226+
}
227+
222228
dataLayer.push( { ecommerce: null } );
223229
dataLayer.push( eventData );
224230
},
@@ -407,6 +413,12 @@ var pluginGtmServerSide = {
407413
}
408414
}
409415

416+
if ( 'add_to_cart' === event && 'yes' === varGtmServerSide.is_custom_event_name ) {
417+
this._pushWithStateCartData( eventData );
418+
419+
return;
420+
}
421+
410422
dataLayer.push( { ecommerce: null } );
411423
dataLayer.push( eventData );
412424
},
@@ -422,5 +434,34 @@ var pluginGtmServerSide = {
422434
return event_name + varGtmServerSide.DATA_LAYER_CUSTOM_EVENT_NAME;
423435
}
424436
return event_name;
437+
},
438+
439+
/**
440+
* Push dataLayer with state cart data.
441+
*
442+
* @param object eventData eventData object.
443+
* @return void
444+
*/
445+
_pushWithStateCartData: function( eventData ) {
446+
jQuery.post(
447+
varGtmServerSide.ajax,
448+
{
449+
action: 'gtm_server_side_state_cart_data',
450+
security: varGtmServerSide.security,
451+
},
452+
function ( response ) {
453+
if ( ! response.success ) {
454+
dataLayer.push( { ecommerce: null } );
455+
dataLayer.push( eventData );
456+
457+
return false;
458+
}
459+
460+
eventData['cart_state'] = response.data;
461+
462+
dataLayer.push( { ecommerce: null } );
463+
dataLayer.push( eventData );
464+
}
465+
);
425466
}
426467
};

gtm-server-side.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
* Plugin Name: Stape Conversion Tracking
1111
* Plugin URI: https://wordpress.org/plugins/gtm-server-side/
1212
* Description: Enhance conversion tracking by implementing server-side tagging using server Google Tag Manager container. Effortlessly configure data layer events in web GTM, send webhooks, set up custom loader, and extend cookie lifetime.
13-
* Version: 2.1.39
13+
* Version: 2.1.40
1414
* Author: Stape
1515
* Author URI: https://stape.io
1616
* License: GPL-2.0+
@@ -31,12 +31,14 @@
3131

3232
add_action( 'init', array( GTM_Server_Side_Plugin_Upgrade::class, 'instance' ) );
3333
add_action( 'gtm_server_side', array( GTM_Server_Side_I18n::class, 'instance' ) );
34+
add_action( 'gtm_server_side', array( GTM_Server_Side_WC_Order::class, 'instance' ) );
3435
add_action( 'gtm_server_side', array( GTM_Server_Side_Cron_Data_Manager_Ingest::class, 'instance' ) );
3536
add_action( 'gtm_server_side', array( GTM_Server_Side_Webhook_Purchase::class, 'instance' ) );
3637
add_action( 'gtm_server_side', array( GTM_Server_Side_Webhook_Processing::class, 'instance' ) );
3738
add_action( 'gtm_server_side', array( GTM_Server_Side_Webhook_Completed::class, 'instance' ) );
3839
add_action( 'gtm_server_side', array( GTM_Server_Side_Webhook_Refund::class, 'instance' ) );
3940
add_action( 'gtm_server_side', array( GTM_Server_Side_API_Data_Manager_Ingest::class, 'instance' ) );
41+
add_action( 'gtm_server_side', array( GTM_Server_Side_Frontend_Ajax::class, 'instance' ) );
4042
add_action( 'gtm_server_side_admin', array( GTM_Server_Side_Admin_Settings::class, 'instance' ) );
4143
add_action( 'gtm_server_side_admin', array( GTM_Server_Side_Admin_Ajax::class, 'instance' ) );
4244
add_action( 'gtm_server_side_admin', array( GTM_Server_Side_Admin_Assets::class, 'instance' ) );

includes/class-gtm-server-side-admin-ajax.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22
/**
3-
* Assets for admin.
3+
* Ajax for admin.
44
*
55
* @package GTM_Server_Side
66
* @subpackage GTM_Server_Side/includes
@@ -10,7 +10,7 @@
1010
defined( 'ABSPATH' ) || exit;
1111

1212
/**
13-
* Assets for admin.
13+
* Ajax for admin.
1414
*/
1515
class GTM_Server_Side_Admin_Ajax {
1616
use GTM_Server_Side_Singleton;

includes/class-gtm-server-side-event-begincheckout.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ public function wp_footer() {
5555
),
5656
);
5757

58+
if ( GTM_Server_Side_Helpers::is_enable_data_layer_custom_event_name() ) {
59+
$data_layer['cart_state'] = GTM_Server_Side_State_Helpers::instance()->get_cart_data( WC()->cart );
60+
}
61+
5862
if ( GTM_Server_Side_WC_Helpers::instance()->is_enable_user_data() ) {
5963
$data_layer['user_data'] = GTM_Server_Side_WC_Helpers::instance()->get_data_layer_user_data();
6064
}

includes/class-gtm-server-side-event-purchase.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@ public function wp_footer() {
9797
),
9898
);
9999

100+
if ( GTM_Server_Side_Helpers::is_enable_data_layer_custom_event_name() ) {
101+
$data_layer['cart_state'] = GTM_Server_Side_State_Helpers::instance()->get_order_data( $order );
102+
}
103+
100104
if ( GTM_Server_Side_WC_Helpers::instance()->is_enable_user_data() ) {
101105
$data_layer['user_data'] = GTM_Server_Side_WC_Helpers::instance()->get_order_user_data( $order );
102106

includes/class-gtm-server-side-event-viewcart.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ public function wp_footer() {
5656
),
5757
);
5858

59+
if ( GTM_Server_Side_Helpers::is_enable_data_layer_custom_event_name() ) {
60+
$data_layer['cart_state'] = GTM_Server_Side_State_Helpers::instance()->get_cart_data( WC()->cart );
61+
}
62+
5963
if ( GTM_Server_Side_WC_Helpers::instance()->is_enable_user_data() ) {
6064
$data_layer['user_data'] = GTM_Server_Side_WC_Helpers::instance()->get_data_layer_user_data();
6165
}

includes/class-gtm-server-side-event-viewitem.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ public function wp_footer() {
5656
),
5757
);
5858

59+
if ( GTM_Server_Side_Helpers::is_enable_data_layer_custom_event_name() ) {
60+
$data_layer['cart_state'] = GTM_Server_Side_State_Helpers::instance()->get_cart_data( WC()->cart );
61+
}
62+
5963
if ( GTM_Server_Side_WC_Helpers::instance()->is_enable_user_data() ) {
6064
$data_layer['user_data'] = GTM_Server_Side_WC_Helpers::instance()->get_data_layer_user_data();
6165
}

includes/class-gtm-server-side-event-viewitemlist.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ public function wp_footer() {
5252
),
5353
);
5454

55+
if ( GTM_Server_Side_Helpers::is_enable_data_layer_custom_event_name() ) {
56+
$data_layer['cart_state'] = GTM_Server_Side_State_Helpers::instance()->get_cart_data( WC()->cart );
57+
}
58+
5559
if ( GTM_Server_Side_WC_Helpers::instance()->is_enable_user_data() ) {
5660
$data_layer['user_data'] = GTM_Server_Side_WC_Helpers::instance()->get_data_layer_user_data();
5761
}

0 commit comments

Comments
 (0)