How to Hide Price on Specific Products in Shopify (No App) - eCommerce Thesis

🎓 Free YouTube Course

Learn WordPress Theme Development step by step

Watch on YouTube

How to Hide Price on Specific Products in Shopify (No App)

To hide the price on specific Shopify products only, tag those products with “hide-price,” then edit your theme’s price.liquid snippet to check for that tag and display “Contact for price” instead. Alternatively, create a custom product template without the price block and assign it to selected products — no app needed.

Not every product should show a price.

Maybe you sell custom furniture where every quote depends on size and materials. Maybe you run a B2B store where wholesale pricing is negotiated per client. Maybe you’re launching a “coming soon” product and don’t want to commit to a number yet. Or maybe you sell high-ticket services where “Contact us” converts far better than a sticker price ever could.

Whatever the reason, you go looking for the option in Shopify admin and hit a wall: Shopify has no built-in setting to hide prices — not storewide, and definitely not for specific products only. The price field is required, and your theme displays it everywhere: product pages, collection grids, search results, even the cart.

The usual advice? Install a “request a quote” or “hide price” app for $7–$15 a month. But if all you need is to hide the price on a handful of products and show “Contact for Price” instead, an app is overkill — this is a genuinely small customization.

In this tutorial, I’ll show you three ways to hide the price on specific products only, from a completely code-free method to a scalable tag-based system:

  1. Method 1 (no code): a custom product template with the price block removed — done entirely in the theme editor
  2. Method 2 (recommended): a tag-based code approach that hides the price and swaps the Add to Cart button for a contact button, automatically, on any product you tag
  3. Method 3 (advanced): the same logic driven by metafields for cleaner data management

I’ll also cover the part most tutorials forget: prices leak in more places than the product page — collection grids, search results, the cart — and I’ll show you how to plug those leaks too. As a Shopify developer, this is one of the most common client requests I get, and this is exactly how I build it. Let’s start.


Table of Contents

  • Why Hide Prices on Some Products? (Real Use Cases)
  • What “Hiding the Price” Actually Involves
  • Before You Start
  • Method 1: Custom Product Template — No Code Required
  • Method 2: Tag-Based Price Hiding (Recommended)
    • Step 1: Tag Your Products
    • Step 2: Edit the Price Snippet
    • Step 3: Replace the Buy Button with a Contact Button
    • Step 4: Hide Prices on Collection Pages Too
  • Method 3: Metafield-Based Hiding (Advanced)
  • Which Method Should You Choose?
  • Best Practices for “Contact for Price” Products
  • Common Mistakes to Avoid
  • Troubleshooting
  • FAQ
  • Conclusion

Why Hide Prices on Some Products? (Real Use Cases)

Hiding prices sounds counterintuitive — eCommerce is built on visible pricing. But there are legitimate, conversion-driven reasons stores do it on selected products:

  • Custom and made-to-order products. Furniture, signage, printing, machinery — when the real price depends on specifications, a fixed number misleads customers and triggers wrong expectations.
  • B2B and wholesale. Negotiated pricing per client is standard in wholesale. Public prices can undercut your sales conversations (and tip off competitors).
  • High-ticket items and services. For expensive offerings, a “Request a Quote” flow starts a conversation instead of scaring visitors off with a number lacking context.
  • Coming-soon or pre-launch products. You want the product page live for SEO and hype, but pricing isn’t final.
  • MAP (minimum advertised price) restrictions. Some brands prohibit displaying prices below a threshold; hiding the price until contact keeps you compliant.

The key phrase is selected products. The rest of your catalog keeps normal prices and normal Add to Cart buttons — which is exactly why this needs a per-product solution, not a storewide switch.

What “Hiding the Price” Actually Involves

Here’s what most quick tutorials miss. On a typical Shopify theme, a product’s price appears in at least five places:

  1. The product page (the obvious one)
  2. Collection grids and featured-product sections
  3. Search results and predictive search
  4. The cart (drawer and cart page)
  5. Checkout

Hiding the price on the product page while leaving the Add to Cart button active is pointless — the shopper adds the item and sees the price in the cart two seconds later. A proper implementation does two things together:

  • Hides the price display wherever the product appears
  • Replaces the Add to Cart button with a contact action (quote form link, email, or WhatsApp button) so the product can’t be carted at all

Both methods below handle this pair correctly.

Before You Start

