To hide, rename or reorder shipping methods on Shopify at checkout, use a delivery customization — a Shopify Function that evaluates each checkout against your rules and changes the delivery options accordingly. It can hide express shipping for heavy or restricted items, hide a free-shipping option until the cart clears a threshold, rename an option to something clearer, reorder them so the method you want sits at the top, or restrict methods by address or customer segment. Because it runs server-side inside Shopify’s checkout, the rules apply consistently for every shopper — not through fragile theme code that never reaches the checkout page in the first place.
What you can actually do to shipping options
A delivery customization gives you three levers over the shipping methods a shopper sees at checkout:
- Hide — remove a delivery option when a condition is met (or not met). Hide express on a restricted product, hide free shipping below a threshold, hide a method outside a region.
- Rename — change the label a shopper reads. Turn a bare “Standard” into “Standard — 3-5 business days” or clarify a courier name into plain language.
- Reorder — change the order the options are listed in, so the method you want chosen appears first instead of buried below a pricier one.
All three run on conditions you define: cart total, the specific products or product types in the cart, the delivery address, or the logged-in customer. That’s the whole point — conditional shipping methods that respond to this order rather than one flat set of rates for everyone.
How it works: a delivery customization Function
Shopify exposes this through Shopify Functions — small pieces of logic that run inside Shopify’s own systems at checkout. A delivery customization Function receives the shipping options Shopify has already calculated for the cart, applies your rules, and returns instructions to hide, rename or move specific options. If you’re new to the mechanism, our primer on what Shopify Functions are explains the model.
The key property is that it runs server-side, at checkout. Checkout is Shopify-controlled and locked down — your theme’s Liquid and JavaScript don’t run there. A Function is the supported extension point that does reach into that flow, which is why it’s the right (and reliable) layer for this, versus a script that only affects the cart page and silently does nothing once the shopper hits checkout.
A delivery customization is deployed as part of a custom app (or an existing app that bundles one). Once installed and configured, it’s activated through your store’s checkout and shipping settings — no per-order intervention.
Use cases and examples
Here’s how the levers map to real merchant rules:
| Goal | Condition | What the Function does |
|---|---|---|
| Stop express on bulky goods | Cart contains a heavy or oversized item | Hide “Express” so only ground/freight shows |
| Restricted / hazmat items | Cart contains a flagged product type | Hide air or express methods that can’t carry it |
| Free shipping only above a threshold | Cart total ≥ your threshold | Hide “Free shipping” until it’s earned; show paid rates below it |
| Clearer option labels | Always | Rename “Standard” → “Standard — 3-5 business days” |
| Push the preferred method | Always | Reorder so your target option lists first |
| Region restrictions | Delivery address in / outside a zone | Hide methods you don’t serve there |
| Local pickup for locals only | Address within pickup radius | Hide or show pickup based on the address |
| Wholesale / VIP rules | Logged-in customer in a segment or tag | Hide or rename methods for that group |
A few of these are worth spelling out:
- Hide express for heavy or restricted items. If a cart contains a 40 kg item or something that can’t fly, showing “Overnight Air” is a broken promise. The Function checks the cart’s contents and drops the methods that can’t fulfill it.
- Hide free shipping until a threshold. Rather than absorbing shipping on small orders, hide the free option until the cart clears your number. This pairs with the AOV mechanics in why a free-shipping threshold sometimes doesn’t lift order value — the Function enforces the rule, the messaging earns the behavior.
- Rename for clarity. Shoppers abandon when they can’t tell options apart. A precise label (“Standard — 3-5 business days” vs. “Express — next day”) removes hesitation at the exact moment of choice.
- Reorder to surface the profitable option. People frequently pick the first plausible option. If your economics favor ground over express, listing it first nudges the default without hiding anything.
- Restrict by region or customer. Hide methods you can’t service in a zone, or show wholesale-only rates to tagged B2B customers while ordinary shoppers never see them.
Why a Function is the right layer
Merchants often try to solve this with theme edits, an app that manipulates the cart, or by deleting shipping rates entirely. Each has a real limitation:
- Theme code doesn’t run at checkout. Shopify’s checkout is a controlled surface. Liquid and JS in your theme govern the storefront and cart, not the checkout page — so a “hide shipping” snippet there has nothing to hide.
- Deleting a rate is all-or-nothing. Removing a shipping rate in settings removes it for everyone. You lose the ability to show it conditionally, which is usually what you actually want.
- Cart-only scripts create mismatches. Anything that only changes the cart risks the classic Shopify problem where the cart and checkout disagree — the same failure mode behind a discount that doesn’t apply at checkout.
A delivery customization Function avoids all three because it operates inside the checkout where the options are actually rendered. This is the same reason the sibling problem — controlling payment options — is solved with a payment customization Function; see how to hide payment methods on Shopify for that side of checkout.
Implementation notes (the honest version)
- It’s a custom app + Function. A delivery customization is written as a Shopify Function and shipped inside an app. That means a developer builds and deploys it; it isn’t a theme setting you toggle. If you’re weighing the build model, Shopify app vs Shopify Function explains where the Function lives relative to the app around it.
- Plan considerations. Shopify Functions are broadly available across plans, but the checkout surfaces they can touch — and the number/complexity of customizations — are strongest on higher tiers, with the most flexibility on Shopify Plus. Confirm what your specific plan allows before scoping, rather than assuming; this is the one place to check the current Shopify docs for your account.
- Test across the real matrix. The rules are conditional, so testing has to be too: run carts above and below thresholds, with and without the trigger products, and against several delivery addresses and customer states. A rule that works for a $120 domestic cart can behave unexpectedly for a $40 international one.
- Watch interactions. If you also run carrier-calculated rates, multiple shipping profiles, or other customizations, make sure they compose the way you expect rather than fighting each other.
Common mistakes
- Trying to do it in the theme. The most common one — editing Liquid to hide a method that only exists at checkout, where the theme has no reach.
- Deleting the rate instead of hiding it conditionally. Kills the option for everyone and throws away the flexibility you were after.
- Renaming without clarity. A cleverer label that’s still ambiguous doesn’t help; the win is precision (“3-5 business days”), not branding.
- Skipping the test matrix. Shipping into one address and calling it done, then discovering the rule misfires for a region or a segment you didn’t try.
- Ignoring the margin question. Hiding express or offering free shipping changes your unit economics — decide the threshold and the rules against your actual shipping cost, not by feel.
When to build it
Build a delivery customization when your shipping needs are genuinely conditional and flat rates can’t express them: heavy or restricted products that must not ship express, free shipping that should be earned, regions or customer segments with different rules, or checkout confusion from unclear option labels. If you only need one flat set of rates for everyone, Shopify’s built-in shipping settings are enough — reach for a Function when the rule depends on what’s in the cart, where it’s going, or who’s buying.
This is exactly the kind of checkout logic our Custom Apps & Shopify Functions service builds — server-side, tested across the full cart-and-address matrix, and deployed cleanly into your store. If you’re not sure whether shipping is where your checkout is leaking, a quick free profit audit will point to it.
Want shipping options that follow your rules? Tell us the conditions — weight, product, region, customer or threshold — and we’ll build a delivery customization Function that hides, renames or reorders methods at checkout. See Custom Apps & Shopify Functions or get a free profit audit.