{"id":345632,"date":"2026-07-31T12:49:18","date_gmt":"2026-07-31T12:49:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/configquote\/"},"modified":"2026-07-31T12:48:48","modified_gmt":"2026-07-31T12:48:48","slug":"configquote","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/configquote\/","author":23522060,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.39","stable_tag":"1.0.39","tested":"7.0.2","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"ConfigQuote","header_author":"RCommerce","header_description":"Integrates ConfigQuote quote builder with WooCommerce products, replacing \"Add to Cart\" with \"Request Quote\" for configurable products.","assets_banners_color":"fcfcfd","last_updated":"2026-07-31 12:48:48","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/configquote.com","header_author_uri":"https:\/\/rcommerce.pl","rating":0,"author_block_rating":0,"active_installs":0,"downloads":16,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.39":{"tag":"1.0.39","author":"configquote","date":"2026-07-31 12:48:48"}},"upgrade_notice":{"1.0.39":"<p>Fixes the &quot;Test Connection&quot; button, which was broken by the 1.0.38 option rename.<\/p>","1.0.38":"<p>Renames internal option names to a unique prefix per WordPress.org requirements.<\/p>","1.0.37":"<p>Resolves the final Plugin Check scanner warnings; no functional or configuration changes.<\/p>","1.0.36":"<p>Resolves remaining Plugin Check scanner warnings; no functional or configuration changes.<\/p>","1.0.35":"<p>Further WordPress.org coding-standards\/security hardening (nonces, input sanitization, hook naming); no configuration changes required.<\/p>","1.0.34":"<p>Internal code-quality\/security hardening (asset enqueueing, output escaping, REST endpoint auth); no configuration changes required.<\/p>","1.0.33":"<p>Fixes the setup notice so stores without a connected ConfigQuote account are properly prompted to sign up; no configuration changes required.<\/p>","1.0.32":"<p>Adds multi-product quotes and customer quote history; no configuration changes required.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3630014,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3630014,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3630014,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3630014,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3630014,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.39"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"WooCommerce \u2192 Settings \u2192 ConfigQuote settings screen.","2":"\"Request Quote\" button on a mapped product page.","3":"Quote builder opened in modal mode."}},"plugin_section":[],"plugin_tags":[851,229816,5055,13770,286],"plugin_category":[45],"plugin_contributors":[274046],"plugin_business_model":[],"class_list":["post-345632","plugin","type-plugin","status-publish","hentry","plugin_tags-configurator","plugin_tags-custom-products","plugin_tags-quote","plugin_tags-request-a-quote","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-configquote","plugin_committers-configquote"],"banners":{"banner":"https:\/\/ps.w.org\/configquote\/assets\/banner-772x250.png?rev=3630014","banner_2x":"https:\/\/ps.w.org\/configquote\/assets\/banner-1544x500.png?rev=3630014","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/configquote\/assets\/icon.svg?rev=3630014","icon":"https:\/\/ps.w.org\/configquote\/assets\/icon.svg?rev=3630014","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>This plugin connects your WooCommerce store to a <a href=\"https:\/\/configquote.com\">ConfigQuote<\/a> account, letting customers configure complex or custom products and request a quote instead of adding a fixed-price item to the cart.<\/p>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li>Automatically replaces \"Add to Cart\" with \"Request Quote\" for products mapped in your ConfigQuote account<\/li>\n<li>Modal popup or full-page redirect to the ConfigQuote quote builder<\/li>\n<li>No customer account required to request a quote<\/li>\n<li>Settings integrated into WooCommerce \u2192 Settings \u2192 ConfigQuote<\/li>\n<li>Built-in connection test to verify the integration is working<\/li>\n<li>Optional webhook endpoints so ConfigQuote can push quote status updates back into WooCommerce<\/li>\n<li>Multi-product quote requests<\/li>\n<li>Customer-facing quote history in the \"My Account\" dashboard<\/li>\n<li>Debug mode with logging via the standard WooCommerce logger<\/li>\n<\/ul>\n\n<p><strong>Requires a ConfigQuote account<\/strong><\/p>\n\n<p>This plugin is a connector: it requires an active <a href=\"https:\/\/configquote.com\">ConfigQuote<\/a> account to configure products, receive quote requests, and manage quotes. It does not provide a quote builder on its own.<\/p>\n\n<h4>External services<\/h4>\n\n<p>This plugin connects to third-party services to provide its functionality. Details of what is sent and to whom:<\/p>\n\n<ul>\n<li><strong>ConfigQuote application (the URL you configure under WooCommerce \u2192 Settings \u2192 ConfigQuote, e.g. <code>https:\/\/app.configquote.com<\/code> or your own ConfigQuote tenant URL).<\/strong> The plugin sends WooCommerce product IDs, product configuration lookups, and customer-submitted quote details (name, email, and any fields you enable in the quote form) to this URL so ConfigQuote can build the configurator and process quote requests. It also polls this URL for quote status and, optionally, receives webhook callbacks from it. This connection is required for the plugin to function and is authenticated with a Bearer token you generate in your ConfigQuote account.\n<a href=\"https:\/\/configquote.com\/terms\">ConfigQuote Terms of Service<\/a> | <a href=\"https:\/\/configquote.com\/privacy\">ConfigQuote Privacy Policy<\/a><\/li>\n<li><strong>Google Fonts (fonts.googleapis.com).<\/strong> When a mapped product uses the personalized-artwork preview overlay, the customer's browser loads the font families used in that artwork directly from Google Fonts' CDN.\n<a href=\"https:\/\/developers.google.com\/fonts\/faq\/privacy\">Google Fonts Privacy Policy<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/configquote<\/code>, or install the plugin through the WordPress admin: Plugins \u2192 Add New \u2192 Upload Plugin.<\/li>\n<li>Activate the plugin through the \"Plugins\" screen in WordPress.<\/li>\n<li>Go to WooCommerce \u2192 Settings \u2192 ConfigQuote and enter your ConfigQuote Application URL.<\/li>\n<li>Click \"Test Connection\" to verify the integration.<\/li>\n<li>In your ConfigQuote admin panel, map WooCommerce products to ConfigQuote configurations.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20configquote%20account%20to%20use%20this%20plugin%3F\"><h3>Do I need a ConfigQuote account to use this plugin?<\/h3><\/dt>\n<dd><p>Yes. The plugin connects your WooCommerce store to a ConfigQuote account where products are configured and quotes are managed. See https:\/\/configquote.com.<\/p><\/dd>\n<dt id=\"the%20%22request%20quote%22%20button%20isn%27t%20appearing%20on%20my%20product\"><h3>The \"Request Quote\" button isn't appearing on my product<\/h3><\/dt>\n<dd><p>Check that the product has a configuration mapping in your ConfigQuote admin panel, that the plugin is activated, and that the connection test in WooCommerce \u2192 Settings \u2192 ConfigQuote succeeds.<\/p><\/dd>\n<dt id=\"the%20connection%20test%20fails\"><h3>The connection test fails<\/h3><\/dt>\n<dd><p>Verify the ConfigQuote Application URL is correct and reachable from your server, and that no firewall or security plugin is blocking outbound requests.<\/p><\/dd>\n<dt id=\"the%20quote%20modal%20doesn%27t%20open\"><h3>The quote modal doesn't open<\/h3><\/dt>\n<dd><p>Check your browser's developer console for JavaScript errors, confirm your theme doesn't conflict with the modal markup, and try switching to redirect mode in the plugin settings.<\/p><\/dd>\n<dt id=\"how%20do%20i%20see%20debug%20logs%3F\"><h3>How do I see debug logs?<\/h3><\/dt>\n<dd><p>Enable \"Debug Mode\" in WooCommerce \u2192 Settings \u2192 ConfigQuote, then view the logs under WooCommerce \u2192 Status \u2192 Logs (source: <code>configquote<\/code>).<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20store%20customer%20data%3F\"><h3>Does this plugin store customer data?<\/h3><\/dt>\n<dd><p>Quote submissions (contact details and configuration selections) are sent to your ConfigQuote account for processing; see the External Services section above for details of what is sent and where.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.39<\/h4>\n\n<ul>\n<li>Fix: \"Test Connection\" always failed with \"Please enter a ConfigQuote base URL\" after the 1.0.38 option rename \u2014 the admin JS was still reading the old field IDs (woocommerce_configquote_base_url \/ _api_token)<\/li>\n<\/ul>\n\n<h4>1.0.38<\/h4>\n\n<ul>\n<li>Rename all options from the generic \"woocommerce_configquote_<em>\" prefix to the plugin's own unique \"configquote_<\/em>\" prefix, per WordPress.org's uniqueness requirement<\/li>\n<li>Rename the non-persisted settings-section field IDs the same way for consistency<\/li>\n<\/ul>\n\n<h4>1.0.37<\/h4>\n\n<ul>\n<li>Silence residual meta_query slow-query scanner warnings on the two authenticated sync\/search REST endpoints, with justification (no dedicated taxonomy exists for these lookups; both are bounded, low-frequency, server-to-server calls)<\/li>\n<\/ul>\n\n<h4>1.0.36<\/h4>\n\n<ul>\n<li>Silence residual nonce-verification scanner warnings on the product-meta checkbox save callbacks (the checks were already present via a shared helper method that the static analyzer couldn't trace through)<\/li>\n<\/ul>\n\n<h4>1.0.35<\/h4>\n\n<ul>\n<li>Remove the nonexistent Domain Path header (no languages\/ folder is shipped)<\/li>\n<li>Add nonce verification to the product-meta checkbox save callbacks and guard against undefined array indexes on $_POST reads<\/li>\n<li>Add missing translators comments and unslash all remaining $_POST fields before sanitizing<\/li>\n<li>Rename the wc_configquote_settings filter hook to configquote_wc_settings (plugin-prefixed hook names)<\/li>\n<li>Replace date() with gmdate() in outgoing webhook test payloads<\/li>\n<li>Remove a redundant error_log() call already covered by the WooCommerce logger<\/li>\n<li>Escape the remaining pagination markup output<\/li>\n<\/ul>\n\n<h4>1.0.34<\/h4>\n\n<ul>\n<li>Move the WooCommerce settings \"Test Connection\" script and the My Account quote-badge styles out of inline <code>&lt;script&gt;<\/code>\/<code>&lt;style&gt;<\/code> output into properly enqueued\/localized assets<\/li>\n<li>Escape all remaining translated strings at output (esc_html_e\/esc_html__\/wp_kses_post) per WordPress.org coding standards<\/li>\n<li>Require the ConfigQuote API token on the <code>\/status<\/code> REST endpoint instead of leaving it publicly accessible<\/li>\n<li>Remove two unnecessary wp-admin core file includes from the media upload endpoint<\/li>\n<li>Remove load_plugin_textdomain() call (unneeded for WordPress.org-hosted plugins since WP 4.6)<\/li>\n<\/ul>\n\n<h4>1.0.33<\/h4>\n\n<ul>\n<li>Fix: the \"not connected\" admin notice now checks whether an API token has been entered instead of the base URL (which always has a default value), so stores that install the plugin without an existing ConfigQuote account are actually notified<\/li>\n<li>Notice and the API Token field now link directly to ConfigQuote's pricing\/signup page<\/li>\n<\/ul>\n\n<h4>1.0.32<\/h4>\n\n<ul>\n<li>Add multi-product quote requests<\/li>\n<li>Display customer quote history in the My Account dashboard<\/li>\n<li>Fix redirect-to-product behavior after quote submission<\/li>\n<\/ul>\n\n<h4>1.0.28 \u2013 1.0.31<\/h4>\n\n<ul>\n<li>Add embed theme mode configuration for the quote builder iframe<\/li>\n<li>Add preview iframe visibility toggle based on step type<\/li>\n<li>Add real-time updates for 3D selection changes in the preview iframe<\/li>\n<li>Implement font prefetching for the personalized artwork overlay<\/li>\n<\/ul>\n\n<h4>1.0.11 \u2013 1.0.26<\/h4>\n\n<ul>\n<li>Add personalized artwork overlay on product images, including print zone rendering<\/li>\n<li>Add company phone and additional customer fields to the quote request form<\/li>\n<li>Add multi-product quote cart functionality<\/li>\n<li>Remove the <code>allow<\/code> attribute from the quote builder iframe for improved security<\/li>\n<li>General debug logging and reliability improvements<\/li>\n<\/ul>\n\n<h4>1.0.4 \u2013 1.0.10<\/h4>\n\n<ul>\n<li>Add filters to customize the Add to Cart text\/URL override for ConfigQuote products<\/li>\n<li>Add media upload support for quote attachments<\/li>\n<li>Add setting to control the product configuration view<\/li>\n<li>Adjust action hooks for quote request button placement<\/li>\n<\/ul>\n\n<h4>1.0.1 \u2013 1.0.3<\/h4>\n\n<ul>\n<li>Add order status webhook handling<\/li>\n<li>Add product search via the ConfigQuote API<\/li>\n<li>Add API connection tests<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: WooCommerce settings integration, connection testing, webhook support, debug mode<\/li>\n<\/ul>","raw_excerpt":"Replace &quot;Add to Cart&quot; with &quot;Request Quote&quot; on configurable WooCommerce products, powered by your ConfigQuote account.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/345632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=345632"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/configquote"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=345632"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=345632"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=345632"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=345632"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=345632"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=345632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}