A WooCommerce extension that lets customers set their own price within admin-defined boundaries. Supports simple, variable, virtual, and downloadable products.
DemoVideo.mp4
Caution
This plugin is 100% vibe coded using Claude Code. It is provided as-is with no support, no warranty, and no guarantees. Use it at your own risk.
Important
This plugin requires WooCommerce to be installed and active. It will display an admin notice and remain inactive without it.
Spin up a live WordPress environment with the plugin pre-installed — no setup required.
Once the site is ready, log in to the WordPress admin using these credentials:
| Field | Value |
|---|---|
| Username | admin |
| Password | Dnft8Cz%S1G-9*A^p#CQ@-e |
Note
TasteWP demo sites are temporary and will expire after a short period.
- Global defaults as percentages of regular price, with per-product fixed-amount overrides
- Suggested price anchoring pre-fills the input to guide customers
- Quick-select preset buttons (e.g., "$10", "$15", "$20", "Custom")
- Variable product support with per-variation overrides and parent inheritance
- Zero-price ($0) support configurable per product
- Sale price mutual exclusivity — PWYW replaces sale pricing entirely
- Real-time inline validation with min/max boundary display
- Editable price input directly in the cart page
- Returning logged-in customers see their last-paid price pre-filled
- Configurable regular price display (strikethrough, reference label, range, or hidden)
- Configurable shop/archive display (price range, suggested, "From $X", or badge)
- Coupon interaction modes: allow normally, enforce minimum floor, or block on PWYW products
- Mixed cart control — allow or restrict PWYW and regular products together
- Bulk enable/disable from the products list table or via bulk actions
- PWYW toggle column with inline switching — no need to open the product editor
- Server-side validation prevents all client-side bypasses
- Dashboard widget with PWYW revenue, order count, average price, and price distribution
- Configurable email alerts when customers pay significantly above or below suggested price
- PWYW columns added to WooCommerce CSV order exports
- Historical order meta preserved regardless of future setting changes
| Requirement | Version |
|---|---|
| WordPress | 6.0 or higher |
| WooCommerce | 8.0 or higher |
| PHP | 8.0 or higher |
-
Go to the Releases page and download the latest ZIP file.
-
In your WordPress admin, go to Plugins > Add New Plugin and click Upload Plugin.
-
Choose the ZIP file you downloaded and click Install Now.
-
Activate the plugin, then navigate to WooCommerce > Settings > Pay What You Want to configure global defaults.
Clone into your plugins directory and install dependencies:
cd wp-content/plugins/
git clone https://github.com/nathanonn/wc-pay-what-you-want.git
cd wc-pay-what-you-want
composer install --no-dev --optimize-autoloaderActivate the plugin in Plugins > Installed Plugins.
After activation, configure the plugin under WooCommerce > Settings > Pay What You Want:
| Setting | What it controls |
|---|---|
| Default Boundaries | Minimum, maximum, and suggested price as percentages of regular price |
| Global Presets | Preset price buttons shown on all PWYW products |
| Price Display Style | How the regular price appears alongside the PWYW input |
| Archive Display | How PWYW prices appear on shop/category pages |
| Quick-Add Default | Which price to use when adding from non-product-page contexts |
| Coupon Mode | Allow, allow with floor enforcement, or block coupons on PWYW products |
| Mixed Cart | Allow or restrict PWYW and regular products in the same cart |
| Email Alerts | Threshold percentages and recipients for above/below suggested price |
| Labels & Messages | Customizable text for input labels, boundary display, and error messages |
Each product has a Pay What You Want tab in the product data panel:
| Level | Where | What you can override |
|---|---|---|
| Product | Product editor > Pay What You Want tab | Enable/disable, min/max/suggested, presets, display, coupons |
| Variation | Variation editor > Override Parent PWYW checkbox | Enable/disable, min/max/suggested, presets |
Blank fields inherit from the parent product or global defaults.
For detailed guides on every feature, see the full documentation:
| # | Guide | Description |
|---|---|---|
| 1 | Getting Started | Installation, activation, requirements, and first-time setup |
| 2 | Global Settings | Configuring the PWYW settings tab in WooCommerce |
| 3 | Setting Up Products | Enabling PWYW on individual simple products |
| 4 | Variable Products | Working with variable products and per-variation overrides |
| 5 | Customer Experience | What customers see on the product page, display styles, and presets |
| 6 | Cart & Checkout | Cart price editing, coupons, mixed cart rules, and checkout |
| 7 | Orders & Analytics | Order data, dashboard widget, email alerts, and CSV export |
| 8 | Bulk Management | Bulk enable/disable PWYW and the product list column |
| 9 | FAQ & Troubleshooting | Common questions, tips, and solutions |
wc-pay-what-you-want/
├── inc/ # PHP classes (PSR-4: WcPwyw\)
│ ├── Admin/ # Settings tab, product panel, bulk tools
│ ├── Frontend/ # Product page, cart, checkout
│ ├── Models/ # Settings, ProductConfig, VariationConfig
│ ├── Services/ # PriceCalculator, Validator, CartHandler
│ └── Analytics/ # Dashboard widget, alert mailer
├── assets/
│ ├── css/ # Admin and frontend stylesheets
│ └── js/ # Admin and frontend scripts
├── templates/ # Frontend template parts
├── languages/ # i18n (.pot + .mo)
├── wc-pay-what-you-want.php # Plugin bootstrap
└── composer.json # PSR-4 autoloading
Data storage:
| Data | Location | Keys |
|---|---|---|
| Global settings | wp_options |
woocommerce_wcpwyw_settings |
| Per-product settings | wp_postmeta |
_wcpwyw_* |
| Per-variation settings | wp_postmeta (variation) |
_wcpwyw_* |
| Order line items | woocommerce_order_itemmeta |
_wcpwyw_* |
| Analytics | Custom table | wcpwyw_analytics |
| Screen | Preview |
|---|---|
| Product Page | ![]() |
| Cart Page | ![]() |
| Global Settings | ![]() |
| Product Editor | ![]() |
| Variation Overrides | ![]() |
| Dashboard Widget | ![]() |
| Shop Page | ![]() |
| Bulk Management | ![]() |
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature) - Commit your changes (
git commit -m 'Add your feature') - Push to the branch (
git push origin feature/your-feature) - Open a Pull Request
Please follow WordPress Coding Standards and ensure all server-side price validation remains intact.
WC Pay What You Want is licensed under the GNU General Public License v2.0 or later.
Copyright (C) 2026 NathanOnn.com
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.







