How Kelkoo Sales Tracking automatically reads your Google Analytics data layer

If your website already pushes ecommerce data to window.dataLayer for Google Analytics — either the current GA4 format or the legacy Universal Analytics (UA) Enhanced Ecommerce format — Kelkoo Sales Tracking (ks.js) can automatically read order data from it.

What gets read automatically

If your purchase event follows the standard GA4 shape (a flat ecommerce object) or the legacy UA shape (a nested ecommerce.purchase object), Kelkoo reads the following fields with no extra configuration:

Field

GA4 data layer key

Legacy UA data layer key

Order ID

ecommerce.transaction_id

ecommerce.purchase.actionField.id

Order Value

ecommerce.value

ecommerce.purchase.actionField.revenue

Currency

ecommerce.currency

ecommerce.currencyCode

VAT Amount

ecommerce.tax

ecommerce.purchase.actionField.tax

Shipping Cost

ecommerce.shipping

ecommerce.purchase.actionField.shipping

Coupon Code

ecommerce.coupon

ecommerce.purchase.actionField.coupon

Affiliation

ecommerce.affiliation

ecommerce.purchase.actionField.affiliation

Basket / Items
see Add Basket Information to Kelkoo Sales Tracking for the full field format

ecommerce.items[] (item_id/item_name/price/quantity)

ecommerce.purchase.products[] (id/name/price/quantity)

Why these optional fields matter

None of the fields below are required for Kelkoo Sales Tracking to work. We strongly encourage you to populate as many as you can, since they directly improve how we optimise your campaigns.

Field

Why it helps

Basket / Items

Lets us identify the individual products in an order.

Coupon Code

Identifies sales where a customer used a discount/promo code (not one provided by Kelkoo) — separates organic demand from promotion-driven volume, and is required for accurate reporting if you run a Kelkoo coupon programme. Omit this field entirely if no code was used; don't send an empty string.

Returning Customer

One of the strongest signals we can use to identify the type of traffic sent to you — e.g. prioritising acquisition of new customers vs. re-engaging existing ones. Must be sent as the string "true"/"false", not a boolean literal.

Currency

ISO 4217 code (e.g. EUR). Needed for accurate cross-country value comparisons.

VAT Amount

Lets us normalise order value to a comparable net figure across merchants.

Shipping Cost

Some merchants include shipping in the order value, others don't — passing it separately removes the ambiguity.

Affiliation

The store, brand, or sales channel the order was made through — for example, a supplying company or a brick-and-mortar store location.

Discount Amount

Helps distinguish structurally high-value orders from promotion-driven ones.

Payment Status

Lets us tell a confirmed, paid order apart from one that isn't final yet — e.g. a "pay later"/deferred-payment order, which can go unpaid, or turn out fraudulent.

Customer Lifetime Value

An open field — pass any numeric value you consider representative of a customer's worth (total historic spend, a predicted LTV score, or simply past order count as a proxy). Even an approximate value helps us understand how valuable your returning customers are.

Explicit values always win

If you also set a field explicitly — via window._kkstrack in a Manual (or platform plugin) installation, or via a tag input in a GTM installation — that explicit value always takes priority over anything read from the data layer.

How to check what your site currently pushes

  1. Open your browser's developer console (F12) on your order confirmation page, or use Google Tag Manager's Preview mode and its Data Layer tab.

  2. Complete a test purchase.

  3. Look for a dataLayer entry matching one of the two shapes above.