WooCommerce Offer Pricing Pro
A complete "Make an Offer" negotiation system for WooCommerce — featuring a full admin dashboard, counter-offers, auto-accept rules, 6 UI themes, analytics, and enterprise-grade security out of the box.
Overview
WooCommerce Offer Pricing Pro adds a fully functional price-negotiation channel to your WooCommerce store. Customers can propose their own price on any product; you review every offer in a dedicated back-office, then accept, reject, or make a counter-offer. Both the standard Add to Cart button and the Make an Offer form are displayed side by side — customers choose the purchase path that suits them without any friction.
The plugin is designed for merchants who deal in high-value, limited, or negotiable inventory — wholesale goods, refurbished electronics, art, B2B pricing, estate sales, and similar verticals where a fixed price is not always the right conversation-starter.
Key features
Make an Offer form
AJAX-powered form on every product page. Supports simple and variable products, with per-variation min/max bounds.
Admin offer dashboard
Status-tabbed list, full detail view, single-click Accept / Reject / Counter, bulk actions, and CSV export.
Counter-offers
Propose a price back to the customer. They accept via a secure signed link in their email or My Account page.
Auto-accept threshold
Automatically accept any offer at or above a configurable percentage of the listed price — zero admin time required.
Analytics
KPI tiles, conversion rate, average offer %, top products, daily trend chart, and CSV export — all in one page.
6 frontend themes
Inherit · Light · Dark · Professional · Art Floral · Custom. All CSS-variable driven; fully customisable palette via color picker.
Security-first
HMAC-signed action tokens, nonce verification, rate limiting, capability checks, and CSV-injection mitigation.
Customer My Account
Dedicated "My Offers" tab shows all offer statuses. One-click Add to Cart at the accepted price for any approved offer.
Requirements
| Component | Minimum | Recommended |
|---|---|---|
| WordPress | 6.0 | Latest stable (6.9+) |
| WooCommerce | 7.0 | Latest stable (tested through 10.0) |
| PHP | 8.1 | 8.2 or 8.3 |
| MySQL / MariaDB | 5.7 / 10.3 | 8.0 / 10.6 |
| Browser (admin) | – | Chrome, Firefox, Edge, Safari (last 2 versions) |
| HPOS | Optional | Fully compatible (custom_order_tables declared) |
Installation
There are two equivalent installation methods. Choose whichever fits your workflow.
Method A — Upload via WordPress Admin (recommended)
Navigate to Plugins → Add New → Upload Plugin
In your WordPress admin sidebar, go to Plugins → Add New, then click the Upload Plugin button at the top of the page.
Select the ZIP file
Click Choose File and select woocommerce-offer-pricing-pro-1_0_0.zip from your computer, then click Install Now.
Activate the plugin
After installation completes, click Activate Plugin. A 14-day trial starts automatically — all features are immediately available.
Enter your license key
Go to Offer Pricing → License in the sidebar and paste the key you received after purchase. Click Activate.
Configure the plugin
Go to Offer Pricing → Settings to set global defaults, then enable the offer form on individual products as described in the Per-Product Setup section.
Method B — Manual FTP / SFTP upload
- Unzip
woocommerce-offer-pricing-pro-1_0_0.zipon your computer. - Upload the resulting folder
woocommerce-offer-pricing-pro/to/wp-content/plugins/on your server. - In WordPress Admin, go to Plugins and activate WooCommerce Offer Pricing Pro.
- Continue from Step 4 above (license activation).
wp_wop_offers) and registers a daily cron job to expire pending offers. No changes are made to any existing WooCommerce table.License & Trial
WooCommerce Offer Pricing Pro is a commercial plugin sold by XaniaCode. A license key is required for continued use after the trial period. You can purchase a license on the product page.
14-Day Trial
- Starts automatically on first activation
- Full feature access — no limitations
- No payment required to start
- After expiry: form submissions disabled; stored data and admin remain accessible
Licensed
- Unlimited offer submissions
- Automatic plugin updates from xaniacode.com
- Priority support from XaniaCode
- License key stored encrypted on your server
Activating your license
Open the License page
In the WordPress admin sidebar, go to Offer Pricing → License. If WooCommerce is not yet active, the page is available at Settings → Offer Pricing Pro.
Paste your key and activate
Paste the license key you received after purchase into the field and click Activate. The plugin verifies the key with xaniacode.com and unlocks all features.
Confirmation
A green confirmation notice appears on success. The License page now shows your active license status and expiry date.
General Settings
Navigate to Offer Pricing → Settings to configure the plugin. Settings are grouped into sections described below.
General
| Option | Type | Description |
|---|---|---|
| Enable offer system | Checkbox | Master switch. Uncheck to disable the offer form site-wide without deactivating the plugin. |
| Allow guest offers | Checkbox | When enabled, visitors without an account can submit offers. When disabled, only logged-in customers may do so — a login prompt is shown in place of the form. |
| Offer expiry (days) | Number | Pending offers are automatically expired after this many days. Set to 0 to disable expiry entirely. |
| Global minimum offer (%) | Number (0–100) | Rejects any offer below this percentage of the listed price, store-wide. Per-product minimums take precedence when set. 0 disables the global floor. |
| Auto-accept threshold (%) | Number (0–100) | Offers at or above this percentage of the listed price are accepted automatically, without admin review. 0 disables auto-accept. |
| "Make an Offer" button text | Text | Customise the label on the offer toggle button shown on product pages. |
| Submission success message | Textarea | Message displayed to the customer immediately after a successful offer submission. |
| Terms & conditions label | Text | Optional. Displays a required checkbox on the offer form linking to your Terms URL. Leave blank to hide the checkbox. |
| Terms & conditions URL | URL | Target URL for the Terms checkbox link above. |
Security & Limits
| Option | Type | Description |
|---|---|---|
| Max offers per customer per product | Number | Limits how many active (non-rejected, non-expired) offers a single customer can hold on the same product. 0 = unlimited. |
| Rate limit: max submissions | Number | Maximum number of offer submissions allowed per user (or IP for guests) within the time window below. 0 disables rate limiting. |
| Rate limit: window (seconds) | Number | The rolling time window for rate limiting. Default is 3600 (1 hour). Minimum is 60 seconds. |
Appearance & Themes
The plugin ships with 6 ready-made frontend themes for the offer form and the My Account tab. All themes use CSS custom properties, so they adapt cleanly to your store's font sizing.
Custom theme colors
When the Custom theme is selected, a second settings section appears where you can pick individual colors using the WordPress color picker (Iris). The available fields are:
| Field | Default | Purpose |
|---|---|---|
| Background | #ffffff | Form card background |
| Secondary background | #f7f6fb | Soft surface used inside the form |
| Border | #e2dff0 | Card and input borders |
| Accent | #7f54b3 | Primary action color — button, focus ring, links |
| Text | #1a1a2e | Primary body text |
| Muted text | #6b6880 | Secondary text, hints, helper labels |
Email Notifications
| Option | Description |
|---|---|
| Admin notification email | One or more email addresses (comma-separated) that receive admin notifications. Defaults to the WordPress admin email if left blank. |
| Notify admin on new offer | Send an email to the admin address(es) whenever a customer submits a new offer. |
| Notify customer on status change | Send an email to the customer when their offer is accepted, rejected, or countered. The counter-offer email includes a secure one-click link to accept the counter. |
Email triggers summary
| Event | Recipient | Controlled by |
|---|---|---|
| New offer submitted | Admin | Notify admin on new offer |
| Offer accepted | Customer | Notify customer on status change |
| Offer rejected | Customer | Notify customer on status change |
| Counter-offer proposed | Customer | Notify customer on status change |
| Counter-offer accepted by customer | Admin | Always sent (fixed) |
Per-Product Setup
The offer form is opt-in on a product-by-product basis. Follow these steps for each product where you want to enable price negotiation.
Open the product editor
Go to Products → All Products and click Edit on the product you want to configure.
Find the Offer Pricing section
Scroll down to the Product Data meta box and click the Offer Pricing tab in the left column (it appears below the standard pricing tabs).
Enable Make an Offer
Tick the Enable "Make an Offer" checkbox. The form will become visible on the product's front-end page immediately after saving.
Set optional per-product bounds
Optionally fill in the Minimum offer price and/or Maximum offer price fields (absolute values in your store currency). These override the global percentage minimum for this product.
Variable products — per-variation bounds
For variable products, open each variation in the Variations tab. Each variation has its own Min offer and Max offer fields. The offer form updates live when the customer switches variations on the front end.
Save the product
Click Update (or Publish). The Make an Offer button appears below the standard Add to Cart row on the product page.
Managing Offers
Go to Offer Pricing → Offers to access the full offer dashboard.
Offers list
The list is divided into status tabs at the top: Pending Accepted Rejected Countered Expired Converted. Each row shows the customer name, product, offered price, original price, offer percentage, date, and available actions.
Single offer actions
| Action | Result |
|---|---|
| View | Opens the full offer detail page with all data and action buttons. |
| Accept | Status → Accepted. Customer is notified by email with a one-click Add-to-Cart link at the negotiated price. |
| Reject | Status → Rejected. Customer is notified by email. |
| Counter | Opens a form to enter your counter-price. Status → Countered. Customer receives an email with a secure accept link. |
Bulk actions
Tick the checkboxes on any number of offers, then choose Bulk Accept or Bulk Reject from the bulk action dropdown and click Apply. All selected offers are processed in one step and corresponding email notifications are sent.
CSV export
Use the Export CSV button on any filtered view of the offers list to download the visible rows as a spreadsheet-compatible CSV file. The export includes all key fields and is safe against CSV injection (leading special characters are prefixed automatically).
Counter-Offers
The counter-offer flow lets you propose a price back to the customer instead of outright accepting or rejecting their offer. It is the central negotiation feature of the plugin.
Admin: propose a counter price
In the offer detail view, click Counter and enter your counter-price. Click Send Counter-Offer to update the offer status to Countered.
Customer: receives email notification
The customer gets an email stating the counter-price, containing a secure, signed one-click link. The link is valid for a configurable period (tied to offer expiry) and is scoped specifically to that customer and offer.
Customer: accepts via email or My Account
Clicking the link in the email or using the My Offers tab in My Account transitions the offer to Accepted and adds the product to the cart at the counter price automatically.
Admin: notified of acceptance
Once the customer accepts the counter, the admin receives an automatic notification email confirming that the counter was accepted.
Analytics
The Offer Pricing → Analytics page gives you an at-a-glance view of how price negotiation is performing across your store.
KPI tiles
Total offers received, accepted, conversion rate, and average offer percentage vs. listed price — for the last 30 days by default.
Status breakdown
Counts by status (pending, accepted, rejected, countered, expired, converted) for the selected period.
Top products
A ranked list of the products that attract the most offers, including their individual conversion rates.
Daily trend chart
A line chart of offer volume day-by-day across the selected date range, useful for spotting campaign peaks or seasonality.
Dashboard widget
A WordPress Dashboard widget (visible on the main Dashboard page) shows the 30-day KPIs summary and a direct link to pending offers requiring review — useful for quick daily check-ins without navigating to the full Analytics page.
CSV export
Both the Analytics page and the Offers list provide a Export CSV button. Use it to pull data into Excel, Google Sheets, or your reporting tool of choice for deeper analysis.
Customer My Account
Logged-in customers have a dedicated My Offers tab inside the standard WooCommerce My Account area (/my-account/). No shortcodes or template edits are needed — the tab is registered automatically.
What customers see
| Status | Customer action available |
|---|---|
| Pending | View details. No action until admin reviews. |
| Accepted | Add to Cart at offer price — one-click button adds the product at the negotiated price directly to cart. |
| Countered | Accept Counter-Offer — one-click button or use the secure email link. |
| Rejected | View details. No further action. |
| Expired | View details. Offer has passed its expiry date. |
| Converted | Offer was accepted and added to cart. Order may have been placed. |
Offer Statuses
| Status | Meaning | Next possible states |
|---|---|---|
| Pending | Newly submitted offer awaiting admin review. | Accepted, Rejected, Countered, Expired |
| Accepted | Admin accepted the offer. Customer can add to cart at the offer price. | Converted (when added to cart) |
| Rejected | Admin declined the offer. Terminal state. | — |
| Countered | Admin proposed a counter-price. Awaiting customer decision. | Accepted (customer accepts counter), Expired |
| Expired | Offer exceeded its expiry date without resolution. Terminal state. | — |
| Converted | Accepted offer was added to the cart at the negotiated price. Terminal state. | — |
Uninstall & Data
By default, your offer data is preserved when the plugin is deleted. The database table wp_wop_offers and all settings remain in place, so a reinstall immediately restores full functionality.
wop_* options, all per-product offer meta, all order-item offer meta, and the saved license state.What is removed when "Delete data on uninstall" is enabled
- Database table:
wp_wop_offers - All WordPress options prefixed
wop_ - All post meta keys prefixed
_wop_(per-product settings) - All WooCommerce order item meta added by the plugin
- Saved license state (encrypted key and verification cache)
Frequently Asked Questions
Does the plugin work without a license key?
Yes — for 14 days. A trial starts automatically on first activation. After the trial expires, new offer submissions are blocked until a valid license is activated; all stored offers, admin management, and analytics remain fully accessible.
Does it support variable products?
Yes. Each variation can have its own minimum and maximum offer bounds. The offer form updates live when the customer switches variations on the product page.
Is it compatible with HPOS (High-Performance Order Storage)?
Yes. The plugin declares custom_order_tables compatibility and stores all offer data in its own dedicated table (wp_wop_offers), separate from WooCommerce orders.
Will the plugin hide the Add to Cart button?
No. The standard WooCommerce Add to Cart button is always preserved. The Make an Offer form appears below it as a parallel option — customers can choose either path freely.
Can I bulk process offers?
Yes. The Offers list includes bulk Accept and Reject actions. Select multiple offers using the checkboxes, choose the action from the dropdown, and click Apply. Email notifications are sent for each offer processed.
What happens to my data if I deactivate the plugin?
Deactivation clears the plugin's scheduled cron job but does not remove any data. All offers, settings, and offer meta are preserved. Re-activating the plugin fully restores functionality.
Can guests submit offers?
Yes, if you enable Allow guest offers in Settings. Guests provide their email address with the offer. When an offer is accepted, they are prompted to log in or create an account before adding to cart.
Where can I get support or purchase a license?
Visit the product page on xaniacode.com to purchase, or use the XaniaCode contact page for pre-sales questions or support inquiries.