All segments

Advanced Shipping Rules, Shopify: A Step-by-Step Setup Guide

Advanced shipping rules, Shopify's delivery customizations and rate apps, once shipping profiles and zones can't express the condition you need.

  • Published
  • Reading time 10 min read
  • Author Nafiul Hasan
Advanced Shipping Rules, Shopify: A Step-by-Step Setup Guide. Diagram: where the reporting stops. RUN Advanced Shipping Rules, Shopify:A Step-by-Step Setup Guide REPORTEDNOT REPORTED pointerflow.com

Short answer

Advanced shipping rules, Shopify's own term for them once you're past zones and flat rates, are built with delivery customizations under Settings > Checkout > Customizations — small pieces of logic that hide, rename, reorder or move a shipping option based on cart contents, product tags, customer tags or order attributes. They can only act on rates that a shipping profile, zone or rate-calculation app has already returned; they cannot generate a new price from nothing.

Advanced shipping rules, Shopify’s own delivery customizations and rate-calculation apps, are what’s needed once a shipping profile’s zones and flat rates can’t express the condition you actually want — hide a rate for one product tag, rename an option for a VIP customer, reorder the list so the cheapest option isn’t the default. Basic profiles, zones and weight bands are covered in Shopify shipping rates; this article picks up where that setup stops working.

Advanced Shipping Rules, Shopify’s Delivery Customizations Explained

A shipping profile decides which rates exist. A delivery customization decides how the rates that already exist are shown to a specific buyer. That split is the whole mechanism behind advanced shipping rules in Shopify, and most of the confusion in setting them up comes from trying to do one job with the tool built for the other.

Delivery customizations live under Settings > Checkout > Customizations, built on Shopify’s Functions platform. A function attached there runs at checkout, reads the delivery groups already calculated for the cart — each one carrying the options a shipping profile, a zone, or a connected rate-calculation app produced — and returns instructions against that list: hide one option, rename its title, reorder the whole set, or move a specific option to a new position.

That’s the ceiling on what a customization can do. It can’t add a rate, change a price, or invent a delivery date. A shopify advanced shipping rules app built on top of this API is doing the same thing through a rules interface instead of code — reading conditions, returning the same four operations.

What You Need Before Building an Advanced Shipping Rule

Three things have to exist before a delivery customization can act on them. First, the condition data itself — a product tag, a customer tag, a cart subtotal, a destination field — has to already be attached somewhere the function can read it, which usually means tagging products and customers in the admin ahead of time rather than inventing a field that doesn’t exist yet.

Second, every rate the rule might need to hide, rename or reorder has to already be returned by a shipping profile, zone or app. A customization can’t act on an option that was never in the list; that constraint drives most of the setup decisions in this article.

Third, decide who’s building it. A store with developer resource can build a custom app with a Functions extension and read any field on the cart object. A store without one needs an app from the Shopify App Store that exposes conditions and operations through a rules interface — narrower, but no-code.

Step 1: Decide Whether the Rule Belongs in a Shipping Profile or a Delivery Customization

Ask one question before building anything: does the rule change a price, or does it change what’s displayed? A rule that says “charge $15 more for orders over 50lb shipping to a remote zip code” is a pricing decision — it belongs in a shipping profile’s zone rates or a rate-calculation app. A rule that says “don’t show the local-pickup option to customers outside a 20-mile radius” is a display decision — it belongs in a delivery customization.

Teams that skip this question tend to build a customization first because it’s the newer, more flexible-looking tool, then discover partway through that the option they need to surcharge doesn’t exist yet. Settling the pricing-versus-display question first avoids that rebuild.

Step 2: Map Every Condition to Real Cart, Customer or Product Data

Write the exact field each condition checks before opening the Customizations screen. “VIP customers get free shipping” isn’t a condition a function can evaluate — “customers with the tag vip-2026” is. The gap between a plain-English rule and a field the cart object actually carries is where most delivery customizations fail silently.

Product-level conditions usually check a tag or a metafield on a line item. Customer-level conditions check a tag on the customer object. Cart-level conditions check the subtotal, the item count, or a cart attribute set earlier in the buying flow. Destination conditions check the shipping address’s country, province or postal code. Pick the smallest set of fields that actually distinguishes the cases you need.

Step 3: Turn On Delivery Customizations in Settings > Checkout > Customizations

Open Settings > Checkout in the Shopify admin and find the Customizations section, which lists any active checkout, cart and delivery customizations on the store. Adding a delivery customization from here means either installing an app built specifically to wrap the delivery customization API in a rules interface, or connecting a custom app that includes a Shopify Functions extension of the delivery-customization type.

