1. Project Overview

Leftover Treasures operates an online auction platform at fresnoestatesaleauctionthriftstore.com using Ultimate WooCommerce Auction Pro — Unlimited. This proposal covers two independent custom development features requested by the client.

Feature 1 : extends the existing Take Fees for Bidding addon. Currently the addon supports two fee modes: a one-time fee to bid on any product, or a per-product fee each time a user bids on a new product. The client requires a new third option to be added alongside these existing modes: a monthly recurring subscription at $2.99 every 30 days via Stripe, which grants unrestricted bidding access across all auction products. The existing one-time and per-product fee options remain fully intact and unchanged.

Feature 2 : adds a Copy URL button directly on WordPress Media Library thumbnails in the grid view. This button copies the image URL to the clipboard in one click — saving the extra step of opening each image’s attachment page to access the Copy URL to Clipboard link that is currently only available there.

The two core development areas are:

  • Feature 1: Monthly Bidding Subscription via Stripe — new third fee mode added alongside the existing one-time and per-product options; $2.99/30-day recurring subscription via Stripe; user-controlled auto-renew; bidding access gated on active subscription status
  • Feature 2: Copy URL Button on Media Library Thumbnails — one-click clipboard copy of image URL directly from the Media Library grid view, eliminating the extra step of opening the attachment page

Assumptions

Feature 1 — Monthly Bidding Subscription

  • The existing Take Fees for Bidding addon is active and currently configured on the site
  • Stripe is already configured and active as a payment gateway on the WooCommerce store
  • The Stripe account has recurring/subscription billing enabled — Stripe Billing or Stripe’s subscription API will be used for recurring charges
  • The existing one-time and per-product bidding fee options remain fully intact and unchanged — the monthly subscription is added as a new third option; switching between modes is controlled by the admin via the existing settings panel
  • The $2.99 monthly fee and 30-day billing cycle are fixed as specified — any changes to pricing or billing period after development are out of scope
  • Stripe processing fees (typically ~2.9% + $0.30 per transaction) are borne by Leftover Treasures through their own Stripe account

Feature 2 — Copy URL Button

  • The WordPress Media Library is used in standard grid view (list view is out of scope unless separately agreed)
  • The Copy URL button applies to image file types — other file types (PDF, video, audio) are out of scope unless separately agreed
  • Modern browser clipboard API is used — clipboard copy requires the site to be served over HTTPS, which is assumed to be the case

General

    • Ultimate WooCommerce Auction Pro — Unlimited is installed, active, and on a supported version at the time development begins
    • WordPress and WooCommerce are on supported and up-to-date versions at the time development begins
    • A staging environment will be provided by Leftover Treasures for development and testing before go-live
    • Any incompatibilities arising from future updates to WordPress, WooCommerce, or the auction plugin after delivery are outside scope; remediation work will be billed separately
    • Go-live deployment to the production site is Leftover Treasures’ responsibility unless separately agreed

 

  1. Customer Requirements(Scope of work)
  2. Feature 1: Monthly Bidding Subscription1.1  Subscription Model — New Third Fee Mode
    • A new Monthly Subscription option must be added to the existing Place Bid Fee settings as a third fee mode alongside the existing two options
    • The three fee modes available to admin must be: (1) One-time fee to bid on any product — existing, unchanged; (2) Per-product fee each time a user bids on a new product — existing, unchanged; (3) Monthly Subscription — new option added by this development
    • Monthly Subscription fee: $2.99 per 30-day billing cycle, auto-billed to the credit card on file via Stripe
    • When Monthly Subscription mode is selected by admin, an active subscription grants the user unrestricted bidding access across all auction products and categories on the site
    • When Monthly Subscription mode is active, no per-bid or per-product fee is charged to subscribed users

    1.2  Auto-Renew

    • Subscription auto-renews every 30 days automatically — no user action required
    • User can enable or disable auto-renew from their account/profile area
    • When auto-renew is enabled: subscription renews automatically every 30 days; user retains bidding access without interruption
    • When auto-renew is disabled: subscription remains active until the current 30-day period ends, then expires; user is blocked from placing bids after expiry

    1.3  Bidding Access Gating & Subscription Popup

    • Clicking Subscribe Now redirects the user to a dedicated subscription checkout page where they enter their card details and confirm payment via Stripe
    • On successful payment via the checkout page: user is marked as an active subscriber and automatically redirected back to the auction page; the user then places their bid as normal — they now have full bidding access and the bid form is immediately available
    • If checkout is abandoned or payment fails, user is returned to the auction page without a subscription or bid placed; they can attempt to subscribe again at any time
    • Users with an active subscription can place bids on any auction product without restrictionUsers with an active subscription can place bids on any auction product without restriction
    • Users without an active subscription (never subscribed, cancelled, or lapsed) are blocked from placing bids
    • When a non-subscribed user clicks the Place Bid button, a popup modal is displayed immediately — the bid is not placed; the popup shows the subscription details and a Subscribe Now button that redirects to the checkout page
    • The subscription popup must clearly display: the subscription plan name, the monthly fee ($2.99), the billing frequency (every 30 days, auto-renews), what the user gets (unlimited bidding access on all auction products), and a Subscribe Now button

    Feature 2: Copy URL Button on Media Library Thumbnails

    2.1  Copy URL Button in Grid View

    • A Copy URL button must be added to each image thumbnail in the WordPress Media Library grid view (wp-admin → Media → Library)
    • The button must be visible on each thumbnail — positioned below the image thumbnail, matching the reference design provided by the client
    • When the button is clicked, the full image URL is copied to the clipboard instantly
    • A brief visual confirmation must be shown after the copy action (e.g. button text changes to “Copied!” for 1–2 seconds)
    • This eliminates the current extra step of opening the image attachment page to access the Copy URL to Clipboard link
    • The existing Copy URL to Clipboard link on the individual attachment page must remain unchanged
  3. Technical Approach

