Why do my shipping rates come out different when products from two shipping profiles end up in the same cart?
When a cart pulls products from more than one shipping profile, Shopify's rules for combining rates aren't obvious — and small setup mismatches make checkout shipping look random.
What's going on
A merchant sets up more than one shipping profile — say, a default profile for small accessories and a custom profile for heavy furniture, or separate profiles tied to different fulfillment locations — and starts noticing that the shipping rate a customer sees at checkout doesn't behave consistently. Sometimes it looks like rates are stacking oddly, sometimes a rate seems to vanish and get replaced by a generic "Shipping" line, and sometimes the same two products in different combinations produce shipping totals that don't obviously add up.
This isn't random. Whenever an order contains products assigned to different shipping profiles, or products that ship from different locations within a profile, Shopify has to combine each profile/location's own rate into a single number to show the customer. How it does that combination depends on details merchants rarely think about when they first set profiles up: whether the rate names match word-for-word across profiles, whether the profiles use price-based or weight-based rates (which are calculated completely differently), and how location groups and fulfillment priority are configured.
Get any one of those details out of alignment between profiles and the checkout math will look inconsistent even though Shopify is technically following its own combination rules the whole time.
Why it happens
Shopify only merges two rates into one combined, correctly-labeled line item when their customer-facing names are identical across the profiles involved. If a merchant named a rate "Standard" in one profile and "Standard Shipping" in another — an easy mistake when profiles were set up at different times or by different people — Shopify can't tell they're meant to be the same option, so it falls back to just showing the cheapest one under a generic label, silently dropping the rest.
Price-based and weight-based rates are calculated on entirely different bases: price-based looks at total cart value, weight-based sums product weights (plus a default package weight) into a bracket. When one profile in an order uses price-based rates and another uses weight-based, the combined total is being produced by two unrelated formulas at once, which is exactly the kind of thing that looks like inconsistency from the storefront but is actually two correct calculations added together.
Multiple shipping locations or location groups add another layer: fulfillment priority decides which location(s) actually serve an order, and only a single-location-group flat rate gets simplified down to one flat charge regardless of how many locations are inside it. Weight-based and carrier-calculated rates don't get that same simplification, so orders spanning locations combine per-location rates every time, and the more profiles/locations a catalog uses, the more surface area there is for a name or rate-type mismatch to slip in.
5 ways to fix it
Give matching rates the exact same name across every profile
In each shipping profile, open the rate for the zone in question and make sure the customer-facing name is byte-for-byte identical (e.g. always "Standard Shipping", not "Standard" in one profile and "Standard Shipping" in another). Shopify only adds rates together into one visible line when the names match; if they differ, it silently drops down to showing just the cheapest rate under a generic "Shipping" label, which is usually the source of the inconsistency merchants notice. This costs nothing and is the first thing to check.
Keep rate type (price-based vs weight-based) consistent across profiles
Weight-based rates sum each product's weight (plus your store's default package weight, set under Settings > Shipping and delivery) before applying a bracket, while price-based rates apply to the cart's total value. Mixing the two rate types across profiles for the same shipping zone means the combined total is computed two different ways depending on what else is in the cart, which reads as "inconsistent." Standardize on one rate type per zone across all profiles where possible.
Reduce the number of profiles and location groups a typical order can span
Every extra shipping profile or fulfillment location a cart touches is another rate that has to be combined, and combination logic gets less predictable the more profiles are in play. Where products don't truly need separate shipping logic (different carriers, weights, or origins), move them into the same profile and location group. A single location group using flat rates gets a genuine simplification: Shopify charges one flat rate for the whole order even if multiple locations in that group would fulfill it. That exception does not extend to weight-based or carrier-calculated rates, which still combine per-location.
Use Shopify's built-in rate testing tool before assuming it's a bug
Under Settings > Shipping and delivery, Shopify provides a way to test rates for a hypothetical cart and address, showing exactly which profile/location combination is being used and what each contributes to the total. Run a few real product combinations from your catalog through this before concluding rates are wrong — much of what looks like an inconsistency is actually correct combination behavior that isn't obvious from the storefront alone. Shopify's Help Center "Troubleshooting and testing shipping rates" article walks through this.
For logic Shopify's native combination rules can't express, use Delivery Customization
If you need something more precise than name-matching and rate-type alignment allows — for example, capping total shipping once a cart crosses a weight threshold regardless of profile, or hiding a rate under specific conditions — Shopify Functions' Delivery Customization API lets you intercept and adjust checkout delivery options with custom logic. This requires development work (a Shopify Function), so it's worth exhausting the profile-configuration fixes above first since they solve the majority of reported cases without any code.
Bottom line
Most "inconsistent rate" reports trace back to two configuration details — mismatched rate names and mismatched rate types (price vs weight) — across profiles that Shopify is combining exactly as designed, just not as the merchant expected. Align those first and re-test with Shopify's own rate-testing tool before assuming anything is broken or reaching for an app; this is a store-configuration problem, not one BesPoP's apps are built to solve.
Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.