A complete Request for Quote workflow. Customers request custom pricing on product pages using a drag-and-drop configurable form. Your team responds and negotiates. Accepted quotes convert directly into WooCommerce orders with one click.
Build the quote request form visually — add, remove, and reorder fields. Text, email, phone, textarea, file upload, dropdown, and hidden system fields all supported.
Place the button before or after Add to Cart, in the product summary, on shop/category pages, or anywhere via [woob2b_quote_button] shortcode. Multiple positions can be active simultaneously.
After your team sends a quote, the customer can counter-offer (if enabled). Set max rounds (default: 3) to prevent endless back-and-forth. Each round is tracked with a timestamp.
Optionally allow guests to request quotes without registering — they supply an email and the quote thread continues via email. Or require login for B2B-gated workflows.
Quotes expire after a configurable period (default: 30 days). Customers receive email reminders. Expired quotes cannot be accepted or edited.
Once a customer accepts a quote, one click converts it to a WooCommerce order at the quoted price. All standard WC order processes (payment, fulfilment, email) take over from there.
Clicks "Request a Quote" on a product page or the shop. Fills in the form (pre-populated with product details). Submits — you receive a notification email.
In B2B Commerce Kit → Quotes, open the request. View the customer's details and product interest. Enter your quoted price and any notes. Send.
Customer receives the quote by email or via My Account. They can accept it, reject it, or counter-offer with a different quantity or ask for a better price (if negotiation is enabled).
Once you and the customer agree on a price, the customer clicks "Accept & Order." A WooCommerce order is created at the quoted price and normal fulfilment proceeds.
The built-in form builder lets you customise what information you collect. Common field patterns for B2B:
Add fields for: quantity required, required delivery date, delivery location, special specifications, and a file upload (for artwork, blueprints, or spec sheets).
Keep it short: quantity needed, expected order frequency, and company name. Less friction = more quotes submitted.
Hide prices from all visitors. Show "Request a Quote" instead of a price or Add to Cart button. Forces all new customers into the quote workflow before seeing any pricing.
New buyer registers → you approve and set up a company account → they request a quote → you agree on pricing → they get Net 30 credit. Full B2B onboarding in one flow.
| Setting | Description | Default |
|---|---|---|
Require Login | Whether guest users can submit quote requests. | On |
Allow Negotiation | Let customers counter-offer after you send a quote. | Off |
Max Negotiation Rounds | Maximum back-and-forth rounds before quote auto-closes. | 3 |
Validity Days | Days before a sent quote expires and can no longer be accepted. | 30 |
Display Position | Where the Request Quote button appears on product pages. | After Add to Cart |
Enable on Shop/Category | Show the quote button on shop and category listing pages too. | Off |
Yes, via the woob2b_quote_request_notification action hook. It fires when a new quote is submitted, with the quote ID and all form data as parameters. Use it to route the notification to a product-specific sales rep, push to your CRM as a new deal, or create a task in your project management system. See the Hooks reference for a code example.
RFQ System: Price negotiation before an order exists. Customer requests a custom price. You quote. They accept. An order is created at the agreed price.
PO Approval: Order approval after prices are set. Customer orders at the existing price. The order is held for a manager to sign off before processing.
Many businesses use both: RFQ for new customers or large custom orders, PO Approval as an ongoing internal control for repeat orders.