Custom Shopify development or theme customization: how to decide

Custom Shopify development or theme customization: how to decide

Last verified: October 23, 2026
14 min read
Guide

Most Shopify requests arrive phrased as "can you just change the theme?" Sometimes the answer is ten minutes in the theme editor. Sometimes the change sits in checkout or in pricing logic, where theme code has no reach at all, and the real choice is between an App Store app, a custom app with Shopify Functions, a plan upgrade, or accepting that Shopify does not allow it. Picking the wrong layer is how stores end up paying for a theme hack that breaks on the next update, or for a custom app that only runs on a plan they do not have.

This guide sorts requests by the layer that can actually deliver them. Every plan limit, date and number below comes from shopify.dev or the Shopify Help Center, checked on 23 October 2026.

#What can you change in a Shopify theme without custom code

Online Store 2.0 themes are built from JSON templates. Shopify’s JSON template documentation describes them as data files that store a list of sections and their settings, and says merchants “can add, remove, and reorder these sections using the theme editor”. A template can render up to 25 sections, and each section can have up to 50 blocks.

So a large share of “customization” is configuration: moving a testimonial block above the fold, adding a size guide section to one product template, building a landing page from existing sections, changing colours and fonts in theme settings. If your theme ships the section you need, nobody has to write code. The r/shopify thread that asked this exact question on 23 October 2026 put it in one line:

A lot of “custom” requests turn out to be a metafield plus a section.

(u/Born_Programmer_1089, r/shopify, 23 October 2026)

The next step up is editing Liquid, CSS and JavaScript in the theme itself. That covers a new section type, a custom product template, a metafield shown on the product page, a different collection filter layout. Shopify’s help page on editing theme code is blunt about the cost: you should only edit the code “if you can’t make the changes that you need” in the editor, and if your changes are not compatible with a theme update, “all your code changes are removed in the updated copy”. Duplicate the theme first, and keep a list of changed files so the next update is a merge, not an archaeology dig.

What theme code cannot do is just as important. It renders the storefront. It does not run during checkout, it does not change how discounts are calculated, and it cannot stop an order from being placed.

#When do you need an app or a theme app extension

Reviews, product bundles, size recommenders, loyalty widgets and 3D viewers usually come from apps. Modern apps put their storefront output in a theme app extension: Liquid blocks the merchant places in the theme editor. Shopify lists the benefit plainly: merchants “won’t need to manually edit their theme code”, and apps “don’t edit theme code, which decreases the risk of introducing breaking changes to the theme”. Theme app extensions integrate with Online Store 2.0 themes, so a store still on an older vintage theme loses that clean path.

For a store owner, that sets two rules:

  • If an App Store app does the job and installs through app blocks, it is usually cheaper and safer than custom theme code, because the app vendor maintains it and it survives theme updates.
  • If a developer proposes pasting an app’s snippet into theme.liquid by hand, ask why the app has no app block. Hand-pasted snippets tend to stay in the theme after the app is uninstalled.

A custom app makes sense when your logic is specific to your business (an ERP sync, a pricing rule nobody sells, a B2B approval step) or when the App Store options each cover half the requirement and conflict with each other.

#What Shopify Functions do and which plan you need

Shopify Functions let developers “customize Shopify’s backend logic by running custom code during the checkout process”. This is the layer for anything that changes money, delivery or whether an order may proceed. The current Function APIs:

  • Discount: one function can apply product, order and shipping discounts
  • Payment Customization: rename, reorder or hide payment methods, set payment terms
  • Delivery Customization: rename, sort or hide delivery options
  • Cart and Checkout Validation: block checkout with your own error message
  • Cart Transform: expand, merge or update cart lines, for bundles
  • Fulfillment Constraints and Order Routing
  • Pickup Point and Local Pickup Delivery Option Generators

Functions compile to WebAssembly, run on Shopify’s servers and work under strict limits on instruction count, input and output size. The plan rule is the part store owners miss. Shopify’s docs say “stores on any plan can use public apps that are distributed through the Shopify App Store and contain functions”, but “only stores on a Shopify Plus plan can use custom apps that contain Shopify Function APIs”.

In practice: a payment-hiding rule from an App Store app works on Basic. The same rule written as a custom app for your store alone needs Plus. Before you commission a custom Function, check your plan, or check whether a public app already ships it.

There are also per-store caps. Shopify allows a maximum of 25 active functions each for discounts, payment customizations, delivery customizations and validations. Stores with many apps doing similar jobs can hit that ceiling.

Shopify Scripts, the older Script Editor tool for discount and shipping logic, is finished. The Script Editor help page says that as of June 30, 2026 Shopify Scripts “has been deprecated”, published scripts “have been deactivated and no longer work”, and the replacement is Shopify Functions. If your tiered pricing quietly stopped working this summer, that is the reason.

#Can you do wholesale pricing on Shopify without an app