You’ll need a store on an Online Store 2.0 theme (Dawn, Sense, Craft, Refresh, or most modern paid themes — I’ll use Dawn’s file names, which most free themes share) and 15–30 minutes.

And the golden rule of theme edits: duplicate first. Go to Online Store → Themes → ⋯ → Duplicate, rename the copy, and make all changes there. Publish only when everything works.

Method 1: Custom Product Template — No Code Required

If you only have a few no-price products and don’t mind a slightly manual setup, you can do this entirely in the theme editor:

  1. Go to Online Store → Themes → Customize
  2. In the top-center dropdown, choose Products → Create template
  3. Name it something like no-price, based on your Default product template, and click Create
  4. In the left sidebar, find the Price block inside Product information, click it, and click Remove block (or click the eye icon to hide it)
  5. Do the same for the Buy buttons block
  6. Click Add block → Custom Liquid where the buy button used to be, and paste a simple contact button:

liquid

<a href="/pages/contact" class="button button--full-width">
  Contact Us for Price
</a>
  1. Click Save
  2. Now assign products: go to Products, open a product, and in the right sidebar under Theme template, select no-price. Repeat for each product

Pros: zero code files touched, completely reversible, safe for total beginners.

Cons: you must manually assign the template to every product, and — the big one — this doesn’t hide prices on collection pages, search results, or featured sections. The product page is clean, but the price still shows everywhere else. For a few low-visibility products that may be acceptable; for a real quote-based catalog, use Method 2.

Method 2: Tag-Based Price Hiding (Recommended)

This is the professional approach: tag any product with hide-price, and everywhere your theme renders prices, the tag is detected and the price is replaced with “Contact for Price.” Tag a product — hidden. Remove the tag — visible again. No template juggling, and it scales to hundreds of products.

Step 1: Tag Your Products

  1. Go to Products in your Shopify admin
  2. Open a product whose price you want to hide
  3. In the Tags field (right sidebar), add: hide-price
  4. Click Save

Tip: to tag many products at once, select them in the product list and use ⋯ → Add tags.

Step 2: Edit the Price Snippet

Dawn (and themes built on it) renders every price through one central file — which is great news, because one edit covers product pages, collection cards, search results, and featured sections all at once.

  1. Go to Online Store → Themes → ⋯ → Edit code on your duplicate theme
  2. Open Snippets → price.liquid
  3. At the very top of the file, add:

liquid

{%- if product.tags contains 'hide-price' -%}
  <span class="price price--contact">Contact for Price</span>
{%- else -%}
  1. At the very bottom of the file, add the closing tag:

liquid

{%- endif -%}
  1. Click Save

That’s the whole trick: the snippet’s original code becomes the else branch, and tagged products short-circuit into the contact message instead.

Want the message styled? Add this to the bottom of Assets → base.css:

css

.price--contact {
  font-size: 1.6rem;
  font-weight: 600;
  letter-spacing: 0.04em;
}

Step 3: Replace the Buy Button with a Contact Button

Now close the cart loophole. Open Sections → main-product.liquid, and find the buy buttons block — search (Ctrl/Cmd + F in the code editor) for:

when 'buy_buttons'

Directly after that {%- when 'buy_buttons' -%} line, wrap the block’s existing content like this:

liquid

