CALIPRY

How to turn a product into a quote-only product

Last checked against Splash 1.0.0 / 2026-08-15

Four things have to be true before a product asks for a quote instead of selling itself: a page exists to receive requests, that page carries the Quote template, the theme points at it, and the product carries the tag. Do them in that order and the last one switches the product over.

The reasoning behind the flow, and what the tag changes across the whole store, is on Why Splash quotes some products. This page is the setup.

What you are building

One page, not one per product

Every Request a quote button in the store leads to the same page. There is no per-product quote page and no way to pass the product into the form, so if you need to know which service a request is about, ask on the form.

One tag, any number of products

Tag as many products as you like. The tag is the only switch, and it needs nothing defined in Shopify before it works.

Replies arrive by email

The form posts through Shopify's contact form, so requests go to the store's contact address set in Shopify admin under Settings, not to an address in the theme.

Step 1. Create the page that receives requests

In Shopify admin, open Content, then Pages, then Add page. Give it a title. The theme ships pointing at a page whose handle is quote-request, so if you set that handle now, step 3 is already done for you.

The handle is not the title. Set it in the Search engine listing panel at the foot of the page editor: click Edit, then change the URL field to quote-request.

Note Any handle works as long as step 3 points at the page you actually made. The shipped handle only saves you a step.

Whatever you type in the page's body becomes the narrative column beside the form. A numbered list in that body is drawn as ruled process steps. Leaving it empty centres the form on the page. See Build the quote request form.

Step 2. Give the page the Quote template

Still in the page editor, find Theme template in the sidebar and choose quote. Save.

This is the step that is quiet when you skip it. The Quote template is what puts the Form builder section on the page. A page left on the Default template shows its body text and no form at all, which looks like a page that was never finished rather than a setting that was never changed.

The template ships with a working six-field form: full name, email, pool length, pool width, project type, and one conditional field that appears only when project type is Renovation. Edit those fields in the theme editor, not in the page editor. See Build the quote request form and Conditional form fields.

Step 3. Point the theme at the page

Open Online Store, Themes, Customize, then Theme settings, then Quote requests. Set Quote request page to the page you made.

This one setting is the destination for every quote button in the store, on every product, in every grid, in quick view, on the sticky bar and in accessory rows.

Note If Quote request page is empty, or points at a page that has been deleted, the setting resolves to nothing and every quote button in the store links to the home page instead. There is no error message and no broken link, so nothing looks wrong until a shopper tells you. Click one quote button on the storefront after any page rename, hide or delete.

Check the page is visible to shoppers as well as chosen here. That home page fallback tests only whether the setting resolved to something, so it cannot catch a page that still exists and is hidden from the online store. A shopper who follows the button does not reach the form either way, and the request never arrives.

Step 4. Tag the product

In Shopify admin, open Products, then the product, and add quote-only to the Tags field. Save. That is the switch.

Matching is forgiving about presentation and strict about the word:

  • Capitals are ignored, so Quote-Only and QUOTE-ONLY both match.
  • Spaces around the tag are ignored.
  • The whole tag has to match. quote-only-legacy does not match, and neither does quoted.

The word itself is Quote-only product tag in Theme settings, under Quote requests. Change it if you prefer a different tag, and retag your products to suit. Emptying that setting switches the feature off for every product at once, because there is no tag left to match, and every quoted product goes back to showing its stored price and an add to cart button.

Note Turn off inventory tracking on a quoted product. The theme never consults availability on a quote-only product, so it will not print a sold-out badge whatever the number says. Shopify's own In stock filter on collection pages does consult it, and a product Shopify records as out of stock is excluded from those results.

The wording on the button

Two settings under Theme settings, Quote requests carry the words, and both apply to every quoted product at once. There is no per-product wording.

Quote button label

The words on the button. Ships as Request a quote.

Quote note

A line of small print under the button, for a reply time or a no-obligation statement. Ships as Priced per project. A designer replies within 2 business days. Keep it to about 15 words. Leave it empty and no line is drawn.

