Mastering Complex Product Customization & Tiered Pricing on Shopify (Without Breaking the Bank!)

Hey store owners! As a Shopify migration expert and someone who spends a lot of time digging into what makes your businesses tick, I love seeing the creative solutions that come out of our community discussions. Recently, a thread titled "Recommended app for acrylic merch" caught my eye, and it was a fantastic example of a merchant, StickyShell, wrestling with a common challenge: how to offer highly customized products with complex, dynamic pricing right on their Shopify store.

StickyShell, who runs an acrylic merch business, was initially handling orders for custom keychains, pins, and standees through WhatsApp and Instagram. They had a PDF price list based on size and quantity, plus options for attachments and finishes. The goal? To bring all that customization and dynamic pricing directly onto their Shopify website.

The App Hunt Begins: Finding the Right Tool for Customization

Like many of you, StickyShell's first thought was, "There must be an app for this!" And they weren't wrong to look. Our community quickly jumped in with some great app recommendations:

  • Easify Product Options: Known for unlimited product options, flexible customization, and pricing rules.
  • SC Product Options: Great for custom fields, personalization, and conditional logic without creating excessive variants.
  • Zepto Product Personalizer: Offers live previews (though StickyShell didn't need this, and OptiAdvancedTech wisely pointed out it could affect image loading speed), connecting SKUs, and conditional logic.

However, StickyShell ran into a common issue: even with these powerful apps, getting a dynamic pricing grid to display exactly as needed was proving tricky. Both Easify and Zepto support teams indicated their apps might not directly support the specific grid-based pricing model StickyShell envisioned. This led to a moment of frustration, where StickyShell considered just attaching a PDF or giving up on a direct on-page grid.

Unlocking Shopify's Native Potential: A No-App Solution Emerges

This is where the community truly shines! Our expert, ajaycodewiz, stepped in with an incredibly detailed, app-free solution that leverages Shopify's built-in features and a touch of custom Liquid code. This approach is fantastic because it saves on app subscription costs and avoids potential site slowdowns.

The core idea revolves around Shopify's variant system. While Shopify natively limits you to three options per product (like Size, Color, Material), you can still have up to 2,048 variants under those options. For anything beyond three options that affect the price, ajaycodewiz suggested merging options (e.g., instead of separate "Hook Type" and "Hook Color" options, combine them into "Ball chain - silver," "Ball chain - gold," etc.). For customizations that don't affect the price (like specific artwork notes or print type in some cases), you can use "line item properties" – a free, native Shopify feature that adds custom fields to your product form.

Quantity-based pricing, which was crucial for StickyShell, can be handled effectively with Shopify's automatic discounts. You can set up multiple tiers (e.g., 10% off for 25+ items, 15% off for 50+, 20% off for 100+). These discounts apply in the cart, and Shopify automatically applies the best possible discount. A neat trick here is that mixed sizes count towards the total quantity, so if a customer buys 30 small keychains and 30 large ones, both lines get the 50+ tier discount!

Step-by-Step: Building the Dynamic Pricing Grid (App-Free!)

Based on StickyShell's precise requirements, ajaycodewiz meticulously laid out how to set up this system. Here's how it breaks down:

Step 1: Build the Product with Three Dropdowns

Go to your Shopify admin, navigate to Products, then Add product. Give it a name like "Custom Acrylic Keychain." Scroll down to the Variants area and add three options:

  • Option name Size. Type your 7 sizes: 25.4 mm (1"), 38.1 mm (1.5"), 50.8 mm (2"), 63.5 mm (2.5"), 76.2 mm (3"), 88.9 mm (3.5"), 101.6 mm (4").
  • Option name Batch. Type your 6 bands: 1 pz (campione), 5-9 pz, 10-24 pz, 25-49 pz, 50-99 pz, 100+ pz.
  • Option name Print. Type: One side, Double side, Double side on top, Double side + gloss.

Step 2: Type Your Prices

For every combination of Size + Batch, enter the corresponding price from your grid. For any "Double side + gloss" variant, add your specific gloss fee (e.g., €0.50) to the base price.

Step 3: Add the Price Table to the Page with Custom Liquid

This is the clever part that displays the dynamic pricing grid directly on your product page. Go to Online Store, then Themes, then Customize. Open your keychain product in the preview, and in the left sidebar, click Product information. Then, click Add block, and select Custom Liquid. Paste the following code into the box on the right, then click Save:

{%- if product.options_by_name['Size'] and product.options_by_name['Batch'] and product.options_by_name['Print'] -%}

{%- assign sizes = product.options_by_name['Size'].values -%}
{%- assign bands = product.options_by_name['Batch'].values -%}
{%- assign bp = product.options_by_name['Print'].values.first -%}
Price per piece{% for b in bands %}{% endfor %}{% for s in sizes %}{% for b in bands %}{% assign c = '' %}{% for v in product.variants %}{% if v.opti s and v.opti b and v.opti bp %}{% assign c = v.price | money_without_currency %}{% break %}{% endif %}{% endfor %}{% endfor %}{% endfor %}
Size{{ b }}
{{ s }}€{{ c }}
{%- endif -%}

Step 4: What Your Customer Sees

With this setup, customers will see the price table right on the product page. They can pick their Size, Batch (quantity), and Print options, and the price will update dynamically based on your variant pricing. An "Edge thickness" dropdown is also included as a line item property, which doesn't affect the price but captures crucial customization details.

When they select "Double side + gloss," the price will automatically reflect the added gloss fee you set in your variants.

Step 5: Sell Accessories as a Second Product

For accessories, ajaycodewiz suggested creating a separate product, like "Keychain accessories," with an option for each of your 18 accessory variants and their respective prices. To make it easy for customers to find them, you can use Shopify's free Search and Discovery app and the "Complementary products" block to display accessories directly on your keychain product page, just like Amazon's "buy these together" feature.

The Real-World Takeaway: Beyond the Technical Solution

What's fascinating is StickyShell's final reflection. While ajaycodewiz's solution technically worked perfectly (aside from a minor mobile responsiveness tweak for the custom Liquid, which they felt was an easy fix), StickyShell ultimately decided to explore a different path. Their reasoning? They realized that even with this elaborate setup, they'd still have to spend hours talking with customers to finalize graphic files and tiny details, just as they had been doing. This highlights a crucial point for all of us: sometimes the technical solution is brilliant, but it might not fully address the underlying business process or customer interaction needs.

StickyShell's pivot towards a "virtual cart/contact module" suggests they're looking for a solution that integrates the *design and consultation* phase more seamlessly, perhaps before the actual add-to-cart step. This isn't a flaw in ajaycodewiz's technical solution, but rather a deeper insight into StickyShell's unique workflow and customer journey.

Apps vs. Native: When to Choose Which

So, what's the lesson here for your own Shopify store? The community discussion beautifully illustrates that Shopify offers incredible flexibility. For many complex pricing and option scenarios, you can achieve a lot with native features and a bit of custom Liquid, potentially saving you app costs.

The main reason to invest in a product options app, as ajaycodewiz pointed out, often comes down to conditional logic – for example, only showing a "glitter epoxy" option if the customer selects a 2-inch or larger size, or dynamically hiding certain fields based on previous selections. If your needs involve intricate dependencies between options, an app like Easify, SC Product Options, or Zepto might be the more straightforward path.

However, if your pricing is primarily grid-based, tied to variants, and you're comfortable with a little code, the native Shopify approach with custom Liquid can be incredibly powerful and cost-effective. It's always smart to start with what Shopify offers for free and only introduce paid apps when a specific limitation genuinely breaks your workflow or requires advanced conditional logic. Big thanks to StickyShell for bringing up such a common and insightful challenge, and to ajaycodewiz and others for their fantastic contributions to the community!

Share:

Start with the tools

Explore migration tools

See options, compare methods, and pick the path that fits your store.

Explore migration tools