{%- when 'buy_buttons' -%}
  {%- if product.tags contains 'hide-price' -%}
    <a href="/pages/contact?product={{ product.handle }}" class="button button--full-width button--secondary">
      Request a Quote
    </a>
  {%- else -%}
    ... (the block's original content stays here, untouched) ...
  {%- endif -%}

Then place {%- endif -%} just before the block’s original ending (right before the next {%- when line begins). Save.

Notice the link: /pages/contact?product={{ product.handle }} passes the product handle in the URL, so you can see which product the inquiry came from. Prefer WhatsApp? Swap the href for:

liquid

href="https://wa.me/YOURNUMBER?text=Hi! I'd like a price for: {{ product.title | url_encode }}"

That opens WhatsApp with the product name pre-filled — extremely effective in markets where customers prefer chat over forms.

Step 4: Hide Prices on Collection Pages Too

Here’s the payoff of Dawn’s architecture: collection cards, search results, and featured-product sections all render prices through the same price.liquid snippet you already edited. Your tag check from Step 2 automatically covers them. Browse a collection containing a tagged product and you’ll see “Contact for Price” right in the grid.

Two small extras to check:

  • Quick-add buttons. If your theme’s product cards show a quick “+” or “Add” button, hide it for tagged products. In Snippets → card-product.liquid, find the quick-add markup and wrap it in {%- unless card_product.tags contains 'hide-price' -%} ... {%- endunless -%}
  • Judge/review apps or bundles that print prices independently pull from their own scripts — check any third-party widgets separately

Done. Tag any product, and its price disappears everywhere while a quote button takes over the product page.

Method 3: Metafield-Based Hiding (Advanced)

Tags work brilliantly, but they’re visible in some storefront contexts and can get messy in large catalogs where tags drive filtering. If you want cleaner data, use a metafield:

  1. Go to Settings → Custom data → Products → Add definition
  2. Name: Hide price · Namespace and key: custom.hide_price · Type: True or false
  3. Save, then toggle it on for any product (the field appears at the bottom of the product admin page)

Then in your code, replace every tag check with:

liquid

{%- if product.metafields.custom.hide_price -%}

Everything else from Method 2 works identically. Metafields are also the better base if you later expand into per-product custom quote text, minimum-order notes, or B2B logic.

Which Method Should You Choose?

SituationBest method
1–5 products, no comfort with codeMethod 1 (template)
Ongoing quote-based products, want prices hidden everywhereMethod 2 (tags)
Large catalog, tags already used heavily for filteringMethod 3 (metafields)
Hide prices for some customers (B2B logins) rather than some productsDifferent problem — requires customer tags or Shopify B2B, not this tutorial

For most stores, Method 2 is the sweet spot: five minutes per new product (just add a tag) and complete coverage.

Best Practices for “Contact for Price” Products

Hiding a price creates friction by design — the goal is to convert that friction into a conversation. These details make the difference:

Tell them why. “Contact for Price” alone feels evasive. “Custom-built to your specs — request a quote” or “Wholesale pricing — contact our team” explains the missing number and builds trust instead of suspicion.

Make the next step effortless. A pre-filled WhatsApp message or a short quote form (name, contact, quantity) converts far better than a bare email address. Every extra field costs you inquiries.

Respond fast. A quote request is a hot lead. Stores that reply within an hour close dramatically more of these than stores that reply the next day.

Keep the product page rich. Since price can’t do the selling, your photos, specs, and description must. Treat no-price pages as your most detailed pages, not your laziest.

Don’t hide prices out of fear. If your product is competitively priced and shoppers expect instant checkout, hiding the price just adds a hurdle. Reserve this pattern for genuinely quote-appropriate products.

Common Mistakes to Avoid

  1. Hiding the price but leaving Add to Cart active. The cart reveals the price instantly, and worse — the customer can buy at a price you meant to negotiate. Always pair price hiding with a buy-button swap.
  2. Setting the price to $0 instead of hiding it. A visible “$0.00” looks like a glitch, breaks Google Shopping feeds, and can let products be ordered for free. Keep the real (or placeholder) price in admin; hide it only in the theme.
  3. Only fixing the product page. Collection grids and search results leak prices. Method 2’s central snippet edit exists precisely to prevent this.
  4. Editing the live theme. One misplaced {% endif %} can white-screen your product pages. Duplicate first, always.
  5. Typos in the tag. hide-price, Hide Price, and hideprice are three different tags. Pick one exact spelling and stick to it (tags are case-insensitive in Liquid’s contains check only if the case matches the stored tag — safest is lowercase everywhere).
  6. Forgetting structured data. If you run rich product schema, tagged products may still expose prices to Google. For strict confidentiality, extend the tag check to your structured-data snippet as well.

Troubleshooting

“Contact for Price” isn’t showing — the price still appears. Check the tag spelling on the product exactly matches your code, and confirm you edited price.liquid in the theme you’re actually previewing (the duplicate, not the live one).

The price is hidden but I see a blank space instead of my message. Your if block is in the right place but the message markup may sit outside the snippet’s wrapper div. Move the <span> inside the snippet’s outer container, or add margin via the CSS class.

Prices are hidden on the product page but still show in collections. Your theme’s product cards may not use price.liquid (some paid themes inline their own price markup). Open card-product.liquid (or your theme’s equivalent) and add the same tag check around its price output.

The page broke after editing main-product.liquid. An unclosed {%- if -%} is the usual cause. Use the code editor’s Older versions dropdown to roll the file back, then re-apply the edit, making sure your {%- endif -%} sits inside the buy_buttons case — before the next {%- when line.

Tagged products can still be bought via quick-add on collection cards. Wrap the quick-add markup in card-product.liquid with the unless check from Step 4.

The price shows in Google results even though it’s hidden on-site. Google reads your product structured data. Locate your theme’s structured-data or JSON-LD snippet and wrap the price offer output in the same tag condition.


FAQ

1. Can I hide the price on specific Shopify products without an app? Yes. Either assign those products a custom template with the price block removed, or add a hide-price tag and a small Liquid edit that swaps the price for “Contact for Price” everywhere it appears.

2. Does Shopify have a built-in hide-price setting? No. Prices are required fields and themes display them by default. Hiding them for selected products requires a template, tag, or metafield-based customization like the ones in this guide.

3. Will the hidden price still appear in the cart? Only if you leave Add to Cart active. That’s why Step 3 replaces the buy button with a quote/contact button on tagged products — they can’t be carted, so the cart never exposes the price.

4. Can customers still see the price in the page source code? With Method 2, the price markup is never rendered for tagged products, so it’s not in the HTML. But remember the price still exists in your admin and APIs — this hides it from shoppers, not from Shopify.

5. How do I hide prices on collection pages too? In Dawn-based themes, editing the central price.liquid snippet covers collection grids, search, and featured sections automatically. Themes with their own card markup need the same check added to card-product.liquid.

6. Can I show the price only to logged-in customers instead? Yes — that’s a variation of the same technique using {% if customer %} instead of a product tag, optionally combined with customer tags for wholesale accounts. It’s the standard app-free B2B pattern.

7. What should I show instead of the price? A short explanatory label (“Custom pricing — request a quote”) plus an effortless contact action: a quote form link or a pre-filled WhatsApp message with the product name included.

8. Does hiding prices hurt SEO? Hiding the visible price doesn’t hurt rankings. Just be consistent: if you want prices fully private, also remove them from your product structured data so Google snippets don’t display them.

9. Can I hide the price on just one variant of a product? Not cleanly — the techniques here work per product. Variant-level price hiding requires JavaScript that reacts to variant selection, which is fragile. Better to split that variant into its own product.

10. Will this work on the Dawn theme? What about paid themes? It works on Dawn and all themes built on its architecture (Sense, Craft, Refresh, Studio). Paid themes use the same concepts but different file names — look for their price snippet and buy-button block.

11. What happens with Google Shopping if I hide prices? Google Shopping requires prices in the product feed regardless of what your site displays. Products with genuinely confidential pricing should be excluded from your feed to avoid disapprovals.

12. Can I bulk-apply this to many products? Yes — select multiple products in your admin product list and use the bulk “Add tags” action to apply hide-price to all of them at once.

13. Will my changes survive a theme update? Theme updates replace code files, so keep a copy of your price.liquid and main-product.liquid edits and re-apply them after updating — it takes a couple of minutes when documented.

14. Is it better to hide the price or show “Price on request” with a form? They’re the same pattern — the label plus a low-friction contact path is what matters. Whichever wording you choose, always explain why the price isn’t shown.


Conclusion

Shopify won’t hide prices for you — but as you’ve seen, you don’t need an app to do it. A custom template handles a couple of one-off products with zero code, while the tag-based approach gives you a proper system: tag any product with hide-price, and its price disappears from the product page, collection grids, and search, replaced by a quote button that starts a real sales conversation.

To recap the recommended path: duplicate your theme, tag your quote-based products, add the short condition to price.liquid, swap the buy button in main-product.liquid for a contact or WhatsApp link, verify collection cards and quick-add, and publish.

Fifteen minutes of setup, no monthly fees, and full control over exactly which products show a number and which ones start a conversation.

If you want to keep building skills like this, the resources below are the next step.


Keep Learning and Get Help

Prefer video? I walk through this customization step by step on my YouTube channel, alongside dozens of other app-free Shopify tutorials: youtube.com/@foysalshopifyexpert

Want it done for you? If you’d rather have an expert set up price hiding, quote flows, or any Shopify customization on your store, hire me directly on Upwork: My Upwork Profile

Ready-made Shopify sections and snippets. I sell polished, plug-and-play Shopify code products — one-time payment, no subscriptions: ecommercethesis.gumroad.com

Learn Shopify professionally. Turn customizations like this into freelancing income with my structured course: Freelancing with Shopify — or browse all courses.

Stuck on a step? Reach me directly on WhatsApp for personal help: wa.me/8801991505652

Happy customizing — and enjoy having full control over your prices.