Configuration
Open Add-ons → Manage add-ons → Price Drop & Back-in-Stock Alerts → Settings. The settings are global (one set for all storefronts).
General
Section titled “General”| Setting | Default | What it does |
|---|---|---|
| Price drop alerts | On | Offers “The price drops” on the product page. |
| Back-in-stock alerts | On | Offers “It is back in stock” for out-of-stock products and variations. |
| Low-stock alerts | On | Offers “Only a few are left” for products with more stock than the threshold. |
| Low-stock threshold (items) | 5 | The low-stock alert fires once when the stock falls to this number or below (and is above 0). |
| Minimum price drop (%) | 1 | Smaller drops are ignored. 0 notifies on any drop. |
| Let shoppers set a target price | On | Adds the optional “Only when the price falls to” field. With a target, the alert fires only at or below that price. |
| Include catalog promotions in the price | On | The watched price is the guest price for quantity 1 (All user group). When this is on, active catalog promotions are applied to it, so a new catalog promotion counts as a price drop. |
| Keep watching after a price drop alert | On | On: after an alert without a target price, the new price becomes the reference and the shopper hears about further drops. Off: the alert stops after the first drop. Alerts with a target price always stop after they fire. |
| Core “Notify me when back in stock” form | Replace it | Replace it with the add-on widget: on product pages the core form is hidden and the widget handles back-in-stock. Requests that still reach the core form (for example from a custom theme) are stored as add-on alerts. Keep it next to the add-on widget: for products set to Out of stock actions: Sign up for notification, the core form stays and the widget only offers the price-drop alert there. |
Privacy
Section titled “Privacy”| Setting | Default | What it does |
|---|---|---|
| Double opt-in (e-mail confirmation) | Guests only | Guests only: guests confirm their address once through a link; logged-in customers are active at once. Everyone: also customers who enter an address other than their account e-mail. Off: no confirmation. An address that confirmed once is not asked again. |
| Delete unconfirmed alerts after (days) | 7 | Pending alerts that were never confirmed are deleted. |
| Alerts expire after (days, 0 = never) | 365 | Active alerts older than this are stopped. |
| Keep finished alerts and send log for (days) | 90 | Sent and unsubscribed alerts, and processed queue rows, are deleted after this period. The demand report’s “orders after an alert” figure uses this data. |
Every alert e-mail has Stop this alert, Stop all alerts and Manage alerts links. Logged-in customers also find My stock & price alerts in the account menu.
When the core GDPR add-on is active and requires consent for product subscriptions, the widget shows the same consent checkbox as the core form, the consent is saved with the core agreements, and the add-on’s data is included in the GDPR personal-data export and anonymization (anonymizing a customer deletes their alerts).
Sending
Section titled “Sending”| Setting | Default | What it does |
|---|---|---|
| Messages per run | 20 | Throttling: the maximum number of messages one run sends. |
| Minutes between runs | 5 | A run is skipped if the last one was less than this many minutes ago. Process queue now ignores this limit. |
| Products checked per run | 200 | Each run re-checks this many watched products (rolling), to catch changes made by imports, the API or promotions. |
| Also send on admin panel activity | On | Fallback when cron is not set up: at the end of an admin panel request, a run starts if it is due. |
| Cron access key | random | Protects the cron URL. Change it if the URL leaked. |
The Cron field on the Sending tab shows the exact command and URL for your store. Run one of them every 5 minutes:
*/5 * * * * php /path/to/store/admin.php --dispatch=kv_price_stock_alerts.cronor call the URL from an external cron service:
https://example.com/index.php?dispatch=kv_price_stock_alerts.cron&key=<cron access key>Both print a JSON summary, for example {"source":"cron","sent":12,"failed":0,"fired":3,"scanned":200,"skipped":""}. skipped is throttled when the run came too early, locked when another run was still working and license when the license is not active (see License).
With 20 messages every 5 minutes the queue sends up to 240 messages per hour. Raise Messages per run if your mail server allows more.
Telegram
Section titled “Telegram”- In Telegram, open @BotFather, send
/newbotand follow the steps. - Paste the token into Bot token and the bot name without
@into Bot username. - Turn on Enable the Telegram channel and save.
Do not set a webhook for this bot: the queue reads new chats with the Bot API method getUpdates. After subscribing, shoppers see the link Get these alerts in Telegram too (https://t.me/<bot>?start=<token>). When they press Start in Telegram, the next queue run links that chat to their e-mail address, and every following alert is sent by e-mail and Telegram. Shoppers send /stop to the bot to unlink.
License
Section titled “License”The license status is shown in a License card at the top of the add-on page, above the tabs, so you see it on every tab. The License tab holds the key itself. The key is stored once for the whole installation (not per storefront).

The License card shows:
- the status in color: green when valid, blue for a development host or the 14-day period before a key is required (with the days left), amber when the license server could not be reached (with the days left) or a Marketplace number is still being verified, red when the add-on is switched off;
- in plain words what the status means and, when the add-on is (or will be) switched off, what stops: the alert widget is hidden, the core “Notify me” button is no longer replaced and no alerts are queued or sent; existing subscriptions, the customer’s alert list and unsubscribe links keep working;
- the licensed domain, every storefront with its result (covered, development host, not covered), the end of the updates and support period, the last and the next check, and the key in use (masked);
- the actions Enter license key / Change license key (opens the License tab), Check now (verifies at once and stays on the page), Manage license (your licenses on cs-cart.kaviolabs.com) and, without a valid license, Buy a license.
In Add-ons → Manage add-ons the add-on’s row shows a small license badge next to its name, for example License: Valid or License: Pending · 9 days left. The add-on’s own admin pages show the same status in a small bar at the top.
| Setting | Description |
|---|---|
| License key | Your Kavio Labs license key (KAVIO-XXXX-XXXX-XXXX-XXXX, from My licenses on cs-cart.kaviolabs.com) or your CS-Cart Marketplace license number. If you entered the Marketplace license number in Add-ons → Manage add-ons (the add-on’s license field), leave this empty: the add-on uses that number. |
| License status | Points to the License card and explains what the check sends. |
What the license covers. A license is bound to the base domain you entered at purchase (for example example.com) and covers every subdomain of it (www.example.com, shop.example.com, staging.example.com). Local development hosts are always allowed: localhost, 127.0.0.1 and other private IP addresses, and host names ending in .localhost, .test, .local, .example or .invalid. A store on a different base domain needs its own license. If you move your store to a new domain, contact support.
When the add-on checks. When you save the key, and then once a day. The check runs only in the admin panel (on a page you open) or from cron, never while customers browse the storefront, and takes a few seconds at most. A cron job keeps the license verified even when nobody opens the admin panel:
php /path/to/store/admin.php --dispatch=kv_price_stock_alerts_license.checkWhat is sent. The check sends this to https://cs-cart.kaviolabs.com and nothing else: the license key, the add-on ID and version, the host names of your storefronts, your CS-Cart version and edition, and a random one-time value. No customer, order or personal data is sent. The server answers with a digitally signed result, so a forged answer is ignored.
Statuses.
| Status (card) | Color | What happens |
|---|---|---|
| Valid | Green | The license is valid for this domain. Everything works. |
| Development host | Blue | The store runs on a local development host, which every license covers. Everything works. |
| Pending verification | Amber | A CS-Cart Marketplace license number was accepted, but the Marketplace has not confirmed it yet. Everything works. |
| Pending · N days left | Blue | No verified key yet (a new installation, or right after upgrading from 1.0.x). Everything works for 14 days. |
| Grace period · N days left | Amber | The last checks failed (for example a network problem). The add-on keeps working for 14 days after the first failed check. |
| Partly valid | Amber | (CS-Cart with several storefronts) Some storefronts run on another base domain. The widget is hidden, and no alerts are queued or sent, for those storefronts only. |
| Not activated, Invalid key, Revoked, Domain mismatch, Not verified | Red | The alert widget is no longer shown on product pages and the core “Notify me when back in stock” button is no longer replaced. No new alerts are queued and the queue sends nothing (cron, the admin panel fallback and Process queue now). Existing subscriptions and queued alerts are kept, and customers can still open their alert list and unsubscribe. Domain mismatch shows the licensed domain next to the domain your store runs on. |
When your updates and support period ends, the add-on keeps working. Only updates and support stop.
License information appears in the admin panel only, and only for administrators who may manage add-ons; vendors (Multi-Vendor) and customers never see it. When the add-on is switched off, other admin pages also show a notice once per session with a link to the add-on page; the add-on page itself shows the card instead.
E-mail templates
Section titled “E-mail templates”Design → E-mail templates lists four templates under the add-on:
| Template | Variables |
|---|---|
kv_price_stock_alerts_price_drop |
title, text, product_name, product_url, image_url, old_price, new_price, saving, saving_percent, target_price, unsubscribe_url, unsubscribe_all_url, manage_url |
kv_price_stock_alerts_back_in_stock |
as above, plus amount |
kv_price_stock_alerts_low_stock |
as above, plus amount |
kv_price_stock_alerts_confirm |
product_name, product_url, confirm_url, unsubscribe_url |
Prices are already formatted in the currency the shopper used when subscribing. Texts come from the language variables kv_price_stock_alerts.message_title_* and kv_price_stock_alerts.message_text_* (placeholders [product], [old_price], [new_price], [amount], [percent]), which you can edit in Administration → Languages.