Linux 软件免费装
Banner图

TackQuote for WooCommerce

开发者 tackquote
更新时间 2026年10月19日 03:38
PHP版本: 7.4 及以上
WordPress版本: 7.1
版权: GPLv2 or later
版权网址: 版权信息

标签

woocommerce request a quote rfq b2b wholesale

下载

1.11.1 1.10.2 1.11.0 1.5.0 1.5.1

详情介绍:

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 The FAQ below explains each feature, and lists exactly what the plugin sends and stores. What it does not do Source code is developed in the open at github.com/tackquote/woocommerce.

安装:

WooCommerce must be installed and active first, and you need a TackQuote account — create one here if you do not have one yet. Install
  1. In WP Admin go to Plugins → Add New, search for TackQuote for WooCommerce, and click Install Now.
  2. Activate TackQuote for WooCommerce.
  3. Open TackQuote in the admin menu.
  4. On the Connection tab press Connect with TackQuote, sign in to TackQuote (or create an account) and approve; you come back to the Connection tab connected. Or paste your TackQuote API Key (TackQuote → Settings → Developer → API Keys) and save. Leave the API URL as the default unless support gives you another base URL.
  5. Work down the numbered sections in order — they are arranged as a setup sequence, and each one only depends on the ones above it. Then click Save TackQuote settings.
  6. Click Test TackQuote connection to verify (Connect with TackQuote runs this test for you).
Before you enter an API key, read the External services section above: the plugin cannot create quotes without sending data to the TackQuote API. Manual install
  1. Download tackquote.zip from the releases page, or build it from source with bash bin/build.sh.
  2. In WP Admin go to Plugins → Add New → Upload Plugin, upload the ZIP, and choose Replace current with uploaded if an older copy is already installed.
  3. Activate, then follow steps 3–6 above.
  4. Your API key and toggles are stored as WordPress options and are preserved across updates.

屏幕截图:

  • Product cards in the shop grid can carry an Add to Quote button.
  • The quote drawer lists the chosen products and quantities, with Checkout as Quote.
  • The quote page from the `[tackquote_quote_page]` shortcode takes target prices and a message, and the request form can carry attachments.
  • Quote-only mode shows "Price on request" in place of prices, and single products can be marked "Available on quote".
  • A signed-in buyer sees their account price, their buyer group badge and a volume pricing table.
  • Order limits show on the product page and are enforced in the cart and the Checkout block.
  • Buyers TackQuote has approved can pay on net terms at checkout and add a purchase order number.
  • The wholesale application form in My Account is the form you design in TackQuote, file fields included.
  • A checkout link from an accepted quote fills the cart at the quoted prices with the quantities locked.
  • Categories hidden per buyer group: a guest (left) does not see the trade range that a Tier 2 buyer (right) sees.
  • Storefront buttons in German from the bundled translations.
  • The Overview tab shows the connection, the storefront mode, order sync and every B2B switch.
  • The Styling section of the Storefront tab: use the theme's styles only, or pick an accent colour.
  • The Buyer groups tab keeps payment and shipping methods for the groups you tick.
  • With an accent colour set, the quote buttons blend into Twenty Twenty-Four.

常见问题:

Where do I get an API key?

You may not need one: press Connect with TackQuote on the plugin's Connection tab, sign in and approve, and TackQuote creates a key for this store and sends it back to your site directly. To paste one by hand instead, in TackQuote go to Settings → Developer → API Keys.

Does Connect with TackQuote work on a local or staging site?

It needs your site to use https. A development address (such as a .test name or a private IP) may use plain http. Other http sites can paste an API key instead.

Does it work with High-Performance Order Storage (HPOS)?

Yes. The plugin declares HPOS (custom_order_tables) compatibility via WooCommerce FeaturesUtil and uses the WooCommerce order CRUD APIs (wc_get_order, order status hooks) rather than direct wp_posts order queries. You can run with HPOS enabled.

Is order sync bidirectional?

No. Sync is one-way: WooCommerce → TackQuote on order create and status change. Turning the toggle off stops new pushes; it does not delete data already in TackQuote.

