WooCommerce plugin · WC Custom Offers

Custom offers for your marketplace. Native checkout.

Customers request custom work, your sellers reply with a purchasable offer: price, delivery time, features, shipping, expiry. Accept & Checkout drops it straight into the normal WooCommerce cart. Gateways, taxes, coupons and reporting stay exactly as they are.

★★★★★Already loved by 120+ store owners in its first month

  • Dokan compatible
  • HPOS ready
  • From $49 / year

The problem · the fix

Custom work is where stores and marketplaces leak money.

Every negotiated job that ends in a manual invoice or an off-platform payment is revenue your store never records.

Without the plugin

  • Negotiations happen in chat, then payment happens somewhere else
  • Sellers create throwaway products just to bill one customer
  • No record of what was quoted, agreed or when it expired
  • Your commission never touches the transaction

With WC Custom Offers

  • Requests and offers are first-class records, not chat history
  • Accept & Checkout uses the cart and gateways you already run
  • Every offer carries its own expiry, features and price snapshot
  • Your fees apply at checkout and flow into Dokan vendor earnings

How it works

Four steps, one checkout

  • The customer requestsFrom a product page, or from a seller profile with AJAX product search. Logged-out visitors get a login link.
  • The seller builds an offerDescription, price, quantity, delivery time, feature list, shipping fee and an expiration preset, with a live price summary and draft autosave.
  • The customer acceptsAccept & Checkout adds a priced line item to the native cart. Acceptance is idempotent: a double-click or a second tab lands on the same checkout.
  • Payment closes the loopOrder and offer statuses stay synchronized automatically, loop-free, with no manual bookkeeping.
Request Offer
Request a custom offer

Need 40 heavyweight pullovers in navy with our logo embroidered on the left chest. Delivery before the 14th.

Budget$1,400Send Request
Custom offerPending Acceptance
Custom offer: Heavyweight Pullover HoodieQty 40 · Delivery in 12 days
Price (40 × $31.00)$1,240.00Platform fee$24.80Setup fee$5.00Tax (est.)$124.00
$1,393.80Expires in 7 days
DeclineAccept & Checkout
✓ Paid at your WooCommerce checkout

0

changes to your checkout

2

request entry points

custom fee rules

Tracking

You always know where an offer stands

Each offer carries its own status, visible to the customer, the seller and you. Nothing counts as sold until the money actually arrives.

Draft

The seller has started writing an offer. Only they can see it, and it autosaves while they work.

Pending acceptance

The offer has been sent. The customer can accept or decline it, the seller can withdraw it, and it expires on its own deadline.

Awaiting payment

The customer accepted and an order exists, but it hasn’t been paid yet. A failed payment attempt changes nothing; they can simply try again.

Purchased

The order is paid. The offer card links to the order, your fee is recorded, and a later refund is handled in order management without rewriting this history.

Cancelled or expired

The deal ended before payment: withdrawn, declined, cancelled or timed out. The card records which, and both sides are notified by chat and email.

Features

Everything the workflow needs

One package. Nothing locked behind a higher plan.

Two request entry points

A product page button, and a seller profile button or shortcode with paginated AJAX product search.

Offer builder popup

Feature repeater, expiration presets from 24h to 30d, draft autosave and a live price summary.

Native checkout

Accepting adds a priced line item to the WooCommerce cart. Shipping, taxes, coupons and gateways behave as configured.

Offers are snapshotted

Price changes, deleted products or edited fee settings never affect an offer that was already sent.

Chat cards

Better Messages threads render offer and request cards with live status badges and a View Order link once paid.

Protected messages

Card and system messages can’t be deleted or reacted to by participants. Enforced server-side, not just hidden in the UI.

Seller dashboard

My Account → Custom Offers: received requests, sent offers, search, status filters and status-aware actions.

Custom fees

Unlimited fixed or percentage rules with a recipient, site operator or seller, folded into Dokan vendor earnings.

Shipping and tax

A flat seller shipping fee on physical offers, or fall back to store rates. Taxes always come from WooCommerce tax classes.

Admin screens

List tables for offers and requests with status views and bulk actions, an order-edit meta box, and six settings tabs.