They do not appear in the same places. The note is only drawn where there is room under the button:

Surface Button label Note
Product page quote panel Yes Yes
Featured product section Yes Yes
Quick view Yes Yes
Sticky buy bar Yes No
Accessory row Yes No

Price on request is not a setting. It is a translated string, so it is changed in Shopify admin under Online Store, Themes, Edit default theme content. Search that screen for Price on request. Changing it there changes every place the phrase is printed, and there is no way to word it differently on one surface.

All four Quote requests settings are defined in the Theme settings reference.

Check the result in five places

The tag changes the product everywhere it appears, so one product page load does not prove it. Look at these:

  1. The product page. The price slot reads Price on request. The whole buy stack is gone: no add to cart, no quantity, no accelerated checkout, no tax note, no pickup availability. In its place is a panel with a tick mark, the quote button and the note.
  2. A product card in a collection grid. The price row reads Price on request. There is no sale badge, no sold-out badge and no stock line, and the card is the same shape and height as the cards beside it.
  3. Quick view. Open the quick view control on that card. It shows Price on request and the quote button with its note, not a variant picker and an add to cart.
  4. The sticky buy bar. Scroll the product page past the buy panel. The bar carries the product title, Price on request, and the quote button rather than an add to cart button. If no bar appears, check Show sticky buy bar in the product template's Buy buttons block.
  5. An accessory row. If the quoted product is listed as an accessory on another product, that row shows the quote link where its add to cart button would be.

The header search panel also shows Price on request against a quoted product in its suggestions, which is worth typing the product name into once.

Limit If the quoted product has variants, the variant picker still renders on the product page, and nothing consumes the choice, because there is no form to submit it with. Quoted work is usually a single variant. If yours has options that matter, ask about them on the form instead.

Two things that drift out of step

The home page's Quote request section carries a heading, a paragraph, a photograph and a button. That button's Button link is its own setting and is not connected to the global Quote request page. Changing one does not change the other, so a store that moves its quote page can end up with product buttons going to the new page and the home page band going nowhere.

Check it after any change to the page: open Customize, the home page, then the Quote request section, and look at Button link. The button only draws when both Button label and Button link are filled in, so a blank link removes the button silently rather than leaving a dead one. See Set up the home page.

A quoted service talking about delivery times

The Shipping and returns band on the product template renders on every product, quoted work included, and a build that takes four months does not want to be advertising a two-day delivery window. It only draws at all when Show shipping details or Show return policy is switched on in Theme settings, SEO and structured data, so on a store that has not turned either on there is nothing to fix.

Three ways out, in increasing order of effort:

Give the product its own note

Add the metafield custom.shipping_note to the product with text such as "Timings are quoted per project." That note replaces the store's handling and delivery day counts on that product alone. The flat rate, the free-shipping threshold and the destinations are store-wide facts and stay. This is the only option that changes one product without changing the others.

Give quoted products their own product template

In the theme editor, create a new product template from the product template, remove the Shipping and returns block from it, then assign that template to each quoted product in the product's Theme template dropdown in Shopify admin.

Remove the block outright

Delete the Shipping and returns block from the product template. Blocks on a template apply to every product using it, so this removes the band from your whole catalog, not only from quoted work.

The metafield key is set by Per-product shipping note metafield in Theme settings under SEO and structured data, and ships as custom.shipping_note. Change the setting if you already use a different namespace and key. More on both in Shipping, returns and search engine details and Arrange the product page.

Send yourself a test request

The last step is the one that catches everything above at once. Open the storefront, click Request a quote on the tagged product, fill in the form and send it. You should land on the quote page rather than the home page, the form should submit, the card should be replaced by a confirmation panel, and the email should arrive at the store's contact address with each answer under the label you typed on its field.

If it does not arrive, check the contact address in Shopify admin under Settings before looking at the theme. Nothing about that address is a theme setting.

Something wrong here If a step does not match what you see, say so and it gets fixed. Documentation goes stale, which is why the line under the title carries a date.