My store collects a purchase-order number at checkout. Can it be synced?

Yes, with one line of code. WooCommerce core has no purchase-order field, and there is no meta key this plugin could guess that would be right for every B2B extension — a guess that looks correct and silently returns nothing is worse than an empty field. So the value is read through a filter your theme or a small site plugin fills in: add_filter( 'tack_quotes_order_po_number', function ( $po, $order ) { return $order->get_meta( '_my_checkout_po_field' ); }, 10, 2 ); Replace _my_checkout_po_field with the meta key your checkout writes. Without this filter nothing is sent and TackQuote records no purchase-order number.

Do the quote buttons replace checkout, or touch the WooCommerce cart?

No, and no. "Add to Quote" adds the product to a separate, browser-side quote list — it never touches the WooCommerce cart, stock, or totals. "Checkout as Quote" creates a quote request in TackQuote from that list's contents. Customers can still shop and check out through WooCommerce completely normally, at the same time, with no interaction between the two.

Why doesn't "Add to Quote" send a quote request immediately?

So shoppers can add multiple products before requesting one combined quote. Use the floating "Quote list" button (bottom-right) once you've added everything you want quoted, then click "Checkout as Quote".

Can shoppers start a quote from the shop page or the cart?

Yes, since 1.10.0, and both are off until you switch them on under TackQuote → Storefront. "Product cards" adds "Add to Quote" to every simple product in the shop, category and search lists; variable, grouped and external products link to their page instead, because a card cannot say which variation is wanted. "Cart page" adds "Request a quote for your cart" under Proceed to checkout on the classic cart; on the Cart block it appears as a fixed button at the bottom of the cart page. It copies the cart into the quote list and leaves the WooCommerce cart as it was.

How do I make a single product quote-only?

Edit the product and tick Quote only in the General tab of the product data panel. Add to Cart disappears for that product (and for every variation of a variable product), a hand-made ?add-to-cart= link and the Cart/Checkout blocks refuse it too, and a cart that already held it loses that line with a notice. Unlike the store-wide mode, this applies to shop managers as well, so your own test sees what customers see.

Can I keep the cart for approved wholesale customers only?

Yes. Turn on quote-only mode and choose "Everyone except approved wholesale accounts". The plugin asks TackQuote whether the signed-in customer's wholesale application is approved, and only then shows the cart. If TackQuote cannot be reached, the customer sees the quote-only catalogue (this one check fails closed, because it is a price gate). It needs the API key.

Which features need a linked account?

Prices, quantity breaks, order limits, the buyer-group badge and the price gate follow the customer's account email. Net terms, tax exemption and credit standing go only to customers the seller has linked to a TackQuote buyer: approving the customer's wholesale application or their net-terms application sent from this store links them (both carry the WordPress user id since 1.10.0), or the seller links the WordPress user under Buyers → buyer → WooCommerce customer in TackQuote. A matching email alone never links one, because WooCommerce does not verify the email at registration. If the email belongs to a buyer already linked to a different WordPress user, that customer gets none of these B2B features.

Where do target prices on the quote page go?

To the quote line, where the seller sees "Buyer asked for …" beside your store price, which the quote keeps. A TackQuote server older than the attachments feature cannot take the field, so there they go into the request's note instead, one line per product ("Target prices: …"), after the shopper's own message.

Can I change how it looks?

It takes your theme's look by default: every button is your theme's button (so Site Editor > Styles > Blocks/Elements > Button restyles them), fields and tables use WooCommerce's classes, and the drawer and quote form use your theme's colours and fonts. Under TackQuote → Storefront → Styling you can pick an accent colour for the quote buttons and launcher, or tick "Use the theme's styles only" to load layout rules alone. For finer changes, set CSS variables in Appearance > Customize > Additional CSS or the Site Editor's custom CSS, for example :root { --tackquote-radius: 0; --tackquote-drawer-width: 26rem; } (also --tackquote-accent, --tackquote-surface, --tackquote-text, --tackquote-border, --tackquote-shadow, --tackquote-z-index, --tackquote-launcher-offset-x / -y). Developers can copy any file from the plugin's templates/tackquote/ folder (quote page, quote list drawer, volume table, wholesale and net-terms forms) into yourtheme/woocommerce/tackquote/ and edit it there, as with WooCommerce's own templates, and use the filters tackquote_button_label, tackquote_button_classes, tackquote_theme_styles_only, tackquote_quote_page_args, tackquote_quote_list_drawer_args, tackquote_quantity_breaks_args and tackquote_storefront_form_args. The full list is in docs/CUSTOMISATION.md in the plugin's GitHub repository.

