Description
Built for B2B, wholesale, and custom-order WooCommerce stores where
prices aren’t fixed. Instead of « Add to Cart », quote-enabled products
show a « Request a Quote » form. The admin reviews the request, sets a
per-unit price, and the plugin emails the customer a unique link that
adds the product to their cart at exactly that price and takes them
straight to checkout.
How it works
- Go to any Product > Edit > General tab and check « Enable Request a Quote ».
Optionally set a minimum quantity. - Customers visiting that product see a quote request form instead of
Add to Cart. - You get an email + a new entry under the « Quote Requests » admin menu.
- Open the request, set your price per unit, and click « Send Offer to
Customer ». They get an email with a unique accept link. - When they click it, the product is added to their cart at the
negotiated price (locked server-side, cannot be altered by the
customer) and they’re taken straight to checkout. - Once their order is completed, the quote is marked « Accepted » and
the link can’t be reused.
How multi-round negotiation works (v1.1.0)
- Admin sends an offer. The customer receives a link to a negotiation
page (not straight to checkout). - On that page the customer can either « Accept & Continue to Checkout »
or submit a counter-offer (a proposed price + optional note). - If they counter, the admin is emailed and can review it under
Quote Requests in wp-admin, then send a new offer — which re-opens
the same page for the customer. - This can repeat up to a configurable round limit (default: 5,
change with thedordam_max_negotiation_roundsfilter) to prevent
endless back-and-forth. - Whenever the customer clicks Accept, the price is locked server-side
and they’re sent straight to checkout, same as before.
Roadmap / Not yet included
- A logged-in customer dashboard showing their own quote history.
- Role-based / bulk pricing rule automation.
- Quote expiry (auto-expire offers after N days of inactivity).
- Admin-side « reject quote » action (currently admins simply stop
responding, or send a very high offer, to end a negotiation).
Installation
- Zip the
dordamfolder (already zipped as dordam.zip if you downloaded it that way). - In wp-admin: Plugins > Add New > Upload Plugin > choose the zip > Install > Activate. (Or drop the folder into wp-content/plugins/ via FTP/SFTP and activate from Plugins.)
- Make sure WooCommerce is installed and active.
- Edit a product, check « Enable Request a Quote » under Product Data > General.
Avis
Il n’y a aucun avis sur cette extension.
Contributeurs & développeurs
« Dordam: Request a Quote + Negotiation » est un logiciel libre. Les personnes suivantes ont contribué à cette extension.
ContributeursTraduisez « Dordam: Request a Quote + Negotiation » dans votre langue.
Le développement vous intéresse ?
Parcourir le code, consulter le SVN dépôt, ou s’inscrire au journal de développement par RSS.
Historique des changements
1.3.5
- Fix: the quote button now displays as a full-width block button (like most themes’ Add to Cart) with consistent spacing above/below, instead of an inline button that could visually collide with Add to Cart on themes with different button widths.
1.3.5
- Fix: the quote button was narrower than the real Add to Cart button, since it sits outside WooCommerce’s own flex-laid-out cart form (which is what stretches Add to Cart to full width). The button is now explicitly full-width with matching padding, so it visually matches Add to Cart on any theme.
1.3.6
- Fix: Plugin Check nonce-verification warning on the Settings page’s « saved » notice — documented as a read-only display flag (the actual save is already nonce-verified in handle_save()).
1.3.5
- Fix: the quote button now copies the real Add to Cart button’s CSS classes and stretches to full width via JavaScript, so it visually matches the theme’s actual button styling (size, color, font) instead of looking like a separate, oddly-sized element next to it.
1.3.4
- Fix: the quote button/form was rendering wherever PHP hook priority happened to place it, which didn’t match the actual Add to Cart position on themes that don’t follow WooCommerce’s standard priority layout. Positioning (before/after/replace) is now done in JavaScript by moving the button next to the real, rendered
form.cartelement in the DOM — this matches the visible Add to Cart position exactly, regardless of theme/page-builder quirks.
1.3.3
- Fix: « replace » mode still wasn’t reliably hiding WooCommerce’s Add to Cart form on some themes/setups, since remove_action() timing can vary. Added a CSS-based fallback that hides the Add to Cart form for that specific product (scoped via WordPress’s own postid-{ID} body class), which works regardless of hook order or how the theme renders the page.
1.3.2
- Fix: « replace » button position never actually removed WooCommerce’s Add to Cart button. Both were hooked at the same priority (30), and WooCommerce’s own callback (registered first) always ran before ours could call remove_action() on it — too late to have any effect. The removal now happens in its own earlier-priority (5) callback, before WooCommerce’s Add to Cart template ever fires.
- Fix: the « Request a Quote » toggle button now uses WooCommerce’s own
single_add_to_cart_buttonclass, so it inherits your theme’s normal Add to Cart button styling instead of looking like a plain bordered box. The boxed/bordered styling now only applies to the expanded form, not the button itself.
1.3.1
- Fix: the Settings page is now a tab inside « Quote Requests » (?page=dordam-quotes&tab=settings) instead of a separate WordPress submenu page. The separate submenu link was sometimes generated without the required « admin.php?page= » prefix by WordPress core’s own menu-rendering logic, leading to a broken link / 404. Using a tab on the existing page avoids that class of issue entirely.
1.3.0
- New: quote-enabled products now show a « Request a Quote » toggle button instead of the full form by default; clicking it reveals the form. Button text and position (replace/before/after Add to Cart) are configurable under Quote Requests > Settings.
- New: customers now get a confirmation email when they submit a quote request (previously only the admin was notified).
- New: honeypot field on the quote request form to quietly filter out basic bot spam.
- New: optional data cleanup on uninstall (Quote Requests > Settings > « Delete all quote request data when this plugin is deleted »), off by default.
- Changed: default negotiation round limit lowered from 5 to 2 (still filterable via
dordam_max_negotiation_rounds).
1.2.1
- Fix: prefixed a template-local variable ($display_price -> $dordam_display_price) flagged by the PrefixAllGlobals sniff in templates/quote-response-page.php.
- Updated Author to « NexVibe » and Contributors to « nexvibe ». Text Domain and plugin slug remain « dordam » (unchanged).
1.2.0
- Fix: renamed all functions, classes, constants, hooks, post type, and meta keys from the « rqn » prefix (too short) to « dordam » (matches plugin slug), per WordPress.org Plugin Review Team feedback.
- Fix: replaced echoed inline
<style>block in the admin quote screen with a properly enqueued stylesheet (assets/css/dordam-admin.css), loaded only on our own admin page via admin_enqueue_scripts.
1.1.3
- Renamed plugin to « Dordam: Request a Quote + Negotiation ».
- Text Domain changed from « request-a-quote-negotiation » to « dordam » to match the new plugin slug.
1.1.2
- Fix: short description rewritten again with simpler, more common wording (still flagged as « non-standard English » after the first rewrite).
- Fix: remaining nonce-verification warnings — phpcs:ignore only silences the single following line, so a few $_GET/$_POST reads sitting on their own line right after an ignore comment were still being flagged; each now has its own comment.
1.1.1
- Fix: removed placeholder « example.com » Plugin/Author URI (flagged by Plugin Check as a discouraged domain).
- Fix: Text Domain now matches the plugin slug (was « rqn », now « request-a-quote-negotiation »).
- Fix: replaced strip_tags() with wp_strip_all_tags() per WordPress coding standards.
- Fix: properly escaped remaining dynamic output in the admin quote screen.
- Fix: readme short description rewritten in plain standard English; Tested up to updated to 7.0.
- Docs: documented why the accept/negotiation links use a per-quote secret token instead of a WordPress nonce (they’re emailed to anonymous customers and must stay valid for days).
1.1.0
- New: multi-round customer counter-offers with a dedicated
negotiation response page (accept or counter-offer). - New: configurable round limit (
dordam_max_negotiation_roundsfilter). - New: « Countered » status with color-coded status badges in wp-admin.
- Admin can now respond to a « countered » quote with a new offer,
pre-filled with the customer’s proposed price.
1.0.0
- Initial MVP release.





