Let shoppers subscribe to price drops, restocks and low stock on any product or variation, and turn that demand into sales with automatic alerts.
Available Updated Oct 13, 2026Version 1.1.1CS-Cart, Multi-Vendor 4.17.2 – 4.21.x No core file edits
Built for
Price Drop & Back-in-Stock Alerts: overview1 of 15
What it does
An alert widget for the product page of CS-Cart and Multi-Vendor stores. Shoppers choose what they want to hear about:
It goes far beyond the core "Notify me when back in stock" button and can replace it, or work next to it. Alerts are sent by e-mail, or Telegram if you connect a bot.
What it changes for your store
Restock e-mails bring buyers back on the day the item returns.
Price watchers are told when your sale starts.
"only a few left" alerts create honest urgency.
The demand report lists the most-wanted out-of-stock items, target prices and orders placed after an alert, a ready purchasing list.
How it works
Shopper
Picks alerts on the product page, enters an e-mail (guests confirm it once), and can stop any alert from a link in every message or the My alerts page.
Store
When you save a product, an order changes stock or a promotion starts, matching alerts go to a send queue. Cron (or admin activity as a fallback) sends a limited batch per run, so your mail server is never flooded.
Admin
Demand report, subscriber list, queue with retries, editable e-mail templates. Multi-Vendor: vendors see demand for their own products.
Features
Price-drop alerts with an optional target price and a minimum drop
Back-in-stock alerts per product and per variation
Low-stock alerts with your own threshold
Throttled send queue with cron, admin fallback, retries and a manual run
E-mail channel with four editable templates
Optional Telegram channel and a pluggable channel API for SMS or push
Demand report with waiting shoppers, price watchers, target prices and orders after alerts
Replaces or coexists with the core "Notify me" button, with a one-click import of core subscriptions
Multi-Vendor: vendors see the report for their own products, without shopper e-mails
Privacy: double opt-in, one-click unsubscribe, My alerts page, automatic clean-up and GDPR add-on support
kv_price_stock_alerts-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. 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.x
Supported
Supported
Supported
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
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
Working outgoing e-mail (Settings → E-mails). Alerts are sent with the store mailer
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 card at the top of the add-on page (status in color, licensed domain, result per storefront, last and next check, end of the updates period, what switches off) with Check now, a license badge in Add-ons → Manage add-ons, a status bar on the add-on's own admin pages, and a cron entry point.
Without a valid license for the store's domain, the alert widget is no longer shown on product pages, the core "Notify me" button is no longer replaced, and no new alerts are queued or sent and the admin panel shows a notice. Existing subscriptions and queued alerts are kept, and customers can still open their alert list and unsubscribe. 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.
Tested on Multi-Vendor 4.17.2, CS-Cart 4.17.2, Multi-Vendor 4.21.2. No breaking changes.
1.0.4
Oct 12, 2026
Fixed 2
Queue runs, scan cursor and the activity log no longer write to CS-Cart storage data while the full page cache of CS-Cart 4.21 is on, which would have cleared the whole page cache on every run.
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. No breaking changes.
1.0.3
Oct 12, 2026
Added 2
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.
Stores upgraded from 1.0.0 or 1.0.1 by copying the files or with an Upgrade Center package now also get the e-mail template name language variables, so Design → E-mail templates shows the template names.
Fixed 1
While the add-on was disabled, saving or refreshing its settings, or uploading a new version over it, stopped with a "Class not found" error. That could leave the settings only partly rebuilt. CS-Cart loads the add-on functions for a disabled add-on without its classes; the add-on now registers them itself.
Tested on Multi-Vendor 4.17.2, CS-Cart 4.17.2, Multi-Vendor 4.21.2. No breaking changes.
1.0.2
Oct 12, 2026
Fixed 2
The admin add-on icon is now 150×150, the size the add-ons list uses.
Design → E-mail templates showed raw language variable names (such as _email_template.kv_price_stock_alerts_price_drop) for the add-on's four templates; they now have proper names.
Tested on Multi-Vendor 4.17.2, CS-Cart 4.17.2, Multi-Vendor 4.21.2. 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. No breaking changes.
1.0.0
Oct 12, 2026
Added 18
Product page widget (AJAX-loaded, cache-safe) with three alert types: price drop with an optional target price, back in stock, low stock. Alerts are per product, so every variation has its own.
Subscribe flow with e-mail validation, honeypot and per-visitor rate limit; logged-in customers subscribe with their account e-mail.
Double opt-in (guests, everyone or off) with a confirmation e-mail; an address is confirmed once.
Change detection on product save, stock changes (orders, returns, warehouses), bulk price updates and status toggles, evaluated once at the end of the request; rolling re-check of watched products for imports, API and catalog promotions.
Price comparison on the public price after catalog promotions, with a minimum drop percentage and "keep watching" mode.
Throttled send queue (messages per run, minutes between runs) with a MySQL named lock, 3 retries, cron command, cron URL with access key, admin-activity fallback and a "Process queue now" button.
E-mail channel with four editable templates (price drop, back in stock, low stock, confirmation) that include product image, old and new price, and unsubscribe links.
Optional Telegram channel: deep link after subscribing, chat linking through getUpdates polling, /stop to unlink, automatic unlink when the bot is blocked.
Pluggable channel API (ChannelInterface, hook kv_price_stock_alerts_register_channels).
Admin demand report with summary tiles (waiting shoppers incl. the core list, price watchers, low-stock watchers, alerts sent, orders and revenue after alerts), sorting, search and an out-of-stock filter.
Admin subscriber list with filters and bulk unsubscribe/delete; send queue page with counters, recent rows, last run and error log.
Multi-Vendor: demand report in the vendor panel for the vendor's own products, without shopper e-mails.
Core "Notify me when back in stock" coexistence: replace mode (widget takes over, core form requests stored as add-on alerts) or keep mode; one-click copy or move of core subscriptions.
"My stock & price alerts" page (account menu and token links), stop one or all alerts from every message.
GDPR add-on integration: consent checkbox, saved agreement, personal data export and anonymization.
Automatic clean-up of unconfirmed, expired and finished alerts and old queue rows.
Admin add-on icon.
Clean uninstall: tables, settings, language variables, e-mail templates and runtime keys.
Tested on Multi-Vendor 4.17.2, CS-Cart 4.17.2, Multi-Vendor 4.21.2. First release.
Do I need cron?
No, but it is recommended. Without cron, alerts are sent in batches while someone works in the admin panel (Also send on admin panel activity). On a quiet store that can mean a delay. With cron every 5 minutes, an alert goes out within about 5 minutes of the change.
Why did a shopper not get the price-drop e-mail?
Check, in this order:
Subscriptions page: is the alert Active? Waiting for confirmation means the guest has not clicked the confirmation link yet.
Is the drop at least Minimum price drop (default 1%) and at or below the target price?
Is the product in stock? Price-drop alerts wait until the product can be bought.
Send queue: is the row Queued (not run yet), Failed (see the error) or Sent?
Does the store send other e-mails? Alerts use the normal store mailer (Settings → E-mails).
The price changed through an import or the API. Will alerts fire?
Yes. Product saves through fn_update_product (admin, vendor panel, REST API, most imports) are detected at once. Anything else is caught by the rolling re-check within a few queue runs (Products checked per run).
Does a sale (catalog promotion) count as a price drop?
Yes, when Include catalog promotions in the price is on (default). The comparison uses the guest price for one item, so prices for specific user groups, quantity discounts and option modifiers are not taken into account.
What happens to the core "Notify me when back in stock" button?
With the default Replace mode it is hidden on product pages and the widget takes over; requests that still reach the core form are stored as add-on alerts. With Keep, both exist and the widget does not offer back-in-stock on products that show the core form. Existing core subscriptions can be copied or moved from the report's gear menu, and they are counted in the demand report either way.
Will a shopper get two e-mails if they used both the core form and the widget?
Only if you keep both and the shopper subscribed in both places. Use Move core "Notify me" subscriptions to avoid that.
Can vendors see who subscribed?
No. Vendors see the demand report for their own products: counts, target prices and dates, never e-mail addresses.
Is it GDPR compliant?
The add-on gives you the tools: double opt-in for guests (or everyone), consent checkbox with the core GDPR add-on, one-click unsubscribe in every message, a self-service page, automatic deletion of unconfirmed, expired and finished alerts, and GDPR export/anonymization support. Your privacy policy should mention product alerts.
Can I change the e-mail texts?
Yes. Edit the four templates in Design → E-mail templates, or the language variables kv_price_stock_alerts.message_title_, kv_price_stock_alerts.message_text_ and kv_price_stock_alerts.email_* in Administration → Languages.
How do I add SMS?
Write a small add-on with a channel class and register it through the kv_price_stock_alerts_register_channels hook. See the Developer guide.
The widget does not show up
The product page template must call the products:product_detail_bottom hook (Responsive and Bright theme do).
For themes not based on Responsive, copy the templates as described in Installation.
Disabled or hidden products, and products where no alert type applies, show no widget.
Without an active license the widget is not shown and the admin panel shows a license notice (see License).
Does it slow down my store?
The product page loads one small AJAX request. Saving a product adds one query when the product has no alerts. Sending never happens in a shopper's request: it runs in batches from cron, or at the end of an admin panel request (at most Messages per run messages, once per Minutes between runs).
The widget disappeared, no alerts are sent and the admin panel shows a license notice
Open Add-ons → Manage add-ons → Price Drop & Back-in-Stock Alerts. The License card at the top of the add-on page says what is wrong: no key, a key for another add-on, a revoked license, or a domain that the license does not cover. Enter or change the key on the License tab 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.