Skip to content

Commit

Permalink
Merge pull request #12 from SalesforceCommerceCloud/202109_logging
Browse files Browse the repository at this point in the history
Improve logging in the cartridge
  • Loading branch information
njparadis committed Oct 13, 2021
2 parents 71f01a8 + 461517f commit 01281fb
Show file tree
Hide file tree
Showing 8 changed files with 112 additions and 34 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ bumped for multiple releases during one month.
- Remove unused functions from Core and SG cartridges
- sendOrderEmail from Core emailUtils
- sendKlaviyoShipmentEmail from SG Klaviyo.js controller
- Increased logging coverage for easier debugging

### [21.7.0] - 2021-7-27
##### Updated
Expand Down
25 changes: 16 additions & 9 deletions cartridges/int_klaviyo/cartridge/controllers/Klaviyo.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@ var RenderKlaviyo = function () {
if (!dw.system.Site.getCurrent().getCustomPreferenceValue('klaviyo_enabled')) {
return;
}
var logger = Logger.getLogger('renderKlaviyo', 'Klaviyo - Render Klaviyo Controller');
var logger = Logger.getLogger('Klaviyo', 'SG Klaviyo Controller - RenderKlaviyo()');
try {
logger.info('RenderKlaviyo() called.');
var klaviyoUtils = require('*/cartridge/scripts/utils/klaviyo/klaviyoUtils');
var klaviyoTags = require('*/cartridge/scripts/utils/klaviyo/klaviyoOnSiteTags.js').klaviyoOnSiteTags;

Expand All @@ -32,7 +33,7 @@ var RenderKlaviyo = function () {
klaviyoData: sendToDom
});
} catch (e) {
logger.debug('error rendering klaviyo ' + e.message + ' at ' + e.lineNumber);
logger.debug('Error encountered with RenderKlaviyo - ' + e.message + ' at ' + e.lineNumber);
}
};