Which languages does it ship in?

English, plus German, Spanish, French, Italian, Japanese, Dutch and Brazilian Portuguese for the storefront text, in languages/ (machine-assisted from the TackQuote storefront catalogue; Italian awaits native review). A translate.wordpress.org language pack, when one exists, replaces the bundled file.

What does a quote request send?

Sent when a shopper submits the quote form, using only what they typed into it:

  • Email address
  • First name, last name
  • Phone number (if provided)
  • Company name, and any company fields the seller's registration policy requires (for example legal name, tax/VAT ID, registration number, address, city, state, postal code, country, company phone, industry, employee count)
  • The free-text note, if written (capped at 2,000 characters). On a TackQuote server older than the attachments feature, any target prices the shopper typed on the quote page are added to the note, one line per product
  • The requested products: name, SKU, quantity, unit price excluding tax, the WooCommerce product ID and, from the quote page, the target price if the shopper typed one
  • The store's currency code
  • Attachments (only when "Allow attachments on quote requests" is on): each attached file's bytes and file name, sent before the request to /storefront/v1/quote-upload, with the signed-in customer's account email address and WordPress user ID, or for a guest a single-use upload token; the request then carries the upload IDs and the guest token. Files are never stored on your site

What do the B2B lookups and application forms send?

  • B2B lookups: the product SKU and quantity, the signed-in customer's email address, and their WordPress user ID (a number, sent only beside the email and only while they are signed in).
  • Wholesale application: exactly the answers the shopper typed into the seller's form, plus the WordPress user ID (wooCustomerId) when they are signed in. Files (signed-in customers only, when the TackQuote server supports attachments): each file's bytes and name, the form slug and field key, the account email address and WordPress user ID; the application then goes to /storefront/v1/wholesale-signup/<slug> with the same answers and the upload IDs.
  • Net-terms application: the account's own email address (never a typed one), the WordPress user ID, and the legal business name, phone, tax/VAT ID, billing address, requested limit and terms, up to three trade references and notes the customer typed.

What does order sync send?

Sent for each order when it is created and when its status changes, if the merchant has enabled Sync orders to TackQuote. This is the whole order. Read this list before switching order sync on. The customer's identity and addresses

  • Billing address in full: first name, last name, company, street (both lines), city, state or county, postal code, country, email address and phone number
  • Shipping address in full: the same fields, including shipping phone where WooCommerce holds one
  • The WooCommerce customer ID, or 0 for a guest order
  • The customer's order note, as they wrote it
The order
  • WooCommerce order ID, order number and status
  • Currency, item subtotal, discount total, shipping total, tax total and order total
  • Coupon codes applied
  • A purchase-order number, from the optional checkout field (off by default) or the tack_quotes_order_po_number filter
  • The quote reference, for an order placed through a quote checkout link
  • Created, last-modified, paid and completed timestamps
  • An idempotency key, so a repeated delivery of the same order state can be discarded
Payment
  • Payment method ID and its display title (for example stripe / "Credit Card")
  • The gateway transaction ID, where the gateway recorded one
  • Whether the order still needs payment, and when it was paid
No card numbers, no card details, and no gateway credentials are ever sent. The transaction ID is a reference the gateway issued, not an instrument. Line items
  • Product name, SKU, WooCommerce product ID and variation ID
  • Quantity, line subtotal, line total and line tax
  • Item meta — the variation attributes and any custom item fields your store records on a line (for example "Size: Large", "Colour: Blue"). If your checkout writes customer-supplied text onto a line item, it is included here
  • Shipping lines: method title and cost. Fee lines: name and amount

