WordPress plugin intelligence profile

TackQuote: Request a Quote & B2B Wholesale for WooCommerce

Add Request a Quote and a quote list to WooCommerce, with B2B wholesale prices, net terms and checkout at the quoted price.

WP PlugIndex snapshot

Current directory snapshot

Tested up to WordPress 7.1
Current version1.13.1
WordPress coverageTested up to WordPress 7.1
Minimum stackWP 6.4 · PHP 7.4
Directory statusactive
Last directory update27 Oct 20266d ago
Active installationsNewAdoption metric — not a quality score
WordPress.org ratingNo WordPress.org ratings yet
Official packageDirect from WordPress.org

Repository metrics are context, not quality scores. Active installations measure adoption and can strongly reflect a plugin’s age and historical popularity. Ratings, recent updates and “Tested up to” metadata also do not guarantee modern code, error-free operation, security, feature completeness or suitability for a particular site. Why active installs don’t tell the whole story →

WP PlugIndex currently records TackQuote: Request a Quote & B2B Wholesale for WooCommerce version 1.13.1 as active, updated 6d ago and tested up to WordPress 7.1.

Overview

About this plugin

TackQuote: Request a Quote & B2B Wholesale for WooCommerce adds Request a Quote and Add to Quote buttons, a quote list and a quote page to your store, so trade buyers can ask for a price on the exact products and quantities they need instead of checking out. Approved wholesale customers see their own prices, volume tables and order limits, can apply for net terms and pay with a purchase order, and pay an accepted quote at your normal checkout at the quoted prices.

Quotes are managed in your TackQuote account (a free plan is available).

Setup is one button: press Connect with TackQuote, sign in or create an account, and approve. Pasting an API key still works.

Learn more about the WooCommerce integration · Create a free TackQuote account

Features

  • Add to Quote and Request a Quote buttons on product pages, product cards and the cart.
  • A floating quote list with Checkout as Quote, a quote page with target prices, and your own quote request form designed in TackQuote.
  • Quick order by SKU, to the cart or the quote list.
  • Quote-only mode for the whole store, signed-out visitors, chosen roles or all but approved wholesale accounts, or per product.
  • B2B pricing (account prices, volume tables), order limits, a buyer-group badge and tax-exempt buyers.
  • Per buyer group: hidden product categories, free or discounted shipping, an optional WordPress role.
  • Wholesale and net-terms application forms, and a Net terms payment method with an optional PO number.
  • Accepted quote checkout at the quoted prices.
  • Optional one-way order sync, off by default and queued so it never runs inside checkout; with one more approval, TackQuote’s catalogue and order sync through a WooCommerce REST API key.
  • TackQuote inside WooCommerce admin, each person signed in as themselves.
  • Works with HPOS, the Cart and Checkout blocks, and block and classic themes. Storefront text in English and seven more languages.

The FAQ lists exactly what the plugin sends and stores.

What it does not do

  • It does not replace WooCommerce checkout or act as a full CPQ workspace.
  • The plugin’s own order sync is one-way, WooCommerce to TackQuote. Catalogue, stock and orders written back come only from catalogue and order sync, which needs your approval in WooCommerce.
  • Failed syncs are logged (WooCommerce → Status → Logs, source tackquote ) and never block checkout.

com/tackquote/woocommerce.

External services

This plugin connects to the TackQuote API, a third-party B2B quoting service operated by

TackQuote, to send quote requests that shoppers submit on your store and — only if you

switch it on — to send data about orders placed in your store.

The service is required for the plugin to work. Until the store is connected, quote requests

cannot be sent. Nothing is sent anywhere

until you enter an API key or press Connect with TackQuote.

All requests go to the API base URL set under TackQuote → Settings → Connection → Advanced, which is

com/v1 unless your TackQuote support contact gave you a different

one. Every request (except the two Connect with TackQuote calls in item 12, made before the

store has a key) carries your TackQuote API key so the service can identify your account,

0) headers naming this plugin’s version ( X-TackQuote-Plugin-Version ) and the

