
內容簡介
TackQuote for WooCommerce 是一款專為 B2B 和批發購物者設計的外掛,讓客戶可以請求報價而非直接結帳,並可將訂單同步至 TackQuote 帳戶。此外掛適合向貿易客戶(如批發商、分銷商和製造商)銷售的商店,並可根據帳戶、數量或訂單報價。
【主要功能】
• 在產品頁面上添加報價請求按鈕
• 漂浮報價清單,支持多產品請求
• 報價專用模式,適用於特定訪客或角色
• 每個產品的報價選項,包括變體
• 可配置的漂浮啟動器,調整位置和樣式
• 支持 B2B 價格和買家群組功能
外掛標籤
開發者團隊
原文外掛簡介
TackQuote for WooCommerce lets B2B and wholesale shoppers ask for a price instead of checking out, and can sync orders one way to your TackQuote account.
It is for stores that sell to trade customers (wholesalers, distributors, manufacturers) and quote prices per account, per quantity or per order. Setup is one button: press Connect with TackQuote, sign in or create a TackQuote account, and approve. Pasting a TackQuote API key still works too.
Learn more about the WooCommerce integration · Create a free TackQuote account
Features
Add to Quote and Request a Quote buttons on product pages, in your theme’s button style.
A floating quote list with Checkout as Quote: several products in one request, separate from the cart.
Quote-only mode for the whole store, signed-out visitors, chosen roles, or all but approved wholesale accounts.
Quote only per product, with variations following their product and still selectable for a quote.
Optional quote buttons on product cards and the cart page, and a quote page with target prices.
A configurable floating launcher: side, offsets, label, icon, count, size, pages, mobile.
B2B pricing from TackQuote: account prices and volume tables, net of tax on any tax setting.
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: the buyer pays an accepted quote at your normal checkout, at the quoted prices.
Optional one-way order sync to TackQuote, off by default and queued so it never runs inside checkout.
Connect with TackQuote: connect the store by signing in and approving, with no key to copy, or paste an API key as before.
Works with HPOS, the Cart and Checkout blocks, and block and classic themes.
Storefront text in English and seven more languages.
The FAQ below explains each feature, and 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.
Order sync is outbound only — it does not import quotes as orders, sync your catalogue, or touch inventory.
Failed syncs are logged (WooCommerce → Status → Logs, source tackquote) and never block checkout.
Source code is developed in the open at github.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. Without a TackQuote account and API key the
plugin cannot create quotes, and its storefront buttons do nothing. 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 → TackQuote API URL, which is
https://api.tackquote.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,
and (since 1.10.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”, and at most daily from the
storefront for item 11. Sends your API key and the store’s address only: 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. Same data as item 1.
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), the free-text note if written, and
for each requested product its name, SKU, quantity, unit price excluding tax, WooCommerce
product ID and any target price, together with the store’s currency code.
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
switched on “Sync orders to TackQuote”. 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 Privacy section
below lists every field individually.
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 the
older GET /storefront-b2b/order-limits and GET /storefront-b2b/buyer-group on a TackQuote
server without the /storefront/v1 routes. 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/
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
accounts”, or (since 1.11.0) when a signed-in customer opens the “Wholesale account” My Account
tab or a page with the [tackquote_wholesale_application] shortcode, and only for a signed-in customer, 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), to show their terms or a pending application instead of
the form. 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/
buyer opens a TackQuote checkout link (?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.
Connect with TackQuote (since 1.11.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
(wp-admin/admin-post.php?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. TackQuote answers with an address on its own web app, and your browser
is sent there to sign in (or create an account) and approve or cancel; TackQuote then sends
your browser back to your site’s return address 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.
Revoke a Connect key (since 1.11.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.
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
To the TackQuote API base URL configured under TackQuote → TackQuote API URL — https://api.tackquote.com/v1 unless your TackQuote support contact gave you another one. Endpoints used:
GET /integrations/woocommerce/ping (and GET /health) — connection test and server features. Sends only the store’s address.
GET /integrations/woocommerce/registration-config — fetches which fields the quote form should ask for. Sends only the store’s address.
POST /integrations/woocommerce/quote-requests — a shopper’s quote request.
POST /integrations/woocommerce/order-sync — order sync. Only when the merchant has switched order sync on. It is off by default.
POST /storefront-pricing/resolve, GET /storefront/v1/wholesale-price, GET /storefront/v1/quantity-breaks, GET /storefront/v1/order-limits, GET /storefront/v1/buyer-group (and the older GET /storefront-b2b/order-limits, GET /storefront-b2b/buyer-group) — B2B prices, limits (also for guests, by SKU), the buyer group and its tax exemption. Only when the matching feature is switched on.
GET /integrations/woocommerce/wholesale-form, POST /integrations/woocommerce/wholesale-form/submit — the wholesale application form.
POST /storefront/v1/credit-application (or POST /integrations/woocommerce/credit-application) — a signed-in customer’s net-terms application.
GET /storefront/v1/net-terms — a signed-in customer’s net terms, at checkout and on the “Net terms” My Account tab (both off by default).
GET /integrations/woocommerce/quote-checkout/
POST /storefront/v1/quote-upload, POST /storefront/v1/wholesale-upload, POST /storefront/v1/wholesale-signup/
POST /woocommerce-connect/requests, POST /woocommerce-connect/exchange — Connect with TackQuote, only when an administrator presses the button. Sends the store’s and admin addresses, the return address on your site, the site name, plugin, WordPress and WooCommerce versions, the site language, a signed random value, a code challenge, and then the one-time code and its secret. No customer data.
POST /integrations/woocommerce/plugin-key/revoke — when an administrator removes a saved key that Connect with TackQuote created. Sends only that key.
GET /storefront/v1/price-access — whether a signed-in customer’s wholesale application is approved. Only when the merchant chose the “approved wholesale accounts” quote-only scope, or when a signed-in customer opens the Wholesale account tab or the wholesale application shortcode (1.11.0). Both are off by default. The answer is shared by both for up to five minutes. Sends the customer’s account email address and WordPress user ID.
Every request carries X-TackQuote-Plugin-Version (the plugin’s version) and X-TackQuote-Site-Url (your store’s address, home_url()).
The full lists
Every field the plugin sends, and everything it stores on your site, is listed in the FAQ below:
What does a quote request send?
What do the B2B lookups and application forms send?
What does order sync send? (off by default)
What does the plugin store on my site, and what does deleting it remove?
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 for you to review and adapt.
Suggested privacy policy text
The plugin adds suggested wording to Settings → Privacy → Policy guide in WordPress, listing the same fields. Edit it to match how your store actually uses the plugin.
