All case studies

DEV3 Technologies · own product

DEV3 AI Auctions for WooCommerce: four auction types and bids that stay correct under load

Our own WooCommerce plugin that turns any product into a standard, automatic (proxy), sealed or reverse auction, with live bidding, soft close, deposits, fraud signals and optional AI listing and pricing help.

Industry
E-commerce (WooCommerce)

Live project preview

Client systems are private — screenshots shown where permitted.

DEV3 Technologies · own product — screenshots
The live bid panel on a proxy auction: current bid, reserve met, countdown, the bidder's maximum, quick bids and masked recent bids.

The live bid panel on a proxy auction: current bid, reserve met, countdown, the bidder's maximum, quick bids and masked recent bids.

The challenge

An auction is the one place in a shop where two people really do click at the same second, usually in the last minute. If two requests read the same current price and both write a new one, a bid is lost or the wrong bidder wins. Mobile networks retry requests, so the same bid can arrive twice. Proxy bidding adds automatic counter-bids that must be computed against the latest state, and soft close has to extend the end time in the same step. All of this had to run on ordinary WordPress hosting, with no queue or Redis to lean on, and still close auctions, take payment through the normal WooCommerce checkout and catch shill bidding.

Our solution

We built DEV3 AI Auctions as a WooCommerce plugin in PHP with a React admin and a small storefront script for the live bid panel. Bidding is split into a pure engine and a service that owns concurrency.

Key design decisions

  • A pure bid engine. Bid_Engine::compute() takes the auction state and one bid and returns the new state, the rows to store (including automatic proxy bids) and who was outbid. No database, no time, no globals, so every auction type is unit-tested directly.
  • One MySQL named lock per auction. GET_LOCK() serialises bids on the same auction while different auctions bid in parallel. Under the lock the service drops the cached state, re-reads it, runs the engine, stores the rows, saves the state and applies soft close, then releases the lock in a finally block.
  • Idempotent retries. The storefront sends a random request id with each bid. A second request with the same id, even one that arrives while the first holds the lock, finds the stored bid and returns "This bid was already received" instead of bidding again.
  • The closer uses the same lock. Ending an auction, choosing the winner and relisting happen under the auction's lock, so a bid can't slip in while the auction closes.
  • Fraud signals, not black boxes. A risk score is built from named signals (same network as the seller, new account, answering other bids within a minute), with IPs stored only as keyed hashes. The admin decides; an AI second opinion receives anonymous signals only.

Architecture

Auctions are a WooCommerce product type with reserve, buy now, fixed or tiered increments, bidding deposits, scheduled start and end, anti-sniping and relisting rules. Bids live in their own table; the visible price is mirrored to WooCommerce's price meta so sorting, filters and feeds work. The bid panel polls faster near the end, keeps a fresh nonce on cached pages, and masks bidder names. Winners pay through the normal checkout, including the block checkout, from the win email or My Account. Dokan and WCFM vendors can list auctions from their dashboards. With the Google Gemini API connected, DEV3 AI drafts listings from product photos, suggests start, reserve and buy-now prices from past auctions, suggests an end time, writes outbid and win emails and gives a second opinion on fraud flags; every result is a draft. The API client, encrypted key storage and usage logs come from a shared core used across DEV3's plugins.

Results

The plugin is complete. It ships in the DEV3 AI WooCommerce Plugins Bundle on the DEV3 marketplace, alongside 20 other WooCommerce plugins, and is being prepared for CodeCanyon. What was built and verified:

  • Concurrency test over HTTP: 100 simultaneous requests against a WordPress test site (50 bids from 10 bidders, each sent twice at the same moment with the same request id) produced no lost and no duplicate bids
  • 80 PHPUnit tests: proxy sequences, reserve jumps, sealed and reverse auctions, winners for every type, anti-sniping, idempotent retries, deposits, rebuilding after a bidder is removed, closing, relisting, unpaid wins, payments and fraud scoring
  • 40 Jest tests for the bid panel, countdown, polling and admin screens
  • Dokan and WCFM vendor listing built in; the Dokan Pro and WCFM Ultimate parts were built against their documented APIs and tested with stubs, not yet with the paid plugins
  • AI drafts tested with mocked API responses; a live-key run is still to come. Refunds of bidding deposits depend on the payment gateway's refund support

Setup guide

No licence key or activation is needed: install the zip and every feature works.

