Yes, Liquid would work well for this use case.
An IF / ELSE condition could be used around your buttons based on the value of any product properties, eg: base on price being 0:
{% if this.Price <= 0 %}
Request quote
{% else %}
Buy now
{% endif %}
The liquid appears to have worked fine for the trial site but doesn’t appear to work on the live site. It only displays “Request a Quote” whether there is a price or not.
Since this happened after going live, I’m guessing it’s because you’ll need to assign a currency to your new domain name (under ‘Settings’ > ‘Domains’), else all your prices will be set to zero because there is no currency assigned to display the correct price.