Every ecommerce event for Google Analytics 4, via gtag.js or Tag Manager, with AJAX cart tracking, Consent Mode v2 and server-side purchases.
Available Updated Oct 13, 2026Version 1.1.1CS-Cart, Multi-Vendor 4.17.2 – 4.21.x No core file edits
Built for
Ecommerce Tracking Pro: overview1 of 11
What it does
A complete ecommerce tracking add-on for CS-Cart and Multi-Vendor stores that use Google Analytics 4, directly with gtag.js or through Google Tag Manager.
It sends all recommended ecommerce events, from product list views to purchases and refunds, with SKU, brand, five category levels, variant, discount and vendor name. AJAX add to cart, quick view and mini-cart changes are tracked without theme edits.
Google Analytics and Google Tag Manager are trademarks of Google LLC; this add-on is not endorsed by Google.
What it changes for your store
No lost orders. A server-side purchase is sent when an ad blocker or a payment redirect stops the browser.
No double counting. Each order is reported once, reloads included.
Full funnel. List, product, cart, checkout steps and purchase reports work out of the box.
Clean data. Staff visits are excluded.
Consent-ready. Consent Mode v2 with regional defaults.
No core changes.
How it works
Admin
Enter the measurement ID or GTM container ID, pick the item ID (SKU or product ID), brand feature and currency, set consent defaults per region, and optionally add a Measurement Protocol secret for server-side purchases and refunds.
Shopper
Events fire as the visitor browses, adds to cart and checks out, including AJAX actions. Choices in the CS-Cart cookie dialog update consent instantly. In Multi-Vendor, each vendor order is a separate purchase with the vendor name.
Features
All ecommerce events: view_item_list, select_item, view_item, add_to_cart, remove_from_cart, view_cart, begin_checkout, add_shipping_info, add_payment_info, purchase and refund
Also search, login, sign_up and add_to_wishlist
Gtag.js or Google Tag Manager dataLayer in the standard ecommerce format
AJAX add to cart, quick view, mini-cart and AJAX product lists
kv_ga4_ecommerce-1.1.0.zip, installed through Add-ons → Manage add-ons
Updates & support
12 months included. Download new versions from your account and install them in Add-ons → Manage add-ons or the Upgrade Center.
License
1 production installation. Staging, dev and localhost are free and unlimited. The add-on keeps working after the update period ends. How licensing works
For developers
Uses 8 CS-Cart PHP hooks and 3 template hooks. No core files are changed.
Compatibility
We list only the builds we install and test on. “Tested” means the full test plan was run on that build; “Supported” means the build is inside the supported range and uses the same hooks.
CS-Cart version and edition compatibility
CS-Cart version
CS-Cart
CS-Cart Ultimate
Multi-Vendor
Multi-Vendor Ultimate
4.22 and later
Testing next
Testing next
Testing next
Testing next
4.21.2
Supported
Supported
Tested
Supported
4.20.x
Supported
Supported
Supported
Supported
4.19.x
Supported
Supported
Supported
Supported
4.18.3
Supported
Supported
Tested
Supported
4.17.2
Tested
Supported
Tested
Supported
Before 4.17.2
Not supported
Not supported
Not supported
Not supported
Last tested build: Multi-Vendor 4.21.2, Oct 13, 2026Tested on: Multi-Vendor 4.17.2, CS-Cart 4.17.2, Multi-Vendor 4.21.2, Multi-Vendor 4.18.3
Requirements
PHP
CS-Cart and Multi-Vendor 4.17.2 – 4.21.x (tested on CS-Cart 4.17.2, Multi-Vendor 4.17.2 and Multi-Vendor 4.21.2 with PHP 8.3)
PHP
PHP 7.4 – 8.3, as supported by your CS-Cart version
Theme
A storefront theme based on Responsive (Responsive, Bright theme, or a child theme such as Nova, the 4.21 default)
Requirement
A Google Analytics 4 property with a web data stream (for the measurement ID G-XXXXXXXXXX), or a Google Tag Manager web container (GTM-XXXXXXX)
Requirement
Optional, for the server-side fallback and refunds: a Measurement Protocol API secret for the same data stream, and outgoing HTTPS from your server to www.google-analytics.com (or region1.google-analytics.com)
Core changes
None. Hooks and template overrides only
1.1.0
Oct 13, 2026
Latest
Added 3
License check. Enter your license key (or CS-Cart Marketplace license number) on the new License tab of the settings. The add-on verifies it with cs-cart.kaviolabs.com when the key is saved and then once a day, only from the admin panel or cron, never on storefront requests. The license covers the domain entered at purchase and all its subdomains; local development hosts are always allowed.
License status on the License tab (status, licensed domain, result per storefront, last check, end of the updates period) with a Check now button, and a cron entry point (php admin.php --dispatch=kv_ga4_ecommerce_license.check).
Without a valid license for the store's domain the add-on stops tracking: no gtag/Google Tag Manager snippet, no events, no order tracking and no Measurement Protocol requests (purchase fallback and refunds; pending orders wait). Checkout and order status changes are never affected, and the admin panel shows a notice. New installations and upgrades from 1.0.x work for 14 days before a key is required, and if the license server cannot be reached the add-on keeps working for 14 days.
Changed 1
Shorter add-on description in Add-ons → Manage add-ons (CS-Cart limits it to 255 characters).
Tested on Multi-Vendor 4.17.2, CS-Cart 4.17.2, Multi-Vendor 4.21.2, Multi-Vendor 4.18.3. No breaking changes.
1.0.4
Oct 12, 2026
Fixed 3
Works with the Performance Booster (full page cache) of CS-Cart 4.21: events waiting in the visitor's session are no longer printed into pages that the cache shares between guests; they are sent with the next uncached page or AJAX response.
The Measurement Protocol fallback no longer writes to CS-Cart storage data on cached pages or while the full page cache is on, which would have cleared the whole page cache.
Compatible with CS-Cart and Multi-Vendor 4.21 and PHP 8.3: tested on Multi-Vendor 4.21.2 with PHP 8.3 and the new Nova theme. The add-on now declares the supported range 4.17.2 – 4.21.x.
Tested on Multi-Vendor 4.17.2, CS-Cart 4.17.2, Multi-Vendor 4.21.2, Multi-Vendor 4.18.3. No breaking changes.
1.0.3
Oct 12, 2026
Added 1
In-place upgrades now complete themselves. After the add-on files are replaced (uploading the new zip over the installed add-on in Add-ons → Manage add-ons, copying the files by FTP, or installing an Upgrade Center package), the next admin page view adds any missing tables, columns, settings, language variables and e-mail templates, and updates the stored add-on version and icon flag. Existing data and setting values are kept. A hidden schema_version setting records the last applied version.
Fixed 1
After an upgrade by uploading the new zip over the installed add-on, CS-Cart saved empty multiple-choice settings with an empty selected entry. The next admin page view now repairs them.
Tested on Multi-Vendor 4.17.2, CS-Cart 4.17.2, Multi-Vendor 4.21.2, Multi-Vendor 4.18.3. No breaking changes.
1.0.2
Oct 12, 2026
Fixed 1
The add-on icon is now shown in the admin add-ons list: the package ships a 150×150 icon and addon.xml declares has_icon.
Tested on Multi-Vendor 4.17.2, CS-Cart 4.17.2, Multi-Vendor 4.21.2, Multi-Vendor 4.18.3. No breaking changes.
1.0.1
Oct 12, 2026
Removed 1
Unused language files from the package.
Tested on Multi-Vendor 4.17.2, CS-Cart 4.17.2, Multi-Vendor 4.21.2, Multi-Vendor 4.18.3. No breaking changes.
1.0.0
Oct 12, 2026
Added 10
Ecommerce tracking for Google Analytics 4 through gtag.js or the Google Tag Manager dataLayer (standard ecommerce format, {ecommerce: null} before each ecommerce push).
Events: view_item_list (category, search, brand and vendor pages, AJAX list reloads), select_item (list links and quick view), view_item (product page and quick view, with list attribution), add_to_cart, remove_from_cart, view_cart, begin_checkout, add_shipping_info, add_payment_info, purchase, refund, search, login, sign_up, add_to_wishlist.
Server-side cart and wishlist change detection with a session event queue, delivered by the next page or the CS-Cart AJAX response (AJAX add to cart, mini-cart, cart updates, quick view).
Item mapping: item_id from the product code or ID, item_name in the default or visitor language, item_brand from a configurable feature, item_category up to five levels, item_variant from variation features and options, price and discount in the customer's or a fixed currency, quantity, index, list data; vendor name as affiliation in Multi-Vendor.
Purchase printed once per order on the landing page and confirmed by the browser; one purchase per vendor order in Multi-Vendor.
Measurement Protocol purchase fallback for unconfirmed orders (ad blockers, payment redirects), with the original client ID, session ID and order time, consent-aware, via automatic runs or cron (kv_ga4_ecommerce.process).
Refund events through the Measurement Protocol for configurable order statuses, sent once per order.
Consent Mode v2: regional defaults, Advanced and Basic modes, wait_for_update, ads_data_redaction, url_passthrough; integration with the GDPR add-on cookie dialog (two consent services) and a kvGa4.consent() API for other banners.
Per-storefront settings, staff exclusion, optional user_id, debug mode with DebugView flags, console logging and Measurement Protocol validation logs.
Admin status blocks (tag readiness, consent handling, core Google Analytics conflict warning, order counters, cron command).
Tested on Multi-Vendor 4.17.2, CS-Cart 4.17.2, Multi-Vendor 4.21.2, Multi-Vendor 4.18.3. First release.
I see no data in Google Analytics.
Check the Status block on the General tab first: it must say Ready. Then:
open the storefront in a private window, not logged in as an administrator, because administrators are not tracked by default;
turn on Debug mode and watch GA4 → Admin → DebugView and the browser console ([GA4 ecommerce] … lines);
with Consent Mode in Basic mode, nothing is sent until the visitor accepts Google Analytics 4 in the cookie dialog.
Page views and purchases are counted twice.
Another tag is also sending them. Disable the core Google Analytics add-on, and remove GA snippets from your theme or other add-ons. To keep an existing tag, turn off Load the tag on the storefront.
Do I need Google Tag Manager?
No. gtag.js mode needs only the measurement ID. Use GTM if you already manage other tags there. The add-on then only pushes to the dataLayer, and you decide in GTM what to send.
Why do the events say "denied" for my visitors outside Europe?
Your GDPR add-on asks for explicit consent. In that mode the cookie dialog reports denied until the visitor accepts, in every country. Consent Mode Advanced still sends cookieless pings, which GA4 uses for modeling.
Will a purchase be reported if the customer uses an ad blocker?
Yes, if the Measurement Protocol API secret is set and the fallback is on. The order is sent from the server after the configured delay, with the same transaction_id. It is not sent when the customer denied analytics consent.
What if the customer reloads the "thank you" page?
Nothing happens. The purchase is printed only the first time the landing page is shown.
Payments through PayPal or another gateway that redirects the customer.
The client ID is saved when the order is placed. If the customer comes back to the landing page, the browser reports the purchase. If they never come back, the server sends it once the payment status is final (not Incomplete).
How are refunds sent?
Pick the statuses that mean "refunded" under Server-side events. When an order enters one of them, a full refund is sent once. Partial refunds are not sent automatically: CS-Cart has no partial refund document.
Which prices are sent?
The unit price after catalog promotions, in the customer's currency or in a fixed currency (setting). The catalog promotion amount is sent as discount. For purchases, value is the order total or the discounted subtotal (setting), with tax and shipping as separate parameters.
Does it work with product variations and options?
Yes. item_variant contains the variation features (for example Color: White, Size: Large) and the selected options.
Multi-Vendor: why do I see several purchases for one checkout?
Multi-Vendor splits a checkout into one order per vendor. Each vendor order is a separate transaction with the vendor name as affiliation, the same way refunds and vendor payouts work.
Does the add-on slow down the store?
Events are computed from data CS-Cart already loaded. Item details (categories, brand, vendor) are loaded with a few batched queries per page. The fallback runs at most every 5 minutes and handles only a few orders per storefront request. Set up the cron job to keep it off the storefront.
Can I add my own events?
Yes. Call kvGa4.send({event: 'name', params: {…}}) in the browser. It uses the same transport (gtag or dataLayer) and debug logging. See the Developer guide.
No data arrives in Google Analytics and the admin panel shows a license notice.
Open Add-ons → Manage add-ons → Ecommerce Tracking Pro → Settings → License. The status line says what is wrong: no key, a key for another add-on, a revoked license, or a domain that the license does not cover. Fix it and click Check now. See License.
Does the add-on work on my staging copy?
Yes. Subdomains of your licensed domain (for example staging.example.com) and local development hosts (localhost, private IP addresses, .local, .test) are covered by the same license.
What happens if your license server is down?
Nothing visible: the add-on keeps the last verified result and keeps working for 14 days while it retries. The admin panel shows a notice from the first failed check.
Does the license check slow down my storefront?
No. The check runs in the admin panel or from cron, once a day. The storefront only reads the stored result.
Is this add-on made by Google?
No. Google Analytics and Google Tag Manager are trademarks of Google LLC. This add-on is made by Kavio Labs and is not endorsed by Google.