Requirements

  • WordPress 6.0 or newer and PHP 7.4 or newer, on MySQL or MariaDB (standard WordPress hosting)
  • WooCommerce 8.0 or newer, active (classic and block checkout and HPOS are supported)
  • WP-Cron running, or a real cron job calling wp-cron.php, so auctions close on time
  • Optional: Dokan or WCFM, if vendors should list auctions
  • Optional: a Google Gemini API key for the DEV3 AI drafts. Auctions, bidding, payments, fraud scores and rule-based price and end-time advice work without one

1. Install the plugin

  1. The plugin ships inside the DEV3 AI WooCommerce Plugins Bundle download. Unzip the bundle and find dev3-ai-woocommerce-plugins-bundle/dev3-ai-auctions-for-woocommerce/dev3-ai-auctions-for-woocommerce.zip.
  2. In WordPress, go to Plugins → Add New → Upload Plugin, choose that zip and click Install Now.
  3. Click Activate. DEV3 AI Auctions for WooCommerce appears in the plugin list and its menu, DEV3 AI Auctions, appears in the admin sidebar.

2. Connect Google Gemini (optional)

  1. Create a free API key in Google AI Studio (sign in with a Google account, then Create API key).
  2. Go to DEV3 AI Auctions → API Config, paste the key and click Validate & save. The key is stored encrypted (AES-256-GCM) and never sent to the browser.
  3. Optional: pick the model (gemini-2.5-flash is the fast default; gemini-2.5-pro for the highest quality).

Prefer config files? Add define( 'DEV3AU_GEMINI_API_KEY', 'your-key' ); to wp-config.php instead.

3. First-time setup

  1. Open DEV3 AI Auctions → Settings. Under Bidding, choose the default auction type, duration, bid increments and when buy now stays available. Under Anti-sniping, set the window and extension.
  2. Under Payment & relisting, set how long winners have to pay and when to relist. Under Storefront, choose name masking, bid history and live refresh intervals.
  3. Review Fraud signals (score threshold, what counts as a new account, automatic pause) and, for marketplaces, Let Dokan and WCFM vendors list auctions.
  4. Create a product, choose Auction product as the product type and fill in the Auction tab.
  5. Add the Auctions block or [dev3au_auctions] to a page, the My Auctions block or [dev3au_my_auctions] if you want it outside My Account, and check the auction emails in WooCommerce → Settings → Emails.

Updating

Download the latest bundle, find the new plugin zip at the same path, then upload it in Plugins → Add New → Upload Plugin and choose Replace current with uploaded. Auctions, bids and settings are kept.

Uninstalling

Deactivate and delete the plugin from Plugins. Auction data is removed only if Delete all auction data when the plugin is uninstalled is turned on in Settings.

How to use

Create an auction

  1. Go to Products → Add New (or click New auction on the DEV3 AI Auctions dashboard) and choose Auction product as the product type.
  2. In the Auction tab, choose the type (automatic bidding, standard, sealed or reverse), the start price, reserve, buy-now price, increments, an optional bidding deposit, and the start and end times.
  3. Add photos and publish. The bid panel appears on the product page and the lot appears in the Auctions block.

Write the listing and prices with DEV3 AI

  1. Open the auction in Auctions (or use AI Studio) and go to the DEV3 AI tools.
  2. On Listing writer, add optional notes ("bought in 2019, small scratch on the back") and click Write listing with DEV3 AI. The draft title, description and condition notes are based on the product photos and your notes.
  3. Use Price advice for start, reserve and buy-now suggestions and Best end time for when to end. Accepted drafts fill in the form; click Update to save them.

Manage a live auction

  1. Open Auctions and choose the auction to see the leader, their maximum, watchers and the full bid history.
  2. Use End now, Pause bidding, Cancel, or enter minutes and click Extend.
  3. Click Remove bidder next to a bid to void that bidder's bids; the auction is recalculated from the remaining bids.

Review fraud flags

  1. When the dashboard shows bidders flagged for review, click Review flags or open Fraud review.
  2. Open a flag to see the risk score and each signal. Click Explain with DEV3 AI for a second opinion based on anonymous signals.
  3. Choose Dismiss, Confirm & pause auction or Remove bids & block.

Get paid

  1. When an auction ends, the winner gets a win email with a Pay now link, and the item appears under Won in My Account > Auctions.
  2. Pay now puts the item in the cart at the winning price, minus any deposit, and goes to the normal checkout. Unpaid wins expire after the time you set and can relist automatically.

Related case studies