Wholesale is the clearest example of checking Shopify’s built-in features before writing anything. On 22 October 2026 a store owner asked r/shopify for exactly this:

I am trying to see what alternatives people on here have done to provide a discounted price for wholesalers vs retail customers. I was thinking I could possibly create a coupon code that the customer could use to apply a fixed % discount.

(u/GreenGloober, r/shopify, 22 October 2026)

The replies covered two of the layers above. One developer described the theme route: a segment-limited discount code for checkout, plus a Liquid check on the product page.

Tag your wholesale customers (e.g. “wholesale”), build a customer segment from that tag, and create a percentage discount code limited to that segment so it can’t leak to retail buyers. […] You fix that in the theme: a small Liquid check on customer.tags that, for logged-in wholesale customers, shows the wholesale price next to or instead of retail. That’s display only, so the discount still does the real work at checkout.

(u/vladeta, r/shopify, 23 October 2026)

That works for a flat percentage, and the “display only” warning is the important part: the theme shows a number, the discount decides the charge, and the two can drift apart. The same comment then called native B2B price lists a Plus feature. Another reply pointed to the built-in route instead:

add your wholesalers as companies, make a catalog with your wholesale % off, and once they log in they see their own price on every product. non-plus caps you at 3 catalogs but that’s plenty if you just have one wholesale tier

(u/HoneyedVices, r/shopify, 23 October 2026)

Shopify’s documentation sides with the second answer. Shopify B2B “is available on the Basic, Grow, Advanced, and Shopify Plus plans”, not only on Plus. You set up wholesale customers as companies and assign them catalogs with their own prices.

The B2B plan comparison shows where the plans differ:

B2B featureBasic, Grow, AdvancedPlus
Active B2B catalogsUp to 3, assigned through B2B marketsUnlimited
Catalog assigned directly to a company or locationNoYes
Quantity rules (minimum, maximum, increment)YesYes
Quantity price breaksYesYes
Net termsYesYes
Deposit requirementsNoYes

So a wholesaler with one trade price list and volume breaks may need no app and no custom code on Basic. A business with a separate price agreement per customer needs direct catalog assignment, which means Plus, or a pricing app, or a custom discount Function inside a public app. Rewriting prices in the cart has its own gate: the Cart Transform API says only development stores or Plus stores can use apps with lineUpdate operations.

WooCommerce owners comparing platforms will recognise the trade-off from the other side: there, per-customer pricing is a plugin or custom PHP on any hosting, without a plan tier, but you maintain it yourself. Our Shopify Plus vs headless WooCommerce comparison covers that decision in full.

#What replaced checkout.liquid

Checkout used to be the place where Plus stores edited Liquid freely. That ended in stages, and Shopify’s dates are precise:

  • August 13, 2024: checkout.liquid customizations stopped working on the Information, Shipping and Payment pages. The Shopify changelog said stores that missed the deadline would be “automatically upgraded to an un-customized, out-of-the-box Shopify Checkout”.
  • August 28, 2025: the checkout.liquid documentation says it was sunset on the Thank you and Order status pages, and script tags on those pages were sunset for Plus stores. The same day the additional scripts field became view-only.
  • August 26, 2026: the deadline for non-Plus stores to upgrade their Thank you and Order status pages. Shopify’s help page says the upgrade replaces those pages and any existing customizations on them.

The replacement is a set of narrower tools. Checkout UI extensions add blocks built from Shopify’s own components, running in an isolated sandbox with no access to “the checkout page itself (HTML or other assets)”. Web pixels handle tracking. Branding settings and the Checkout Branding API handle design. Functions handle logic.

The plan line runs through the middle of checkout. Shopify’s checkout customization page says “advanced checkout customization features are available only on the Shopify Plus plan”, listing apps that customize the Information, Shipping and Payment pages and the Checkout Branding API as Plus features. Standard customizations are available on Basic and above.

#Which Shopify features are Plus only

From the pages cited above, these are the Plus-only items most likely to decide a project:

  • Custom apps that contain Shopify Functions (public App Store apps with Functions work on any plan)
  • Checkout UI extensions on the Information, Shipping and Payment steps
  • Checkout Branding API
  • Cart Transform lineUpdate operations, used to override a cart line’s price, title or image
  • Payment terms set by a payment customization Function, and hiding specific payment placements
  • Unlimited B2B catalogs, direct catalog assignment to companies, deposit requirements

Anything not on that list may still have a plan nuance. Shopify changes these pages, so check the page itself on the day you scope, not a blog post from last year, this one included.

#Check first whether Shopify allows the change at all

The first reply in the same thread added the step most decision lists skip:

First check whether Shopify actually allows the change you’re trying to make. For example, changing how a product page looks is very different from enforcing a purchasing rule at checkout. The first might only need a theme edit, while the second may need Shopify Functions or a compatible app.

(u/kunalkhatri12, r/shopify, 23 October 2026)

