We’ve had a lot of people ask us if there’s a plugin that will allow users to use the cart functionality of WooCommerce, but submit the cart as a quote. While there’s nothing that will allow you to do this presently (this involves some complex changes), here’s a workaround you can use to create a “Get a Quote” site for WooCommerce.
The plugins you’ll need are:
Create the Quote Form
The first thing we’ll want to do is create our quote form, which is why Gravity Forms is on the list. If you’d like to put this form in your product description, you can easily do so without another plugin.
However, I prefer to put this form in a new product tab, which is why the WooCommerce Tab Manager is on the list. This will also save me the trouble of adding this for each product, as I can create a global tab. Our “Get a Quote” form will be made just like the WooCommerce pre-sales form we made in an earlier post (which is more detailed, so check it out if we lose you!).
We’ll create a simple form with no conditional logic (as Tab Manager doesn’t support that yet, but will soon) to get a quote for a product in our shop. Customers will be able to submit this quote on each product page, so we’ll keep it short and sweet.
Let’s first add the basic fields to our form: name, email address, and phone number. You may need some or all of these pieces of information, and you can add any other forms as needed for your quote. You can usually find these under “Advanced Fields”:
I’ll also add the other necessary fields for the quote – you may want fields for dates, a message, or others, so this will be up to you. I’m going to include a message field and a couple of hidden fields to get more information about my customer and the information they’d like. I’ll add a admin-only field for the product viewed so customers don’t have to fill it in themselves. This way, I know what the quote is for, and I can use the same form for all of my products. Pre-fill the default value with the post title:
You may also need file uploads or other fields, so add them and we’ll save our form. Don’t forget to set any notifications or other form settings once you have your fields set up!
Embed the Quote Form (Optional)
Now let’s add our form! You can embed this form in your product descriptions, which may be a pain if you have to do it for each product. That’s why I’ll create a global tab to add this to all (or most) of my products quickly.
Go to WooCommerce > Tab Manager, and create a new global tab. You’ll be able to embed your form directly into this global tab:
Now we’re getting somewhere! You can add this to your default tab layout if you’d like to add it to all products, or you can simply add it on a per-product basis. You can always remove this tab if needed, even if it’s part of the default layout, by overriding the tab layout at a product level. You can choose how to add the tab based on how many products will leverage it.
Now we have a shiny new tab with a quote form. Notice that the Product Title field is hidden from customers, but will be filled in for me when the form is submitted.
Awesome! Now that we have the “Submit for Quote” part of the WooCommerce shop covered, let’s talk about those pesky Add-to-Cart buttons and pricing that we probably don’t want to show.
Set catalog visibility options
The Catalog Visibility Options plugin is optional in this setup. If you don’t want to display any purchasing options, you can simply leave the price field for the product blank, and no pricing or add-to-cart buttons will be displayed on the product page. For most themes, the shop page will have a button that reads “Read More” instead of “Add to Cart” if no price is set.
If you’re okay with this setup, you’re done! However, if you’d like to have the option to display price but get rid of purchasing, display price to only certain groups / members, or allow purchasing to only certain groups and members, then Catalog Visibility Options will give you the fine-grained control for this. You’ll also be able to control this on a category or per-product basis.
Catalog Visibility Options will let you disable purchasing for everyone or non-logged in members, and you can optionally disable pricing as well for everyone on non-logged in members under WooCommerce > Settings.
If you do disable pricing, you can set new text for the shop page “Add to Cart” buttons. If you disable pricing, you can show text in place of pricing (such as “Log in for Price” if you’ll show it to customers with accounts, or “Fill out quote form for price” instead). You can also add additional text that will appear below the product short description:
Showing price can be handy if you have a set price for your services, but don’t want customers to go through the checkout process. It’s also handy if you use your site as a catalog rather than an full eCommerce solution.
Rather than control this on a global level (from WooCommerce > Settings), you can also control this based on categories or on a per-product basis. For example, you can restrict categories to certain user roles (you can managed and add them easily with this plugin). This could be handy if certain members or types of customers can request quotes, but others cannot – excluded roles won’t be able to view a product.
Finally, you can adjust this on a per-product basis. This is really helpful if you have some customers that should be able to purchase, but others that will have to submit for a quote. Catalog Visibility options can do so on a per-product level by adjusting who can view products, view pricing, or purchase products:
In short, Catalog Visibility Options provides flexibility if you need to control who should submit quotes and for which products quotes should be submitted.
Put it Together
At minimum, you’ll need Gravity Forms or another form builder to make your WooCommerce Get a Quote forms. If you’d like to display this form for all products easily, Tab Manager can do this and help you determine when to display it. If you want to adjust purchasing and quote options based on category, product, or user role, then you can add Catalog Visibility Options into the mix.