Title: Dordam: Request a Quote + Negotiation
Author: NexVibe
Published: <strong>July 21, 2026</strong>
Last modified: July 23, 2026

---

Search plugins

![](https://ps.w.org/dordam/assets/icon-128x128.png?rev=3619504)

# Dordam: Request a Quote + Negotiation

 By [NexVibe](https://profiles.wordpress.org/nexvibe/)

[Download](https://downloads.wordpress.org/plugin/dordam.1.3.6.zip)

 * [Details](https://xho.wordpress.org/plugins/dordam/#description)
 * [Reviews](https://xho.wordpress.org/plugins/dordam/#reviews)
 *  [Installation](https://xho.wordpress.org/plugins/dordam/#installation)
 * [Development](https://xho.wordpress.org/plugins/dordam/#developers)

 [Support](https://wordpress.org/support/plugin/dordam/)

## 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

 1. Go to any Product > Edit > General tab and check “Enable Request a Quote”.
     Optionally
    set a minimum quantity.
 2. Customers visiting that product see a quote request form instead of
     Add to Cart.
 3. You get an email + a new entry under the “Quote Requests” admin menu.
 4. Open the request, set your price per unit, and click “Send Offer to
     Customer”.
    They get an email with a unique accept link.
 5. 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.
 6. 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)

 1. Admin sends an offer. The customer receives a link to a negotiation
     page (not 
    straight to checkout).
 2. On that page the customer can either “Accept & Continue to Checkout”
     or submit
    a counter-offer (a proposed price + optional note).
 3. 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.
 4. This can repeat up to a configurable round limit (default: 5,
     change with the `
    dordam_max_negotiation_rounds` filter) to prevent endless back-and-forth.
 5. 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).

## Screenshots

[[

[[

[[

[[

[[

[[

## Installation

 1. Zip the `dordam` folder (already zipped as dordam.zip if you downloaded it that
    way).
 2. 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.)
 3. Make sure WooCommerce is installed and active.
 4. Edit a product, check “Enable Request a Quote” under Product Data > General.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Dordam: Request a Quote + Negotiation” is open source software. The following people
have contributed to this plugin.

Contributors

 *   [ NexVibe ](https://profiles.wordpress.org/nexvibe/)

[Translate “Dordam: Request a Quote + Negotiation” into your language.](https://translate.wordpress.org/projects/wp-plugins/dordam)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/dordam/), check out
the [SVN repository](https://plugins.svn.wordpress.org/dordam/), or subscribe to
the [development log](https://plugins.trac.wordpress.org/log/dordam/) by [RSS](https://plugins.trac.wordpress.org/log/dordam/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 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.cart` element 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_button`
   class, 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_rounds` filter).
 * 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.

## Meta

 *  Version **1.3.6**
 *  Last updated **3 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.3 or higher **
 *  Tested up to **7.0.2**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/dordam/)
 * Tags
 * [b2b](https://xho.wordpress.org/plugins/tags/b2b/)[negotiation](https://xho.wordpress.org/plugins/tags/negotiation/)
   [quote](https://xho.wordpress.org/plugins/tags/quote/)[request a quote](https://xho.wordpress.org/plugins/tags/request-a-quote/)
   [woocommerce](https://xho.wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://xho.wordpress.org/plugins/dordam/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/dordam/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/dordam/reviews/)

## Contributors

 *   [ NexVibe ](https://profiles.wordpress.org/nexvibe/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/dordam/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://nexvibepro.com)