4.1  Feature 1 — Monthly Bidding Subscription via Stripe

      • A new subscription management module is built as an addon within the existing plugin architecture — consistent with how all existing addons (Buyer’s Premium, Bidding Fees, etc.) are structured
      • On bid attempt by a non-subscribed user: the Place Bid action is intercepted; a popup modal is displayed immediately on the auction page showing full subscription details (plan name, $2.99/month fee, 30-day auto-renew, unlimited bidding access) and a Subscribe Now button
      • Subscribe Now redirects the user to a dedicated WooCommerce-based subscription checkout page; user enters card details; on payment confirmation Stripe creates a Customer, attaches the card, and creates a recurring Subscription at $2.99/30 days
      • On successful payment: user is marked as an active subscriber; they are redirected back to the auction page they came from; the user then places their bid themselves — the bid form is now active and available as they have an active subscription
      • Stripe webhooks are used to handle subscription lifecycle events: renewal success (access continues), renewal failure (access suspended), cancellation (access removed at end of current period)
      • Auto-renew toggle is added to the user’s account area: toggling off cancels the Stripe subscription at period end (access continues until expiry); toggling on reactivates subscription
      • Bidding access check is added to the existing bid placement hook — if user is not an active subscriber, bid is blocked and subscription prompt is shown
      • Admin settings: enable/disable the subscription feature, view all active/inactive subscribers, and manually override subscription status per user if needed

4.2  Feature 2 — Copy URL Button on Media Library Thumbnails

      • A small JavaScript file is enqueued on the WordPress Media Library admin page (wp-admin/upload.php) only — no impact on any other admin or frontend page
      • The script uses a MutationObserver to detect when thumbnail elements are rendered in the grid (the Media Library loads items dynamically via AJAX)
      • For each image thumbnail, a Copy URL button is injected below the thumbnail image element — matching the reference layout provided by the client
      • On button click: the attachment’s URL is read from the thumbnail’s existing data attributes and copied to the clipboard using the browser’s navigator.clipboard.writeText() API
      • Visual confirmation: button text switches to “Copied!” for 1.5 seconds then reverts to “Copy URL”
      • The existing Copy URL to Clipboard link on the individual attachment detail page is completely untouched
      1. Effort — Design & Development

5.1  Stripe Subscription — Setup & Checkout Flow

      • Intercept Place Bid click for non-subscribed users and display subscription popup modal on the auction page
      • Popup displays: plan name, $2.99/month fee, 30-day auto-renew, unlimited bidding access, and Subscribe Now button
      • Store Stripe Customer ID and subscription status against WordPress user
      • Subscribe Now redirects to dedicated subscription checkout page; Stripe Customer and Subscription created on payment confirmation
      • On successful payment: user redirected back to originating auction page; user places bid themselves using now-active bid formTest: non-subscribed user sees popup; popup content correct; Subscribe Now redirects to checkout; payment creates subscription; user returned to auction page with bid placed automatically

Estimated effort: 8 hours

5.2  Stripe Webhooks — Subscription Lifecycle

      • Register WordPress webhook endpoint to receive Stripe subscription events
      • Handle: invoice.paid (renewal success — extend access), invoice.payment_failed (suspend access), customer.subscription.deleted (remove access at period end)
      • Update user subscription status in WordPress on each webhook event
      • Test: renewal success extends access; payment failure suspends; cancellation removes access at period end

Estimated effort: 5 hours