Marketplace-proof buying

Offer lines are exempt from third-party purchasability blocks, including Dokan’s own-product restriction.

Email notifications

WooCommerce-styled emails at every step, so the flow works even with no messaging plugin installed.

Screens

Every surface it adds

The request popup, the offer builder, the card in chat, the seller dashboard, the admin tables and the fee rules.

Compatibility

Fits the stack you already run

Dokan and Better Messages are supported out of the box, and both are optional. Single-vendor stores work with zero configuration.

  • WordPress 6.0+, WooCommerce 7.0+, PHP 8.0+
  • HPOS compatible, with all order access through the CRUD API
  • Checkout Blocks compatible via the Store API
  • Fully translatable, nonce-checked, escaped and sanitized

WooCommerce

7.0 or newer. HPOS and Checkout Blocks both supported.

WordPress

6.0 or newer, on PHP 8.0+. Fully translatable.

Dokan

Optional. Vendor resolution, seller fees and earnings integration.

Better Messages

Optional. In-thread cards and a Create Offer button in the composer.

For developers

Built to be extended

Custom Offer and Request are their own post types, with a provider abstraction for messaging plugins and a resolver interface for marketplaces. Every template is theme-overridable.

Override from your theme

yourtheme/wcoffers/popup-request.php
yourtheme/wcoffers/popup-offer-builder.php
yourtheme/wcoffers/card-offer.php
yourtheme/wcoffers/card-request.php
yourtheme/wcoffers/my-account-dashboard.php

Selected hooks

wcoffers_messaging_providers

Register a messaging provider

wcoffers_seller_resolvers

Register a marketplace resolver

wcoffers_offer_status_changed

React to lifecycle events

wcoffers_checkout_fees

Adjust fee rules per checkout

wcoffers_accept_redirect

Change the post-accept destination

wcoffers_product_search_args

Scope the popup product search

One price. Every feature.

No feature limitation. No surprising fees.

Starter

$49 /year

Best for people who are just starting the business

  • All the features mentioned
  • 1 License Code
  • Installation on 1 website
  • 1 year future updates
  • 1 year license validity
  • 1 year free support

You save 33%

Professional

$99 /year

Best for people who just have multiple e-commerce websites

  • All the features mentioned
  • 1 License Code
  • Installation on 3 websites
  • 1 year future updates
  • 1 year license validity
  • 1 year free support

You save 50%

Enterprise

$199 Lifetime

Best for returning users, developers and business owners

  • All the features mentioned
  • 1 License Code
  • Installation on 5 sites
  • Lifetime future updates
  • Lifetime license validity
  • 1 year free support

FAQ

Frequently Asked Questions

Please check the frequently asked questions and answers before contacting our support team. We may have covered your issue here.

Still stuck?

Ask us anything before you buy. A human replies.

No. Accepting an offer adds a priced line item to the native cart and sends the customer to the normal checkout. Shipping, taxes, coupons and every payment gateway behave exactly as configured.

Yes. Requests and offers are fully manageable from the My Account dashboard and email notifications. A messaging plugin only adds in-chat cards.

Nothing bad. Offers snapshot the product at send time, and checkout falls back to a hidden placeholder product with the snapshotted details.

If the offer was already Purchased (the order was paid), it stays Purchased; the refund lives entirely in order management and analytics. If the order is refunded before payment ever completed (for example an on-hold order marked refunded), the offer is cancelled, since the purchase never went through.

Yes, compatibility is declared and all order access uses the WooCommerce CRUD API.

All evergreen browsers: Chrome and Edge 105+, Safari 15.4+ and Firefox 121+. On older browsers everything still works; only some cosmetic chat-card styling, which relies on the CSS :has() selector, degrades gracefully.

You can download your files from the Downloads tab on the My Account page.

We have well-written documentation for all of our plugins and themes. You can find the documentation here.

Start quoting instead of losing the sale

Every request a customer sends is a conversation you can price, send and close inside the store you already run. Nothing about your checkout changes.

  • Every feature in every plan, with nothing held back for a higher tier
  • Works with the native cart, checkout, taxes and payment gateways you use today
  • A 7-day refund, and support from the people who wrote the plugin