Skip to main content

Checkout (Order) Tracking for BigCommerce

Updated over 2 weeks ago

To accurately track conversions from Asklo on your BigCommerce store, you'll need to insert a script into the order confirmation page using BigCommerce's Script Manager. This script reports successful checkouts back to Asklo’s analytics service.

Why this is Important?

Tracking checkouts allows Asklo to:

  • Attribute conversions to product questions asked via the widget.

  • Improve AI performance and reporting.

  • Help you measure Asklo’s impact on sales.

Step 1: Creating a Script

In your BigCommerce admin:

  • Go to StorefrontScript Manager

  • Click Create a Script

Step 2: Script Settings

Use the following values:

Field

Value

Name

Asklo Checkout

Description

Asklo Checkout

Location

Order Confirmation

Placement

Footer

Category

Analytics

Script Type

Script

Step 3: Script Content

Paste the following script into the Script Contents field.

IMPORTANT: Replace "ADD YOUR WIDGET ID" with your actual Asklo Widget ID.

<script>
const session = localStorage.getItem("klevu-moi-session");
const sessionData = session ? JSON.parse(session) : null;

// Replace this with BigCommerce's injected order ID
const klOrderID = "{{checkout.order.id}}";

fetch(`/api/storefront/order/${klOrderID}?include=lineItems.physicalItems.options,lineItems.digitalItems.options,currency`, {
credentials: 'include'
})
.then(response => response.json())
.then(orderData => {
const currency = orderData.currency.code;
const orderId = orderData.orderId;

const physicalItems = orderData.lineItems?.physicalItems || [];
const digitalItems = orderData.lineItems?.digitalItems || [];

const allItems = [...physicalItems, ...digitalItems];

const payload = [
{
eventTimestampMs: Date.now(),
event: "CHECKOUT",
eventVersion: "1.0",
userProfile: {
sessionId: sessionData?.context?.sessionId,
klevuUUID: sessionData?.context?.visitorId
},
items: allItems.map(item => {
const hasOptions = item.options && item.options.length > 0;
const productId = item.productId;
const variantId = hasOptions ? item.variantId : "";
return {
orderId: String(orderId),
orderLineId: String(item.id),
itemId: hasOptions ? `${productId}-variantid_${variantId}` : `${productId}`,
itemName: item.name,
itemGroupId: String(productId),
itemVariantId: hasOptions ? `variantid_${variantId}` : String(productId),
unitPrice: item.salePrice || 0.00,
currency: currency,
units: item.quantity
};
})
}
];

console.debug("Sending to API with payload: ", JSON.stringify(payload));

fetch('https://pqa-analytics.service.ksearchnet.com/events/collect', {
method: 'POST',
headers: {
'X-Widget-ID': "ADD YOUR WIDGET ID", // <-- Replace this
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
},
body: JSON.stringify(payload),
redirect: 'follow'
})
.then(response => console.debug('Success:', response))
.catch(error => console.debug('Error:', error));
})
.catch(error => {
console.error("Error fetching order data:", error);
});
</script>

Step 4. Save Script

Once pasted and edited with your correct widget ID:

  • Click Save.

  • The script will now trigger automatically on the order confirmation page after a successful checkout.

Did this answer your question?