5.3  Bidding Access Gate

      • Hook into the existing bid placement logic to check subscription status before allowing a bid
      • Non-subscribed users are blocked and shown the subscription prompt
      • Active subscribers pass through without any change to existing bid flow
      • Test: subscribed user bids without interruption; non-subscribed user is blocked and shown prompt

Estimated effort: 3 hours

5.4  Auto-Renew Toggle — User Account Area

      • Add subscription management section to the user’s WooCommerce My Account area
      • Display: current subscription status, next billing date, auto-renew toggle
      • Auto-renew off: cancels Stripe subscription at period end — access continues until expiry date
      • Auto-renew on: reactivates subscription via Stripe API
      • Test: toggle off cancels at period end; toggle on reactivates; status and dates display correctly

Estimated effort: 4 hours

5.5  Admin Settings & User Management

      • Add subscription settings to existing plugin admin panel: enable/disable subscription feature, subscription fee display
      • Add subscriber list view in admin: shows all users with subscription status, start date, next billing date
      • Manual override: admin can mark any user as active or inactive subscriber
      • Test: settings save correctly; subscriber list accurate; manual override works immediately

Estimated effort: 3 hours

5.6  Feature 2 — Copy URL Button on Media Library Thumbnails

      • Enqueue JavaScript on WordPress Media Library admin page only
      • Use MutationObserver to detect dynamically loaded thumbnails and inject Copy URL button below each image
      • On click: read image URL from thumbnail data attributes and copy to clipboard via navigator.clipboard API
      • Visual confirmation: button text changes to “Copied!” for 1.5 seconds then reverts
      • Test: button appears on all image thumbnails in grid view; click copies correct URL; confirmation shown; attachment page unchanged

Estimated effort: 3 hours

5.7  End-to-End Testing

      • Feature 1: full subscription journey — new user subscribes, bids, auto-renew fires, user cancels, access expires
      • Feature 1: Stripe webhook handling — simulate renewal, failure, and cancellation events
      • Feature 1: auto-renew toggle — disable and re-enable, confirm correct Stripe behaviour
      • Feature 1: admin controls — subscriber list accuracy, manual override
      • Feature 2: Copy URL button on all image thumbnails; correct URL copied; confirmation shown; no impact on other admin pages or attachment page

Estimated effort: 4 hours

  1. Effort Snapshot
Deliverable Hours
Feature 1 — Stripe Subscription: Setup & Checkout Flow 8
Feature 1 — Stripe Webhooks: Subscription Lifecycle 5
Feature 1 — Bidding Access Gate 3
Feature 1 — Auto-Renew Toggle: User Account Area 4
Feature 1 — Admin Settings & Subscriber Management 3
Feature 2 — Copy URL Button on Media Library Thumbnails 3
End-to-End Testing (Both Features) 4
TOTAL ESTIMATED HOURS 30

 

Note: Feature 1 (Monthly Subscription) and Feature 2 (Copy URL Button) are independent of each other and can be delivered and tested separately. Feature 1 uses Stripe Billing API and webhooks — Stripe processing fees (~2.9% + $0.30 per transaction) are charged directly by Stripe and are not included in this proposal.

Deliverables

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

      • Monthly bidding subscription — new third fee mode added to the existing Place Bid Fee settings; $2.99/30-day Stripe subscription grants unrestricted bidding access; existing one-time and per-product fee modes remain fully intact and unchanged
      • Subscription popup — displayed when non-subscribed user clicks Place Bid; shows plan name, $2.99/month, 30-day auto-renew, unlimited access, and Subscribe Now button; Subscribe Now redirects to checkout; on successful payment user is redirected back to the auction page where they can immediately place their bid
      • Stripe webhook handling — renewal success, payment failure, and cancellation events handled automatically; user subscription status updated in real time
      • Bidding access gate — bid placement blocked for non-subscribed, cancelled, or lapsed users; active subscribers bid without interruption
      • Auto-renew toggle — user can enable or disable auto-renew from their WooCommerce My Account area; disabling cancels at period end with access continuing until expiry
      • Admin subscription management — admin settings panel with enable/disable toggle; subscriber list showing all users with status, dates, and manual override capability
      • Copy URL button on Media Library thumbnails — Copy URL button added below each image thumbnail in WordPress Media Library grid view; one-click clipboard copy with visual confirmation; attachment page unchanged
      • End-to-end testing — full subscription lifecycle tested (subscribe, renew, cancel, lapse); webhook simulation; Copy URL button tested across all image thumbnails
      • Delivery — plugin ZIP for self-installation or deployment on a staging clone of fresnoestatesaleauctionthriftstore.com for testing before go-live
  1. Commercials & Payment

Project Cost

Total Estimated Effort: 30 hours

Hourly Rate: USD 45 / hour

Total Cost : USD 1,350