rfqpro
Woo RFQ Pro for WooCommerce
A complete B2B Request-for-Quotation system: let customers request prices, build a quote cart, negotiate, receive branded PDF quotations, and pay — turning quotes into real WooCommerce orders.
Woo RFQ Pro adds a full quoting workflow to your store: from an "Add to Quote" button on the storefront, through pricing and negotiation in your dashboard, to a paid WooCommerce order. This document covers everything the app does and how to set it up.
1. Overview — how the app works
Woo RFQ Pro sits on top of WooCommerce and owns the "request a price" journey.
Instead of forcing every visitor to buy at list price, Woo RFQ Pro lets them add products to a quote cart and submit a request. Each request lands in your dashboard, where you set quoted prices, apply discounts and tax, and send a branded PDF quotation. The customer can accept, reject, or negotiate from a secure link — and once they agree, you convert the quote into a native WooCommerce order with a payment link.
- Quotes and their data live in your own WordPress database (custom tables) and convert to real WooCommerce orders.
- Works alongside your normal store — you choose whether the quote button sits beside "Add to Cart" or replaces it.
- Every step is covered by an email, so customers and staff always know what happens next.
No spreadsheets, no lost threads. The whole conversation — messages, revisions, quoted prices, and the final order — is kept against each quote, so nothing slips through the cracks.
2. Quick start — five steps to go live
Most stores are quoting within 15 minutes. These five steps get you running.
Step 1 — Activate the plugin
Install and activate Woo RFQ Pro (WooCommerce must be active). On activation it creates its tables and a Request a Quote page automatically. Then open Woo RFQ Pro → License and enter your license key (self-hosted build) or CodeCanyon purchase code.
Step 2 — Choose how quoting behaves
Go to Woo RFQ Pro → Settings → Button Settings. Pick a mode: Additive (an "Add to Quote" button appears beside Add to Cart) or Replace (quoting replaces the buy flow). Optionally tick Hide prices and Hide Add to Cart to run a pure "call for price" catalog.
Step 3 — Decide who sees RFQ
Under Product/Category Rules, limit quoting to specific products, categories, user roles, or guests — or leave everything empty to enable it store-wide.
Step 4 — Set your branding
In PDF Settings, add your logo, company name, address, contact details, accent color, and terms. In Email Templates, set your From name/address and adjust any wording. This is what customers see on quotations and emails.
Step 5 — Test one quote end to end
On the storefront, add a product to a quote and submit the request. Open it in Woo RFQ Pro → Quotes, set prices, send the quotation, then accept it and convert it to an order. You have now seen the whole workflow.
Tip: The auto-created Request a Quote page already contains the [rfq_quote_basket] shortcode, so the customer's quote cart works out of the box.
3. The Add-to-Quote button
Capture quote requests right from the product and shop pages.
Woo RFQ Pro places an "Add to Quote" button on single product pages and in shop/category listings. It works on both block (FSE) themes such as Twenty Twenty-Five and classic themes.
- Two modes — Additive (button beside Add to Cart) or Replace (quote replaces the buy flow).
- Custom label & colors — set the button text, background color, and text color.
- Location control — show it on both single and loop, single only, or loop only.
- Precise placement — choose where it appears (e.g. after the price, after the excerpt, before/after the cart button, or in the product meta).
- Hide prices and hide Add to Cart to convert the catalog into a quote-only experience.
Block themes handled automatically. On block themes the button is injected into the correct WooCommerce blocks; on classic themes it uses the standard hooks. You don't need to touch template files.
4. Display rules — who can request quotes
Turn RFQ on exactly where you want it.
- By product — enable RFQ only for specific product IDs (leave empty for all products).
- By category — enable RFQ for selected product categories.
- By user role — restrict RFQ to chosen B2B roles (leave empty for everyone).
- Guests — offer quoting to guests or require login, as you prefer.
5. Quote cart & customer request
A dedicated basket for building and submitting a quote.
Customers add products to a session-based quote cart that persists as they browse. A floating quote widget shows the item count and updates live as they add, edit, or remove items.
When they are ready, the request form collects name, email, phone, company, city, country, and a free-text message. Customers can also attach a file (for example a spec sheet or drawing).
- File attachment upload with a safe file-type allowlist.
- Spam protection via a hidden honeypot field that silently blocks bots.
- Shortcodes to place elements anywhere:
[rfq_quote_basket],[rfq_quote_form], and[rfq_customer_quote].
6. Managing quotes in the dashboard
Every request in one organized workspace.
Open Woo RFQ Pro → Quotes for a full list with status-filter views (each showing a live count), keyword search, sortable columns, pagination, row actions, and bulk delete. Each quote has a unique number in the format RFQ-YYYY-NNNNN.
Open a quote to reach the detail workspace: the customer's info and attachment, editable line items, pricing controls, notes, status, and expiry — plus the negotiation thread and revision history.
Quote statuses
| Status | Meaning |
|---|---|
| New | Just submitted by the customer. |
| Sent to Supplier | Forwarded to one or more suppliers for sourcing. |
| Quotation Sent | You have priced it and emailed the customer the quotation. |
| Negotiation | The customer has replied / requested changes. |
| Approved | The customer accepted the quotation. |
| Rejected | The customer declined. |
| Converted to Order | Turned into a WooCommerce order. |
| Expired | Passed its expiry date without a response. |
7. Pricing, discounts, tax & totals
Quote precisely, with the maths handled for you.
- Per-line pricing — set the quoted unit price and quantity for each item, with a live line-total preview.
- Discount — a flat amount or a percentage.
- Tax — a flat amount or a percentage, applied after the discount.
- Shipping — add a shipping amount.
- Automatic total —
total = subtotal − discount + tax + shipping, recalculated as you type. - Notes — internal (staff-only) notes and customer-visible notes.
- Expiry date — set how long the quotation is valid.
8. PDF quotations
Professional, branded quotations generated on your server.
- Two templates — Modern and Classic (bordered, with signature lines).
- Your branding — logo, company name, address, phone, email, accent color, and terms & conditions.
- Auto-attached to the "quotation sent" email, and downloadable by both you and the customer.
- Fully offline — generated with a bundled engine; no third-party service and no remote asset loading.
9. Email automation
Ten editable templates cover the entire lifecycle.
Each email can be turned on or off, has an editable subject and body, and supports placeholders. Emails are wrapped in a branded HTML layout using your company name and accent color, and sent from your configured From name and address.
| Recipient | When | |
|---|---|---|
| New quote request | Admin | Automatic on submission |
| Quote request confirmation | Customer | Automatic on submission |
| Quotation sent | Customer | Manual (PDF attached) |
| Quote accepted | Admin | Automatic |
| Quote rejected | Admin | Automatic |
| Customer message / revision request | Admin | Automatic |
| Order ready for payment | Customer | Manual (payment link) |
| Quote request to supplier | Supplier | Manual (items table) |
| Reply to customer (negotiation) | Customer | Manual |
| Quote expiry reminder | Customer | Automatic (daily) |
Available placeholders: {customer_name} {quote_id} {quote_link} {company_name} {customer_message} {reply_message} {quote_total} {expiry_date} {payment_link} {items_table}
Local testing note. On a local server without SMTP, WordPress may not actually deliver mail. Use an SMTP plugin/service in production to ensure emails arrive.
10. Customer portal — accept, reject, negotiate
A secure, login-free page for the customer to respond.
Every quotation email links to a secure, tokenized view of the quote — no account required. From there the customer can:
- Accept or reject the quotation.
- Send a message or request changes, starting a negotiation.
- Follow the conversation thread of the whole back-and-forth.
- Download the PDF quotation.
Responses are only allowed while the quote is respondable and not expired, and each action is protected with a security nonce.
11. Convert a quote to an order
Turn an agreed quote into a payable WooCommerce order.
One click converts an accepted quote into a native WooCommerce order at the agreed prices. The discount is applied as a negative fee, tax as a fee line, and shipping as a shipping item, so the order total matches the quote total exactly. The order and quote are linked to each other, the quote is marked Converted, and the customer receives a secure payment link.
Safe to click. Conversion is guarded against duplicates and handles missing products gracefully, and order edit links are HPOS-aware.
12. Suppliers
Source pricing from your suppliers without leaving the quote.
- Supplier directory — add, edit, and remove suppliers (name, contact, email, phone, company, categories, notes).
- Send RFQ to suppliers — email selected suppliers a request containing an items table and the customer's requirements.
- Configurable supplier email — set the subject and intro text.
- The quote advances to Sent to Supplier and the action is logged internally.
13. B2B role-based pricing
Give each customer tier its own pricing automatically.
Set a percentage discount per user role (for example Wholesale −20%). It applies to product, variation, and sale prices, and when a customer belongs to multiple roles the highest matching discount wins. Toggle the whole feature on or off from the B2B Pricing tab.
14. Import & export
Move quote data in and out as CSV.
- Export quotes — all, by status, or a specific selection chosen with a search-as-you-type picker.
- Per-quote export from the detail screen, and a separate line-items export.
- Import quotes — header-mapped CSV that groups rows into multi-item quotes, matches products by ID or SKU, and accepts optional quoted price and status.
15. Settings reference
Everything is configured under Woo RFQ Pro → Settings.
| Tab | What you control |
|---|---|
| General | Enable RFQ, default quote expiry (days), admin notification email. |
| Button Settings | RFQ mode, button label/colors, location and placement, hide prices, hide Add to Cart. |
| Product/Category Rules | Restrict RFQ by products, categories, roles, or guests. |
| B2B Pricing | Enable role pricing and set per-role discount percentages. |
| Email Templates | From name/address and all ten email templates (subject, body, on/off). |
| PDF Settings | Logo, company details, accent color, terms, and template (Modern/Classic). |
| Supplier Settings | Supplier email subject and intro text. |
| Advanced | Delete-all-data on uninstall, debug logging. |
16. Licensing & updates
Two ways to license, one to keep up to date.
- CodeCanyon build — activate with your purchase code; updates arrive through CodeCanyon.
- Self-hosted build — activate with a license key. Activation limits, expiry, and revocation are enforced, with a 14-day offline grace period so a server hiccup never disables a live store.
- Automatic updates — the self-hosted build offers one-click updates right in the WordPress dashboard, delivered securely over HTTPS from your license host.
17. Security & compatibility
Built to WordPress standards.
Hardened actions
Nonces and capability checks on every admin and public action.
Safe data
Prepared SQL, escaped output, and sanitized input throughout.
Secure links
Tokenized customer links compared with hash_equals.
Spam & uploads
Honeypot on the form and a file-type allowlist on uploads.
HPOS ready
Declares WooCommerce HPOS and cart/checkout-block compatibility.
Theme & i18n
Block and classic themes; translation-ready.
18. FAQ
Quick answers to common questions.
Does it work with my theme?
Yes — both block/FSE themes (such as Twenty Twenty-Five) and classic themes, with precise button-placement controls.
Can I hide prices and only allow quotes?
Yes. Toggle Hide prices and Hide Add to Cart, globally or scoped by your display rules.
Can customers negotiate?
Yes. They can accept, reject, or message you, and there is a full negotiation thread plus a revision history on every quote.
Can a quote become a real order?
Yes. Convert an accepted quote into a native WooCommerce order at the agreed prices and email a secure payment link.
Can I restrict RFQ to certain products or customers?
Yes — by product, category, user role, or guests.
Will my data be removed if I uninstall?
Only if you choose to. There is a delete-all-data-on-uninstall toggle under Advanced.
19. Troubleshooting
If something looks off, start here.
| Symptom | Fix |
|---|---|
| The quote button doesn't appear | Check Button Settings (location/placement), confirm the product matches your display rules, and make sure RFQ is enabled. |
| "Basket empty" on submit | Ensure WooCommerce is active and sessions are working; re-add an item and resubmit. |
| Emails not arriving | Configure SMTP in production — local servers often can't send mail. Check the template is enabled. |
| PDF looks unbranded | Set your logo and company details in PDF Settings; very large logos are scaled automatically. |
| Plugin locked / not active | Enter a valid key or purchase code on the License screen. Self-hosted keys respect a 14-day offline grace if the server is unreachable. |