Skip to main content
PandaCodeGen.

Custom websites / Quotes instead of checkout

Product Catalog Website Without a Cart: Take Quote Requests

If you sell custom or made-to-order products, your website needs a catalog and a quote form, not a shopping cart. How we build one from a single product list, with a free example you can download.

By Hassan Jamal, Co-founder and Lead Engineer

Published ·Updated

If your prices depend on size, quantity or artwork, you don't need a shopping cart. You need a product catalog that ends in a quote form, so each enquiry arrives with the product already filled in. That's how we built Emblematic Studio, a catalog of 22 custom product types where visitors ask for a quote instead of checking out.

Why a quote form suits custom products better than a cart

A cart needs a fixed price for every option. When the price depends on the job, a cart either shows the wrong price or sends the buyer to the phone anyway. A quote form asks only for what you need to price the job and sends it to you in one email. Emblematic Studio's form asks for the product, size, quantity and backing, plus contact details. Visitors can attach artwork, which is checked for type and size, emailed to the studio and never stored on the site. If you don't take payment online, you also don't need a store platform's checkout or its monthly plan.

The Emblematic Studio quote form: a short request for product, size, quantity and backing, followed by name, company, phone and email fields
The quote form on Emblematic Studio, an independent client project.

One product list for the whole site

On Emblematic Studio, the same 22 products appear in seven places: the desktop menu, the mobile menu, the catalog page, each product page, the related-product cards, the quote form's product list and the sitemap. If each place keeps its own copy, they drift apart without anyone noticing: a product goes missing from the quote form, or the sitemap lists a page you deleted. So the site keeps one typed product list, and all seven read from it. Adding a product means adding one entry.

Download a free example

We wrote a small example of the same idea for anyone who wants to try it. It isn't Emblematic Studio's code and holds no client data. It's four made-up products and a script that checks them, then builds the menu links, quote options and sitemap from that one list.

Save both JavaScript files in one folder. With Node.js 22 or later installed, run:

node catalog.mjs
node --test catalog.test.mjs

The first command prints the generated menu links, quote options and sitemap. It doesn't write any files or connect to the internet. The second runs the tests.

What one product record looks like

{
  slug: "woven-labels",
  name: "Woven labels",
  published: true,
  quoteable: true,
  related: ["printed-labels"]
}
What the example builds from its four sample products
OutputResultRule
Product pages3 page addressesPublished products only.
Menu links3 linksThe same published products.
Quote form options2 optionsPublished products that take quote requests.
Sitemap3 URLsFull product URLs on your domain.
The unpublished prototypeLeft out everywhereLinks to it from other products drop out too.

The script stops with an error if two products share a slug or a related product doesn't exist, so the mistake shows up before the site is built, not after a customer finds it.

Try breaking it

Copy the first product and paste it again without changing its slug: the script reports a duplicate. Change a related slug to one that doesn't exist: it reports the missing product. Set a product's published flag to false: its page address, menu link, quote option and incoming related links all drop out together.

The flag can't hide a page that's already live by itself. Your website has to apply the same rule when it serves pages, and a retired product should redirect to a similar one or return a "gone" page. Leaving a page out of the sitemap doesn't remove it from Google either.

When should products move into an editor?

A product list in code works when a developer adds products a few times a year. If your staff change products every week, put the list in an editor like Sanity so they can do it themselves, and keep the same rule: one list, and every part of the site reads from it. If you need stock levels, online payment or shipping rates, you need a store. Our ecommerce development service covers that.

For a catalog site with a quote form, start with custom website development. If your staff will edit the products, see our Sanity CMS service.

Common questions

Can I have a product catalog website without a shopping cart?
Yes. Each product page ends in a quote form instead of an add-to-cart button, and the enquiry reaches you by email with the product already filled in. It suits custom or made-to-order products where the price depends on the job.
Should every product catalog live in code?
No. A list in code suits a small catalog that a developer updates now and then. If staff change products often, keep the list in an editor like Sanity. If you need stock levels, online payment or shipping, use a store platform. Either way, keep one list that the whole site reads from.
Is the downloadable example client code?
No. We wrote it as a teaching example based on the approach in the Emblematic Studio case study. It contains no client data, code or results.

PandaCodeGen offers website and application development. Recommendations here reflect our delivery approach; the proposal for your project defines its scope. How we use evidence.