Expand All @@ -46,15 +47,21 @@ var RenderKlaviyoAddToCart = function () {
if (!dw.system.Site.getCurrent().getCustomPreferenceValue('klaviyo_enabled')) {
return;
}
var klaviyoUtils = require('*/cartridge/scripts/utils/klaviyo/klaviyoUtils');
var klaviyoTags = require('*/cartridge/scripts/utils/klaviyo/klaviyoOnSiteTags.js').klaviyoOnSiteTags;
var logger = Logger.getLogger('Klaviyo', 'SG Klaviyo Controller - RenderKlaviyoAddToCart()');
try {
logger.info('RenderKlaviyoAddToCart() called.');
var klaviyoUtils = require('*/cartridge/scripts/utils/klaviyo/klaviyoUtils');
var klaviyoTags = require('*/cartridge/scripts/utils/klaviyo/klaviyoOnSiteTags.js').klaviyoOnSiteTags;

var klaviyoDataLayer = klaviyoUtils.buildCartDataLayer();
var sendToDom = klaviyoTags(klaviyoDataLayer);
var klaviyoDataLayer = klaviyoUtils.buildCartDataLayer();
var sendToDom = klaviyoTags(klaviyoDataLayer);

ISML.renderTemplate('klaviyo/klaviyoTag', {
klaviyoData: sendToDom
});
ISML.renderTemplate('klaviyo/klaviyoTag', {
klaviyoData: sendToDom
});
} catch (e) {
logger.debug('Error encountered with RenderKlaviyoAddToCart - ' + e.message + ' at ' + e.lineNumber);
}
};


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ var imageSize = Site.getCurrent().getCustomPreferenceValue('klaviyo_image_size')
* @returns
*/
function prepareOrderPayload(order, isFutureOrder, mailType) {
var logger = Logger.getLogger('Klaviyo', 'Core emailUtils - prepareOrderPayload()');
logger.info('Calling prepareOrderPayload().');
var orderDetails = {};
var isReplenishmentOrder = !!((mailType != null && mailType == 'Auto Delivery Order Confirmation'));

Expand Down Expand Up @@ -42,6 +44,7 @@ function prepareOrderPayload(order, isFutureOrder, mailType) {
var paymentInstruments = '';

if (order.shipments.length > 0) {
logger.info('Found ' + order.shipments.length + 'shipments for order #' + order.orderNo);
// Shipping Address
orderShippingAddressFirstName = (order.shipments[0].shippingAddress.firstName) ? order.shipments[0].shippingAddress.firstName : '';
orderShippingAddressLastName = (order.shipments[0].shippingAddress.lastName) ? order.shipments[0].shippingAddress.lastName : '';
Expand Down Expand Up @@ -140,6 +143,7 @@ function prepareOrderPayload(order, isFutureOrder, mailType) {
'Is Sample' : isSample
});
}
logger.info('Items: ' + JSON.stringify(items));


// Append gift card
Expand Down Expand Up @@ -345,6 +349,7 @@ function prepareOrderPayload(order, isFutureOrder, mailType) {
orderDetails.$event_id = mailType + '-' + order.orderNo;
orderDetails['Tracking Number'] = (order.shipments[0].trackingNumber) ? order.shipments[0].trackingNumber : '';

logger.info('orderDetails: ' + JSON.stringify(orderDetails));

return orderDetails;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
'use strict';

var Logger = require('dw/system/Logger');

// var klCustomer = new Object();
var viewedProductObj = new Object();
var checkoutObj = new Object();
Expand All @@ -13,25 +17,30 @@ function klaviyoOnSiteTags(klData) {
// var userReturnString = learnq.concat(" _learnq.push(['identify'," + JSON.stringify(klCustomer) + ']);');
// return userReturnString;
// }
var logger = Logger.getLogger('Klaviyo', 'Core klaviyoOnSiteTags - klaviyoOnSiteTags()');
logger.info('Calling klaviyoOnSiteTags() for event type: ' + klData.event);

if (klData.event === 'Viewed Product') {
viewedProductObj.data = klaviyoTagUtils.prepareViewedProductObject(klData);
viewedProductObj.eventType = 'track';
viewedProductObj.eventName = klData.event;
logger.debug('Viewed Product data: ' + JSON.stringify(viewedProductObj));
return JSON.stringify(viewedProductObj);
}

if (klData.event === 'Started Checkout') {
checkoutObj.data = klaviyoTagUtils.prepareCheckoutObj(klData);
checkoutObj.eventType = 'track';
checkoutObj.eventName = klData.event;
logger.debug('Started Checkout data: ' + JSON.stringify(checkoutObj));
return JSON.stringify(checkoutObj);
}

if (klData.event === 'Added to Cart') {
cartObj.data = klaviyoTagUtils.prepareAddToCartObj(klData);
cartObj.eventType = 'track';
cartObj.eventName = klData.event;
logger.debug('Added to Cart data: ' + JSON.stringify(cartObj));
return JSON.stringify(cartObj);
}

Expand All @@ -40,6 +49,7 @@ function klaviyoOnSiteTags(klData) {
categoryObj.data['Viewed Category'] = klData.pageCategoryId;
categoryObj.eventType = 'track';
categoryObj.eventName = klData.event;
logger.debug('Viewed Category data: ' + JSON.stringify(categoryObj));
return JSON.stringify(categoryObj);
}

Expand All @@ -49,6 +59,7 @@ function klaviyoOnSiteTags(klData) {
searchObj.data['Search Results Count'] = klData.searchResultsCount;
searchObj.eventType = 'track';
searchObj.eventName = klData.event;
logger.debug('Searched Site data: ' + JSON.stringify(searchObj));
return JSON.stringify(searchObj);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
'use strict';

var Logger = require('dw/system/Logger');

/**
* This script provides utility functions for klaviyoTag isml fle.
*/
Expand All @@ -8,6 +10,8 @@
// Prepare viewed product event data for klaviyo

function prepareViewedProductObject(klData) {
var logger = Logger.getLogger('Klaviyo', 'Core klaviyoTagUtils - prepareViewedProductObject()');
logger.info('Calling prepareViewedProductObject().');
var viewedProductObj = new Object();
viewedProductObj['Product Name'] = klData.viewedProductName;
viewedProductObj['Product Image URL'] = !empty(klData.viewedProductImage) ? klData.viewedProductImage.toString() : '';
Expand All @@ -19,39 +23,48 @@ function prepareViewedProductObject(klData) {
// viewedProductObj["Product Availability Model"] = klData.viewedProductAvailability;
viewedProductObj.Categories = klData.viewedProductCategories;
viewedProductObj['Primary Category'] = klData.viewedProductPrimaryCategory;
logger.debug('viewedProductObj: ' + JSON.stringify(viewedProductObj));
return viewedProductObj;
}


// Prepare checkout product event data for klaviyo

function prepareCheckoutObj(klData) {
var logger = Logger.getLogger('Klaviyo', 'Core klaviyoTagUtils - prepareCheckoutObj()');
logger.info('Calling prepareCheckoutObj().');
var checkoutObj = new Object();
checkoutObj.Items = klData.Items;
checkoutObj.line_items = klData.line_items;
checkoutObj.$value = klData['Basket Gross Price'].toString();
checkoutObj.itemCount = klData['Item Count'].toString();
checkoutObj.Categories = klData.Categories;
logger.debug('checkoutObj: ' + JSON.stringify(checkoutObj));
return checkoutObj;
}

// Prepare checkout add to cart event data for klaviyo

function prepareAddToCartObj(klData) {
var logger = Logger.getLogger('Klaviyo', 'Core klaviyoTagUtils - prepareAddToCartObj()');
logger.info('Calling prepareAddToCartObj().');
var cartObj = new Object();
cartObj.Items = klData.items;
cartObj.line_items = klData.lineItems;
cartObj.Categories = klData.categories;
cartObj['Primary Categories'] = klData.primaryCategories;
cartObj.$value = klData.basketGross;
cartObj['Item Count'] = klData.itemCount.toString();
logger.debug('cartObj: ' + JSON.stringify(cartObj));
return cartObj;
}


// Sends customer basic details and information to klaviyo

function setCustomerDetails(currentUser) {
var logger = Logger.getLogger('Klaviyo', 'Core klaviyoTagUtils - setCustomerDetails()');
logger.info('Calling setCustomerDetails().');
var klCustomer = new Object();
klCustomer.$email = currentUser.email;
klCustomer.$first_name = currentUser.firstName || null;
Expand All @@ -68,6 +81,7 @@ function setCustomerDetails(currentUser) {
klCustomer.$country = currentUserAddress.countryCode;
klCustomer.$zip = currentUserAddress.postalCode;
}
logger.debug('klCustomer: ' + JSON.stringify(klCustomer));
return klCustomer;
}

Expand Down
Loading

0 comments on commit 01281fb

Please sign in to comment.