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 |
|
|
|
Order Value |
|
|
|
Currency |
|
|
|
VAT Amount |
|
|
|
Shipping Cost |
|
|
|
Coupon Code |
|
|
|
Affiliation |
|
|
|
Basket / Items
|
|
|
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 |
|
Currency |
ISO 4217 code (e.g. |
|
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
-
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.
-
Complete a test purchase.
-
Look for a
dataLayerentry matching one of the two shapes above.