Gatemi Back in Stock turns “out of stock” from a lost sale into a queue of people waiting to buy. A shopper leaves their address; when stock comes back they are emailed, once.
Nobody is emailed who did not ask. An address typed into a form is not proof of consent — anybody can type anybody’s — so nothing is sent until a link in a message to that address is opened. A signed-in customer using their own address is taken at their word, because WordPress already confirmed it.
Nobody is emailed twice. Signing up is idempotent through a UNIQUE (product_id, email) index rather than a check a double tap can lose, and every send is claimed first — one statement that both selects the row and marks it sent, so a stock change that fires twice (and WooCommerce’s stock hooks do) sends one email.
Nothing is sent inside your stock update. WooCommerce announces a restock in the request that saved the product — often an import or a bulk edit — and mailing two hundred people there is how “set stock to 40” becomes a timeout. Each change queues a sweep, which re-reads stock so nobody is sent to a page where the last unit has already gone.
Gatemi Back in Stock for WooCommerce is a separate plugin, sold on gatemi.com, that adds a demand report — what people are waiting for, most-waited-for first, which is a list of things to reorder — your own button text, subject and message, a batch size of your own, and a waitlist on some products rather than every out-of-stock one. Both editions keep the waitlist in the same table, so upgrading loses nobody.