How to add “Quote Request” button on some products?
Have a look at the feature request &quot;Let customers build a 'quote' cart and request a quote instead of checkout&quot;. Even though it has status &quot;postponed&quot;, it has some interesting comments, such as the very first one, which includes this (I added the bold markup):

You probably don't need any specific module to do a majority of this. All you'd have to do is add $0.00 prices to all your products and then just don't display those prices anywhere. You don't have to show product price fields in your display nodes, and you can edit your cart Views so they don't include prices any more. The only thing you'd really have to change is the text pertaining to the shopping cart. You could do this with a module like String Overrides or just alter the various places directly with a hook in a site customizations module.
When it comes time to submit the quote, I suppose you may want a custom button on the Cart form that changes the status of the order to &quot;Needs quote&quot; or something - if that's true, then that's all your custom module should really be responsible for ...

Also, the comment #7 in that same issue seems worth considering, this is part of what it says (I added the bold markup):

I got this working quite easily! As Ryan said, make all product prices $0. Use String Override module and override a couple of the basic syntaxes. Edit a couple of Views where certain terms/words still creeped through. When you see syntax that needs to be changed on a view and you've already used String Override for it but it's not overriding it, just click on the right corner of the view on the gear to edit view. Then change the wording on there. I also had to remove or change some of the text that were on some views but under the &quot;FOOTER&quot; section (middle section of view). I had to do this a lot for the cart and checkout views.
I added another checkout rule under Store&gt;Configuration&gt;Checkout Settings under &quot;Send Request&quot;-section to email me when the person places a request.

Maybe not a complete solution / answer to your question, but at least a partial answer to think about ...