store’s address ( X-TackQuote-Site-Url ), so TackQuote can tell which build and store sent it. The API key needs the buyers:write scope for

the two application forms below; the read-only storefront lookups need no extra scope.

-

Connection test — GET /integrations/woocommerce/ping; on 404, GET /health (key unverified).

Sent when an administrator clicks “Test TackQuote connection”, at most daily from the storefront

0 at most every ten minutes in the background (never during a

shopper’s request), once more to confirm a refused key, and once on deactivation. 0, to a TackQuote server that asks for them, also the site name, the WordPress time zone, the WooCommerce currency and the store base address (WooCommerce → Settings → General). No order or customer data.

-

Quote form field policy — GET /integrations/woocommerce/registration-config.

Sent on storefront page views while quote buttons are on, at most every 15 minutes. Your API key and the store’s address.

-

Quote request — POST /integrations/woocommerce/quote-requests.

Sent when a shopper submits the quote form. Sends what that shopper typed

into the form, plus the products being quoted: email address, first and last name, phone

number if given, company name and any company details the seller’s registration policy

requires (legal name, tax/VAT ID, registration number, website, address, city, state, postal

code, country, company phone, industry, employee count), answers to the seller’s registration

questions, the free-text note if written, and

for each requested product its name, SKU, quantity, unit price excluding tax, WooCommerce

0, a variation as <product ID>_<variation ID> on a server that supports it) and any target price, together with the store’s currency code. 0, when

the quote modal shows the form you designed in TackQuote, it sends that form’s answers instead

(what the shopper typed into each of your fields, and the upload ids of any files) together with

the form version shown, and the same products.

-

Order sync — POST /integrations/woocommerce/order-sync. Off by default.

Sent when an order is created and each time its status changes, but only if the merchant has

0 in TackQuote; the store can still turn it off). Sends the whole order: the customer’s billing and

shipping addresses, email address and phone numbers, WooCommerce customer ID, their order

note, the order ID, number and status, currency and totals, coupon codes, timestamps, the

payment method ID and title, the payment gateway’s transaction ID, and every line item with

its name, SKU, product and variation IDs, quantities, totals, taxes and item meta. No card

numbers, no card details and no gateway credentials are ever sent. The FAQ lists every field.

-

B2B pricing, order limits and buyer group — POST /storefront-pricing/resolve (cart

prices), GET /storefront/v1/wholesale-price, GET /storefront/v1/quantity-breaks,

GET /storefront/v1/order-limits and GET /storefront/v1/buyer-group, falling back to

/storefront-b2b/order-limits and /storefront-b2b/buyer-group on older servers. Only when the merchant has switched on B2B pricing,

order limits, the buyer-group badge, any buyer-group rule or tax-exempt buyers. Sent while

customers browse (order limits also for guests). Sends the product SKU and quantity and, for

a signed-in customer, their email address and WordPress user ID (digits only).

-

Wholesale application — GET /integrations/woocommerce/wholesale-form (the form’s

fields, by form slug; sends no customer data) and POST /integrations/woocommerce/wholesale-form/submit.

Sent when a page with the [tackquote_wholesale_application] shortcode or the “Wholesale account”

My Account tab is viewed, and when a shopper submits that form. Sends the answers the shopper

typed into the seller’s form (for example company name, email, phone, address, tax ID) and,

for a signed-in customer, their WordPress user ID as wooCustomerId. An application that carries

files is sent instead to POST /storefront/v1/wholesale-signup/<slug> with the same

answers, the signed-in customer’s account email address and WordPress user ID

( buyerEmail, buyerExternalId ), and the upload IDs of item 11.

-

Net-terms application — POST /storefront/v1/credit-application, falling back to

POST /integrations/woocommerce/credit-application on an older TackQuote server. Signed-in

customers only, when they submit the “Net terms” form. Sends the account’s email address, the

WordPress user ID (in the query, v1 route only), and what the customer typed: legal business

name, contact phone, tax/VAT ID, billing address, requested credit limit, requested payment