Some requests fail on platform rules before budget even comes up. Shopify documents several of them:

  • No arbitrary code in checkout. Checkout UI extensions “are limited to specific UI components and APIs that are exposed by the platform” and run in a Web Worker without access to the DOM. A design that needs a custom script injected into the payment step is not buildable.
  • Delivery sorting has a floor. The Delivery Customization API says “the cheapest shipping delivery option must always be the first option selected”.
  • Subscriptions block some logic. Cart Transform rejects expand, merge and update operations when a selling plan is present, and payment customization cannot set payment terms when the cart contains subscription items.
  • Network calls from Functions are restricted. For Discount functions the fetch target is limited to custom apps on Plus and Enterprise stores; for Validation functions, to custom apps on Enterprise stores.

A ten-minute read of the relevant shopify.dev page before a quote prevents a familiar failure: a feature specified, designed and half built, then dropped because the platform never allowed it. When the answer is no on Shopify, the honest options are a different flow, an external step before checkout, or a platform where you own the checkout code. Owning the code has a price that developers tend to underrate. In an 18 October thread an experienced developer asked whether to build client stores on Shopify or self-host, saying that on Shopify “I feel like I’m working inside a box”. One answer came from someone who has run many custom builds:

In my career I’ve presided over loads of headless and custom builds. Very few should have been done that way, and in 2026 that’s especially the case. Exceptional requirements are what necessitate complexity.

(u/pjmg2020, r/shopify, 19 October 2026)

If your requirement really is exceptional, for example checkout logic Shopify refuses, our Shopify to WooCommerce migration guide covers what the move involves.

#Decision table: theme edit, app, Function or Plus

What you wantLayer that delivers itPlan needed
Rearrange sections, new landing page from existing sectionsTheme editorAny
New section type, metafield display, custom product templateTheme code (Liquid)Any
Reviews, bundles widget, loyalty displayApp with a theme app extensionAny
Hide or rename a payment or delivery methodPublic app with a Function, or custom appAny for public app; Plus for custom app
Block checkout on a rule (minimum quantity, address restriction)Validation FunctionAny for public app; Plus for custom app
Tiered or customer-specific discount logicDiscount FunctionAny for public app; Plus for custom app
One trade price list with volume breaksShopify B2B, built inBasic or higher
Separate prices per wholesale customerB2B with direct catalog assignmentPlus
Custom block on Information, Shipping or Payment stepCheckout UI extensionPlus
Custom block on Thank you or Order status pageCheckout UI extensionCheck the current page for your plan
Script injected into checkout HTMLNot possible on ShopifyNone

#How to brief a Shopify developer

Write the request as an outcome: “wholesale customers in Germany see net prices and must order in cases of six” is a brief, “add a script to the cart” is a guess at the solution. Include your plan, the apps already installed, and whether you use subscriptions or B2B. One reply in the decision thread added a habit worth copying:

Before committing, write the exact rule in plain English with a few test cases.

(u/Muted_Jellyfish_6784, r/shopify, 23 October 2026)

Ask for the quote to separate the build from ongoing maintenance. Theme code, Functions and checkout extensions all need someone to update them when Shopify changes an API version.

If the answer is theme work, a Shopify developer can usually scope it from the template list. If the work touches checkout, pricing or agent-driven buying, it also changes how AI shopping tools can read and buy from your store, which is what our AI commerce readiness service checks. The Universal Commerce Protocol guide explains how AI agents are changing the way people buy online.

Next step

Turn the article into an actual implementation

This block strengthens internal linking and gives readers the most relevant next move instead of leaving them at a dead end.

Related cluster

Explore other WordPress services and knowledge base

Strengthen your business with professional technical support in key areas of the WordPress ecosystem.

Frequently asked questions

Practical answers to apply the topic in real execution.

Can I build wholesale pricing on Shopify without an app#
Often yes. Shopify B2B runs on the Basic, Grow, Advanced and Plus plans, with quantity rules, quantity price breaks and net terms on all four. Lower plans are limited to 3 active B2B catalogs assigned through markets; unlimited catalogs and direct assignment to a company need Plus.
Do I need Shopify Plus to use Shopify Functions#
No, if the function comes in a public app from the Shopify App Store: Shopify says stores on any plan can use those. You need Plus when the function lives in a custom app built only for your store.
Can I still edit checkout.liquid#
No. Shopify's documentation says checkout.liquid is unsupported for the Information, Shipping and Payment steps, and it was sunset on the Thank you and Order status pages on August 28, 2025. Checkout changes now go through checkout UI extensions, pixels, branding settings and Functions.
Will a theme update remove my code changes#
It can. Shopify's help page warns that if your code changes are not compatible with a theme update, they are removed in the updated copy. Work on a duplicate theme and keep a list of every file you changed.

Need an FAQ tailored to your industry and market? We can build one aligned with your business goals.

Let’s discuss

Related Articles