A custom app needs to be built and deployed through Shopify’s developer tooling before it shows up as an option to add here — this screen manages and activates customizations, it doesn’t write the logic for you. Confirm the extension type is delivery customization specifically; Shopify’s Functions platform also supports cart, discount, and payment customization types that won’t appear in this section.

Step 4: Write the Function Logic: Hide, Rename, Reorder or Move

Inside the function, the input is the cart’s delivery groups, each one holding the list of delivery options a shipping profile or app already calculated — a title, a handle, and a cost per option. The function’s job is to look at the condition data mapped in Step 2 and return one or more operations against that list, addressed by the option’s handle rather than its display title, since the title is exactly what a rename operation might change.

The four operations cover everything a delivery customization can do: hide removes an option from what the buyer sees, rename changes its displayed title without touching its price, reorder sets the full display order, and move repositions one specific option. Combining operations — hiding one option and renaming another in the same function — is normal and often how a single rule expresses two related conditions at once.

Step 5: Set the Execution Order When Multiple Customizations Are Active

The Customizations screen lists every active delivery customization in the order Shopify runs them, and that order is set by dragging entries in the list, not by anything inside each function’s own code. Each customization receives the delivery-option list as the previous one left it, so a second customization written to rename an option that a first customization already hid has nothing left to act on.

Stores running more than one delivery customization — one for tag-based hiding, another for a loyalty-tier rename, say — need the execution order documented somewhere outside the admin screen itself, because the order is easy to change by accident and hard to debug from the storefront alone once it’s wrong.

Step 6: Add a Rate-Calculation App Where the Rule Needs a New Price

Where the condition genuinely needs a different price — a surcharge, a discount, a rate that only exists for one shipping zone under one condition — a delivery customization on its own can’t deliver it. That work belongs to a rate-calculation app, which connects to a carrier or a custom rate table and returns a carrier-calculated option with the adjusted price already baked in.

Once that app-supplied rate is in the delivery group, a delivery customization can hide it from customers who don’t meet the condition, rename it to something the buyer recognises, or reorder it above the standard options — but the price itself came from the rate-calculation app, not from the customization layer sitting on top of it.

Step 7: Test Every Condition Path With a Real Checkout

Build a real cart for every branch of every condition: the tagged product and the untagged one, the customer with the loyalty tag and one without it, a cart just under and just over a subtotal threshold, and an address inside and outside any zone-based condition. Run an actual checkout for each combination rather than only reading the function’s code, since a condition can be logically correct and still check the wrong field name against a live cart.

Pay particular attention to combinations across more than one active customization — a product-tag rule and a customer-tag rule interacting on the same cart is the scenario most likely to produce a result nobody predicted from reading either rule in isolation.

The Step Most Teams Get Wrong: a Delivery Customization Can’t Invent a Rate

The single most common mistake in building advanced shipping rules in Shopify is treating the delivery customization as if it could create a price. It can’t. It operates strictly on delivery options a shipping profile, a zone, or a connected rate-calculation app already returned to that cart — hiding, renaming, reordering or moving them, never pricing them.

Teams that build a customization to “give VIP customers a $5 shipping rate” find, after testing, that the $5 rate simply doesn’t appear for anyone, because no shipping profile or app was ever configured to produce it. The fix isn’t more logic inside the customization — it’s a new zone rate or a rate-calculation app rule that returns the $5 option in the first place, with the customization then doing the much smaller job of showing it only to the customers who qualify.

How Do You Verify an Advanced Shipping Rule Is Actually Working?

Verification means confirming the rate list a real customer sees, not just confirming the function deployed without an error. A customization that saves cleanly and shows no errors in the admin can still evaluate a condition against the wrong field, or run in an order that undoes what it was meant to do.

Use a draft order or a genuine test checkout for each condition path identified in Step 7, and read the actual delivery options presented at checkout — their titles, their order, and which ones are missing — against what the rule was supposed to produce. A customization is verified when every condition path has been checked this way, not when it has been read once and looked correct.

Who Should Build Advanced Shipping Rules In-House vs With an App?

A store with in-house developer resource, or an ops-automation partner comfortable in Shopify’s Functions platform, gets the full range of conditions the cart object exposes and can combine operations in ways a rules-interface app won’t anticipate. That flexibility costs build and maintenance time — a function is code, and code needs testing on every future edit to the store’s tagging or product structure.