terms, up to three trade references (company, contact name, email, phone) and notes.

-

Wholesale price gate and Wholesale account tab — GET /storefront/v1/price-access. Off by default.

Sent only when the merchant chose the quote-only scope “Everyone except approved wholesale

0) when a signed-in customer opens the “Wholesale account” My Account

tab or a page with the [tackquote_wholesale_application] shortcode, at most once every five minutes per customer

(one minute after a failure). Sends that customer’s account email address and their

WordPress user ID ( buyerEmail, buyerExternalId ). TackQuote answers whether that buyer’s

wholesale application is approved. Nothing is sent for a signed-out visitor.

-

Net terms — GET /storefront/v1/net-terms. Sent for a signed-in customer at checkout

while the “Net terms (TackQuote)” payment method is enabled (off by default), and when a

signed-in customer views the “Net terms” My Account tab or the [tackquote_net_terms_application]

shortcode (the tab is off by default). Sends the account email and WordPress user ID. One answer per customer is reused for

up to a minute. Fails closed: without an answer, checkout hides the method and the tab shows

the application form.

-

Accepted quote checkout — GET /integrations/woocommerce/quote-checkout/<token>, when a

tackquote_checkout= ) on your store. Sends only the

link’s single-use token and your API key.

-

Attachments — POST /storefront/v1/quote-upload and

POST /storefront/v1/wholesale-upload. Quote-request files only when the merchant switched on

“Allow attachments on quote requests” (off by default); wholesale-application files only for a

signed-in customer; both only when the TackQuote server’s connection check ( ping ) lists

attachments. Sent when a shopper attaches a file. Sends the file’s bytes (a PDF, JPEG or PNG of

at most 5 MB, checked on your store first) and its file name, plus, for a signed-in customer, the

account email address and WordPress user ID ( buyerEmail, buyerExternalId ); for a wholesale

form also the form slug and field key. A guest’s quote files carry no identity, only the

single-use upload token TackQuote issues. Files are streamed from your server and never stored

on your site. The quote request then sends the upload IDs ( uploadIds ) and, for a guest, the

token ( uploadToken ). TackQuote deletes a file that was never attached to a request after 24

hours (quote files) or 7 days (application files); attached files are kept with the quote or

application for the seller.

-

0) — POST /woocommerce-connect/requests and

POST /woocommerce-connect/exchange. Sent only when an administrator presses “Connect with

TackQuote” on the Connection tab, and carry no API key. The first sends your store’s address

( home_url() ), its WordPress admin address, the return address on your own site

action=tackquote_connect_return ), the site name, the plugin,

WordPress and WooCommerce versions, the site language, a random value signed by your site,

and a one-way code challenge (SHA-256 of a secret that stays on your site). No customer,

order or product data. Your browser then signs in to TackQuote (or creates an account),

approves or cancels, and returns to your site with a one-time code. The second call sends

that code, the secret behind the code challenge, and your store’s address, and TackQuote

answers once with an API key, which is stored exactly like a pasted one.

-

0) — POST /integrations/woocommerce/plugin-key/revoke.

Sent only when an administrator presses “Remove saved API key” and the saved key came from

Connect with TackQuote. Sends that key (to say which key to revoke) and nothing else. A key you

pasted is never revoked: it is only deleted from your site.

-

locale=.

Sent on storefront page views while quote buttons are on and TackQuote’s connection test

lists quote-form, at most every five minutes per language. Sends your API key and the

visitor’s language only: no customer data.

0) sends nothing to TackQuote: SKUs are matched in your own catalogue.

-

0, needs a TackQuote server that offers it) —

POST /integrations/woocommerce/rest-keys/authorize and GET /integrations/woocommerce/rest-keys/status.

Sent on “Allow catalogue and order sync”, or right after Connect with TackQuote. php address, and your browser

opens WooCommerce’s own approval screen. If you approve, WooCommerce itself creates a

Read/Write REST API key and sends it to TackQuote directly; this plugin never sees it. The

status call sends nothing but the headers above. TackQuote then uses that key to read your

