Skip to content

Back In Stock

Back In Stock puts a notify me when it's back field on your out-of-stock product pages, for people who have no account and will not make one, keyed to the exact size or colour they picked.

It confirms the address by email before it will ever send an alert to it, mails each person once when the thing they asked about can be bought again, oldest first and staggered so three units do not mail fifty people, and gives you a per-variant demand report with wait times, which tells you what to reorder.

Nobody signs in, nobody makes an account, and the shopper's IP address is never recorded.

The capture form on a product page. A heading reading "Email me when this is
back", the line "Product 8 — Size: Small" naming the exact variant, one email
field with a "Notify me" button, and under it the notice: the store will email
once and about nothing else, a confirmation message comes first, the request is
deleted after 7 days if nobody confirms and after 12 months if the product does
not come back, every email carries a one-click unsubscribe, and the record that
they asked is kept for three years.

Who it is for

  • Store owners whose out-of-stock pages are a dead end, and who would like the email address rather than the bounce.
  • Anyone selling in sizes or colours, where "out of stock" is one variant rather than the product. Back In Stock alerts on the variant, not the product.
  • Store owners who have to be able to answer what do you hold about me? and delete it without calling a developer.
  • Stores that would rather not spend an evening working out what a consent record has to contain.
  • Administrators who are not comfortable at a command line. Everything happens in the OpenCart admin, and there is a command line for the one case that needs one.

What it does today

  • A capture form on the out-of-stock product page, spliced in below Add to Cart, bound to OpenCart's own option picker. Pick a size that is gone and the form appears naming that size; pick one that is in stock and it goes away.
  • No account and no login. One field, one button, and the shopper is back to what they were doing.
  • Confirmed opt-in, always. Nobody is ever mailed an alert without clicking a link in a confirmation email first. There is no setting that turns it off.
  • A versioned record of exactly what each person agreed to. The notice is rendered, hashed and stored; every sign-up points at the exact wording it was taken under, and editing the wording changes nothing for anybody already waiting.
  • One-click unsubscribe with no account. The link in every alert kills that subscription before the page renders, and the page it lands on also offers stop all alerts for this address and delete everything you hold about me.
  • Alerts only when a customer could buy the thing: the product is enabled, released, in that shopper's store and above your minimum quantity, and the variant they asked about is available, not merely the product.
  • Fair delivery, on by default. Each batch is sized from what is on hand, oldest waiting first, with a wait between batches. Three units landing does not mail the whole list a link to a page that has already sold out.
  • A per-variant demand report with wait times. One row per variant: waiting now, longest wait, alerted in the last 60 days, and the reason an alert could not be sent right now.
  • A waiting list at Catalog → Back In Stock, with an address lookup that answers a subject-access request in one search, and the buttons to honour a withdrawal or an erasure that arrived as a reply.
  • A Back In Stock tab on the product form, with a switch per variant and the same figures for that product.
  • Three ways to run the sweep: OpenCart's own scheduler, a web address anything can fetch on a schedule, or the command line. This works on OpenCart 4.1.0.4, where OpenCart's own scheduler is broken and every other scheduled extension on the store has stopped.
  • Automatic expiry. Unconfirmed sign-ups go after seven days; a watch that never fires goes after the period the person was told; an alerted one goes after 60 days. Nothing accumulates.
  • Deference to Preorder. Where a pre-order is offered for a variant, no stock-alert form is shown for it, because the shopper can buy it now. This is decided per variant, following Preorder's own rules.
  • Your store's own captcha, if you want it on this form.
  • Customers → Personal Data, which answers what do you hold about me? for one named address across every Kyvero extension on the store, and a separate screen that removes everything Back In Stock holds about everybody, with the count shown before you confirm.
  • No other extension required, and specifically not Wishlist.

What it does not do

These are the things Back In Stock does not do. The full version is limits and guarantees; read it before you buy.

  • No rate limiting, flood protection or abuse prevention of any kind, and none is planned. OpenCart tells an extension nothing about a visitor that the visitor cannot change, so a control built on it would refuse honest shoppers and stop nobody. The controls are your store's captcha and whatever sits in front of the store.
  • Beyond the first batch, nothing sends unless something calls the sweep. Saving a product in the admin, or an order change that puts stock back, sends the first batch for those products at once. Every later batch waits for the sweep, which needs one crontab line, one cron service or one command. A store with none of them sends that first batch and nothing more.
  • A watch names one variant. "Any size" is three sign-ups and three confirmations. A combination of two unavailable variants, such as Medium and Forest, is not watchable at all, and the form is withheld rather than guessing.
  • A share of sign-ups will never be alerted, because they never click the confirmation link. That is the cost of confirmed opt-in.
  • No SMS, no push, no webhooks. Email only.
  • No price-drop alerts, no reserving or holding stock for a watcher, and no revenue attribution.
  • No all-time demand figure, and there cannot be one: requests are deleted on the schedule the shopper was promised.
  • No export of subscriber addresses, and no browsable list of suppressed ones.
  • No template editor. The wording of the two emails is plain boxes on the settings screen, with the HTML part written as HTML. An update leaves what you wrote alone.
  • Uninstalling deletes nothing. All six tables are left in place, frozen, so that reinstalling picks up exactly where you left off.

The rest of this section

  • Requirements & install: what the store needs, and the three steps that are all required.
  • Quick start: the whole loop on one product, in ten minutes.
  • Guides: keeping the sweep running, changing the wording, adding a language, answering a customer's request.
  • Reference: the settings, the email placeholders, the API, what it holds about a person, its security verdict and what it costs, generated from the code.
  • Limits & guarantees: what Back In Stock promises, and where that promise stops.
  • Troubleshooting: when it does not behave.
  • Changelog: what changed in each release.

Whichever extension you bought, the shared pages apply to it too.