A store without that resource is better served by an app built specifically around the delivery customization API, accepting a narrower set of pre-built conditions in exchange for a UI a non-developer can maintain. This isn’t the right investment for a store running one or two static shipping rules that a zone and a rate can already express — that’s still a shipping-profile problem, not an advanced-rules one.

Advanced shipping rules in Shopify are an ops-automation problem before they’re a checkout problem: the condition logic, the tagging discipline it depends on, and the testing across every path are the same kind of manual-step-turned-repeatable-process that ops automation exists to build and maintain, alongside the shipping software and order management it usually connects to.

Sources

No external figures are quoted in this article; it’s written from Shopify’s documented delivery customization mechanism and how shipping profiles, zones and rate-calculation apps are configured and operated.

Frequently asked

What's the difference between a shipping profile rule and a delivery customization?

A shipping profile rule decides which rates exist at all — the zones, the flat or weight-based prices, which products they apply to. A delivery customization runs after those rates are calculated and decides how the existing list is presented: which options are hidden, renamed, reordered or moved. One creates prices; the other arranges what's already there.

Can advanced shipping rules in Shopify hide a rate for just one product in a mixed cart?

Yes, if the delivery customization's condition checks the cart's line items for that specific product or its tag rather than the whole cart. The function evaluates the full cart contents, so it can hide an option only when the triggering product is present, leaving the same option visible in carts that don't contain it.

Does a Shopify advanced shipping rules app replace the need to build a custom function?

For merchants without in-house developer resource, yes — an app built on top of the delivery customization API gives a rules interface (conditions and actions) without writing code. The trade-off is that the app's rule builder only exposes the conditions and operations its developer chose to support, where a custom function can read any field on the cart.

Can a delivery customization create a brand-new shipping rate?

No. A delivery customization can only hide, rename, reorder or move a delivery option that a shipping profile, zone or rate-calculation app has already returned to the cart. If the rate you want doesn't exist in that list, the fix is a new zone rate or a rate-calculation app, not a change to the customization.

Do advanced shipping rules apply during checkout, or only on the cart page?

Delivery customizations run at checkout, at the point Shopify has already calculated the delivery options for the buyer's address and cart. They don't change what a cart page or product page shows before checkout starts — for messaging earlier in the funnel, that's a separate app or theme customization, not the delivery customization API.

Can I combine a product-tag condition with a customer-tag condition in one rule?

Yes — a delivery customization function can evaluate any combination of fields available on the cart object in one piece of logic, so a rule can require a specific product tag and a specific customer tag before it hides or renames an option. Complexity here is a coding decision, not a platform limit.

What happens if two active delivery customizations try to act on the same rate?

They run in the order set on the Customizations screen, and each sees the list as the previous one left it. If the first customization hides a rate, the second one has nothing left to rename or reorder for that option — so order matters as much as the individual rule's logic.

Does building advanced shipping rules require Shopify Plus?

Plan eligibility for building or installing Shopify Functions extensions has changed over time and varies by feature, so this is worth checking directly against Shopify's current plan comparison page before assuming a store qualifies, rather than working from an assumption that could be out of date.

Can advanced shipping rules apply a surcharge for shipping to a remote postal code?

Not through a delivery customization alone, since it can't set a price. A remote-zone surcharge has to come from a rate — either a zone in the shipping profile priced for that region, or a rate-calculation app that returns a higher carrier-calculated rate for the postal codes in question — with the customization then free to rename or reorder it.

Will an advanced shipping rule still work if the customer uses an accelerated checkout like Shop Pay?

Delivery customizations apply within Shopify's own checkout regardless of the entry point, including accelerated flows, because they operate on the same delivery-group data structure. Behaviour inside a third-party wallet's own express-checkout surface, where one exists outside Shopify's checkout, is worth confirming separately against that provider's documentation.

Can a delivery customization change the estimated delivery date shown for a rate?

The operations available to a delivery customization are hiding, renaming, reordering and moving a delivery option — the estimated delivery date itself comes from the rate's source, typically a carrier-calculated app or Shopify Shipping, and isn't a field a delivery customization rewrites directly.

How many delivery customizations can run on one store at once?

Shopify allows more than one active delivery customization on a store, executed in the order set on the Customizations screen. Each additional customization is another piece of logic to test against every condition path, so the practical limit is usually how many rules a team can verify and maintain, not a hard platform cap.

Next step

Is this your ops automation problem, or a symptom of another one?

Bring your numbers — the churn split, the decline rate, whatever your flows are earning — and we will tell you which of them is the expensive one.

Book a call →