1.  Project Overview

Jason Kinas operates an online auction platform using Ultimate WooCommerce Auction Pro and requires a new Send Winner Emails screen built into the WordPress admin. After an auction finishes, the admin reviews the winners, selects who to email, and sends each winning bidder a single combined email that lists every lot they won and includes one payment link that opens checkout with all those lots pre-loaded in the cart.

The feature addresses a core workflow gap: currently, winner emails are sent automatically per lot, which means a bidder who won ten lots receives ten separate emails and has to pay ten times. This development replaces that with a single admin-controlled send — one email per bidder, one checkout for all their lots, sent only when the admin is ready.

 

2. Customer Requirements

2.1  Admin Screen

  • Screen accessible from the WordPress admin under Auctions — lists all auctions by product category
  • Per auction row: auction name, category slug, lots closed of total, winner count, unpaid lot count, status badge, last sent (date, time, number of emails)
  • Status badges: Ready to Send (all lots closed, not yet sent), Sent (emails dispatched), Lots Still Running (auction in progress — send locked)
  • Send button disabled while any lot in that auction is still running, with a note showing how many lots remain open
  • Resend uses the same screen and same button — previous send state is shown alongside

2.2  Winner Selection

  • Clicking Send Winner Emails opens the winner selection panel for that auction
  • One row per winning bidder: name, email address, lot numbers won (shown as tags), total including buyer’s premium
  • Per-row tickbox; select-all tickbox in the column header
  • All bidders ticked by default on first send
  • Bidders already emailed start unticked with the last-sent date shown in the Last Sent column
  • A single checkbox — Tick bidders who already received this email — selects all previously-emailed bidders for a deliberate resend
  • Live count on the send button: Send to 12 bidders — updates as tickboxes change
  • Send button disabled when no bidders are selected
  • Unticking a bidder greys out their row to make exclusions visually clear

2.3  Which Lots Are Included

  • A lot is included in the email and payment link when it is: closed, has a winner, and is not already paid for
  • Lots already paid for are excluded from both the email list and the payment link — nobody can be charged twice
  • A note below the winner table confirms: Lots already paid for are left out of both the list and the email

2.4  The Winner Email

  • Subject and heading naming the auction and the number of lots won — e.g. You won 3 lots
  • Personalised greeting using the bidder’s first name
  • One line per lot: lot number tag, lot title, winning bid amount
  • Summary rows: Subtotal, Buyer’s Premium (currently 15%), Total
  • One Pay for all X lots button linking to the multi-lot checkout
  • Plain payment link printed beneath the button for email clients that block images

2.5  The Payment Link

  • Uses the plugin’s existing multi-lot checkout endpoint: /checkout/?pay-uwa-auction=931,948,952
  • On landing, the endpoint verifies per lot that the logged-in user really won it — lots they did not win are silently ignored
  • Verified lots are added to the cart and the user is taken directly to checkout

 

3. Technical Approach

3.1  Admin Screen — Auction List

  • New admin page registered under the Auctions menu in WordPress: Auctions → Send Winner Emails
  • Auction list is built by querying all product categories used by auction products — each category represents one auction
  • Per row: lot counts derived from WooCommerce product queries filtered by category and auction status; winner count and unpaid lot count derived from existing plugin bid and order data
  • Status badge logic: all lots closed + not yet sent → Ready to Send; all lots closed + previously sent → Sent; any lot still running → Lots Still Running with count
  • Send button state: disabled (with lot count note) if any lot is still running; enabled and labelled Send Winner Emails if all lots closed and not yet sent; ghost-styled Resend if previously sent

3.2  Winner Selection Panel

  • Panel rendered inline below the auction row on button click — no page reload
  • Winner list built by querying the plugin’s existing bid data for the selected auction: one row per unique winning bidder, aggregating their won lots, winning bids, and totals
  • Buyer’s premium calculated using the existing plugin Buyer’s Premium addon data
  • Per-row tickboxes with live count update via JavaScript — no server round-trip needed for tick/untick
  • Select-all and Tick bidders who already received this email checkboxes wired to update all relevant rows and refresh the live count