products, stock and categories, register store webhooks and write orders back; you can revoke it

under WooCommerce → Settings → Advanced → REST API at any time; deleting this plugin deletes it once

TackQuote confirms it let go of it.

-

0) — POST /integrations/woocommerce/plugin-lifecycle.

Sent once when the plugin is deactivated or deleted (not when WordPress updates it), so TackQuote

pauses a connection that runs through the plugin only. Sends deactivated or uninstalled and the

headers above.

-

org

com/repos/tackquote/woocommerce/releases/latest, at most every

twelve hours, by WordPress’s own update check. Sends nothing about your store beyond the plugin

version in the User-Agent. zip

from the TackQuote GitHub release. GitHub privacy statement:

com/site-policy/privacy-policies/github-general-privacy-statement

-

0, needs a TackQuote server that offers it) —

POST /integrations/woocommerce/embed/open, POST /integrations/woocommerce/embed/claim and

POST /integrations/woocommerce/embed/unlink. Sent only when a user who can manage WooCommerce opens

TackQuote → Dashboard or presses its buttons. Sends that user’s WordPress user ID, a random secret

kept in their user meta and, to open, purpose ( frame or tab ); linking also sends the one-time

0: …/embed/link-requests, …/link-exchange ). No customer or

order data.

-

0) — GET /integrations/woocommerce/store-settings every

ten minutes and when settings open; headers only. PUT …/from-plugin sends settings you change and

your WordPress user ID. While TackQuote holds none, POST …/seed sends the five switches and the form slug.

This plugin sends data to no other external service.

The TackQuote service is provided by TackQuote. By using this plugin you agree to their

terms. Please review them before entering an API key:

  • Terms of Service: https://tackquote.com/terms
  • Privacy Policy: https://tackquote.com/privacy

Privacy

This plugin sends data to TackQuote, a third-party service, over HTTPS. It sends nothing anywhere else, and it never sends payment card data.

Where data is sent

com/v1 unless your TackQuote support contact gave you another one. External services above lists every call, when it is made and what it sends. The B2B features and order sync call TackQuote only when switched on.

The full lists

Every field the plugin sends, and everything it stores on your site and deletes on uninstall, is listed in the FAQ below.

If you are a merchant in the EU, UK or another jurisdiction with a transfer regime

Order sync sends personal data about your customers to TackQuote, which makes

TackQuote a processor acting on your instructions. That is why it ships switched

off. Before you

enable it, satisfy yourself that you have a lawful basis and, where required, a data

processing agreement in place with TackQuote. Your own privacy policy should name

TackQuote as a recipient; the plugin adds suggested wording to

Settings → Privacy → Policy guide, listing the same fields, for you to review and adapt.

WordPress.org metadata

Plugin tags

Topics listed for this plugin in the WordPress.org directory.

  • request a quote
  • woocommerce b2b
  • wholesale
Compatibility & maintenance

Compatibility & maintenance

Tested with WP 7.1

Marked as tested with the current WordPress 7.1 release.

Current WordPress releaseWordPress 7.1
WordPress.org Tested up to7.1
Minimum requirementsWordPress 6.4 · PHP 7.4
Update activity27 Oct 20266d ago

“Tested up to” is directory metadata supplied by the plugin author. WP PlugIndex does not turn an older declaration into a claim that the plugin is incompatible.

Changes recorded by WP PlugIndex

Recent tracked changes

Version1.12.01.13.1
WordPress compatibility7.1.37.1.4
Version1.11.11.12.0
Version1.11.01.11.1
Version1.10.21.11.0
Version1.5.11.10.2
WordPress compatibility7.17.1.3
WordPress requirement6.06.4
Tracking & source

WP PlugIndex tracks public WordPress.org directory metadata and records selected version, compatibility and availability changes as they are detected.

Plugin watchlist

Watch this plugin

Sign in to your WP PlugIndex account or create a free account. Free accounts can watch up to 5 plugins and see what changed.

Watch limit

Watchlist limit reached

You have reached your current active watch limit.