What does the plugin store on my site, and what does deleting it remove?

  • Plugin settings, as WordPress options: the TackQuote API key, API URL, button labels, and the feature toggles.
  • tack_quotes_connect_secret — a random value, created the first time Connect with TackQuote is pressed, that signs the connect request so this site can recognise the answer. Never sent anywhere. tack_quotes_connected_via (connect or key) and tack_quotes_connected_at record how and when the saved key arrived.
  • tack_quotes_connect_<hash> — a 15-minute transient holding one pending Connect with TackQuote (the code verifier, a hash of the signed value, the administrator's user ID and TackQuote's request ID), deleted when the administrator comes back. tack_quotes_connect_notice_<user id> — a 5-minute transient carrying the outcome to the settings page.
  • tack_quotes_registration_config — a transient caching the quote-form field policy for 15 minutes.
  • tack_qr_* — short-lived transients counting quote requests per visitor for rate limiting. They hold a salted hash of the visitor's IP address, never the address itself, and expire after 5 minutes.
  • tack_quotes_wholesale_form_cache — a transient caching wholesale form definitions for 5 minutes (60 seconds after a failure).
  • tack_quotes_storefront_v1_missing — a transient remembering for one hour that the TackQuote server has no /storefront/v1 routes.
  • tack_quotes_wholesale_form_missing — a transient listing, for one day, the wholesale form slugs already logged as matching no form, so the log gets one line a day per slug.
  • tack_quotes_server_capabilities — a transient caching, for one day (ten minutes after a failed check), which optional features the TackQuote server advertises (for example attachments) and a 16-character SHA-256 prefix of the key it was read with (never the key).
  • tack_qu_*, tack_qf_*, tack_qc_* — ten-minute transients counting attachment uploads, applications and checkout links per visitor for rate limiting, keyed on a salted hash of the IP address, never the address. Each counter also has a …s twin for the connecting address, which a client cannot forge. Attached files themselves are never written to your site: PHP's temporary copy is deleted as soon as the file has been sent.
  • tack_quotes_connection_check — a transient remembering for one day whether the settings page's last "Test connection" passed, when, the message shown, and a 16-character SHA-256 prefix of the key that was tested (never the key itself). It lets the Overview say "Connected" only for the key saved now.
  • tack_sf_* — two-minute transients carrying an application form's outcome (success or error text and what was typed, except phone numbers and tax, VAT or registration numbers, for refilling the form) back to the page after it is submitted. Read once and deleted.
  • tack_quotes_vat_exempt_applied — a WooCommerce session value remembering that this plugin set the customer tax exempt, so the exemption can be withdrawn. Never saved to the customer record.
  • Net terms: tack_nt_<user id> (TackQuote's answer, one minute), order meta _tackquote_net_terms and _tackquote_po_number, option woocommerce_tackquote_net_terms_settings.
  • Quote checkout: session value tackquote_quote_checkout, order meta _tackquote_quote_ref and _tackquote_quote_number.
  • _tack_quotes_sync_key — order meta recording which order state was last accepted by TackQuote, so the same state is not sent twice.
  • User meta _tack_known_email (a copy of the account email), _tack_email_unverified, _tack_mirrored_roles, _tack_role_mirror_checked, _tack_wholesale_applied (when a wholesale application sent from the store was answered "pending"); product meta _tackquote_quote_only. Tools → Export/Erase Personal Data covers the user meta, and WooCommerce's order export covers the order meta above. Erasure deletes only the purchase-order number, and only when WooCommerce's "Remove personal data from orders on request" is on; the quote reference, quote number and net terms are business records and stay.
Deleting the plugin removes every option above, the fixed-name transients, the user meta, the product meta and queued order-sync jobs, on every site of a multisite network. Kept on purpose: _tack_email_unverified (no personal data; deleting it would trust a self-changed email again), the rate-limit counters (they expire within ten minutes and have no fixed name), and order meta (orders are financial records).

更新日志:

1.11.1 Released 2026-10-18. 1.11.0 1.10.2