3.3  Combined Winner Email

  • On Send: a server-side PHP function loops the selected bidders, builds the email content for each, and dispatches via wp_mail() using WooCommerce’s email system
  • Email content built per bidder: personalised greeting, lot list (closed + won + unpaid), subtotal, buyer’s premium at 15%, total, payment button, plain link

 

4. Effort — Design & Development

4.1  Admin Screen — Auction List & Status

  • Register new admin page under Auctions menu
  • Build auction list query: categories, lot counts, winner counts, unpaid lot counts
  • Implement status badge logic: Ready to Send, Sent, Lots Still Running
  • Implement send button state: disabled with lot count note, enabled, Resend
  • Populate Last Sent column from send log
  • Test: all status states display correctly; button disabled/enabled correctly; last sent date accurate

Estimated effort: 3 hours

 

4.2  Winner Selection Panel

  • Build winner list query: unique winning bidders, aggregated won lots, totals, buyer’s premium
  • Render inline panel with per-row tickboxes, lot tags, totals, last sent column
  • Implement live count update on tick/untick via JavaScript
  • Implement select-all and Tick bidders who already received this email controls
  • Unticked rows grey out visually
  • Send button disabled when no bidders selected
  • Test: winner list accurate; tick controls work; live count correct; already-emailed bidders start unticked

Estimated effort: 1 hours

 

4.3  Combined Winner Email

  • Build email content generator: greeting, lot list, subtotal, buyer’s premium, total, payment button, plain link
  • Construct multi-lot payment link using existing checkout endpoint with unpaid won lot IDs
  • Dispatch via wp_mail() wrapped in WooCommerce email template
  • Return send result to admin screen: sent, failed, not selected counts
  • Confirm email styling with Jason; apply agreed wording, colours, and branding
  • Test: email received with correct lot list, correct totals, working payment link; WooCommerce wrapper applied

Estimated effort: 1 hours

 

4.4  End-to-End Testing

  • Full flow test: auction closes, admin opens screen, selects bidders, sends, bidder receives email, clicks pay link, completes checkout
  • Lots still running: send button locked correctly
  • Resend: already-emailed bidders start unticked; deliberate resend via checkbox works
  • Paid lots: excluded from email list and payment link correctly
  • Multi-bidder auction: each bidder receives only their own lots
  • Edge cases: bidder with all lots paid (excluded entirely), zero unpaid lots auction, send failure handling

Estimated effort: 1 hours

 

5. Deliverables

The following deliverables will be provided as part of this engagement:

  • Admin screen — Auctions → Send Winner Emails page listing all auctions with lot counts, winner counts, unpaid lots, status badges, and last-sent details; send button locked while any lot is still running
  • Winner selection panel — per-bidder rows with lot tags, totals, and tickboxes; select-all and resend controls; live send count on the button; previously-emailed bidders start unticked
  • Combined winner email — one email per selected bidder listing all their unpaid won lots, subtotal, buyer’s premium, total, and a single pay-all button; styled and worded per Jason’s approval
  • Multi-lot payment link — uses the existing checkout endpoint to pre-fill the cart with all unpaid won lots for that bidder; safe to email — only lots the logged-in user actually won are loaded
  • End-to-end testing — full flow tested including send, email receipt, pay link, checkout, paid-lot exclusion, resend, and edge cases
  • Delivery — plugin ZIP for self-installation or deployment on a staging environment for testing before go-live

6. Effort Snapshot

Deliverable Hours
Admin Screen — Auction List & Status 3
Winner Selection Panel 1
Combined Winner Email 1
End-to-End Testing 1
TOTAL ESTIMATED HOURS 6

7. Commercials & Payment

Total Estimated Effort: 06 hours

Hourly Rate: USD 45 / hour

Total Cost: USD 270