Shipping Rates
Intro
Shipping Rates decides what shipping costs your customer at checkout. A profile holds the pricing logic; profile rules decide which profile answers each checkout; the Rate Tester shows the result before any customer sees it.
This is the customer-facing half of shipping money — the carrier's price to you is Rate Shopper and Labels & rates.
What is inside
| Page | What it does |
|---|---|
| Profiles | Create, duplicate, activate, and open rate profiles |
| Profile Rules | Which profile applies — default, schedule, or condition; first match wins |
| Rate Tester | Simulate a cart and destination against a profile — Shopify's shipping list, the checkout Shipping Summary block (per-group breakdown, method picker, combined total) and the calculation pipeline. Load from an order replays a real order: its items, ship-to address, discount and customer tags fill the form, and the result shows what the customer actually paid next to today's rates |
| Settings | The active profile's behaviour switches — Add to Existing Order, Live Sale, Checkout Behavior, Checkout Shipping Summary (see Profile settings) |
| Shopify Carrier Service | Register the StoresBoost carrier service with Shopify — Activate / Deactivate and the Callback URL (its own settings page, linked from Profiles) |
How a checkout is priced
- Shopify asks StoresBoost for rates (via the carrier service you activate in Settings).
- Profile Rules pick the profile.
- The profile's Shipping Zones decide where the order is going.
- Product Groups decide what is in the cart and how each group is priced.
- Product Triggers let special products override everything (free shipping, exclude, surcharge).
- Combination Rules merge the group prices into the list the customer sees.
Build a profile
- Open Apps → Shipping Rates → Profiles → Create Profile. Choose Blank profile or start from a template, and give it a Profile Name.
- On the profile dashboard, work through the four cards:
| Card | What to define |
|---|---|
| Shipping Zones | Match on an address part (country, state, postal code, …) with a Priority; mark one Default zone |
| Product Groups | Which products belong together and the strategy: Live Carrier Rates, Flat Rate, Always Free, Metafield Price, or Conditional; tiers by weight / value; a Checkout summary icon and subtitle; optional fold into another group (below) |
| Product Triggers | Product-level overrides: Free All Shipping, Free Group Shipping, Exclude From Rates, Skip Add To Existing, Append Charge To All Rates |
| Combination Rules | How group prices merge: Sum Prices, Use Primary, Highest Wins, Append Free |
- Open Profile Rules and add a rule pointing at the profile — Default (catch-all), Schedule (date/time window), or Condition (cart total before/after discount, discount amount, item or product count, destination state / country / city / postal code, customer tag). Rules run by priority; first match wins.
- Click Test This Profile and try a few carts — presets for Florida, New York, and California are built in, or pick a customer address. Get Rules Description prints the whole profile as a plain-English walkthrough (zones, groups, every pricing row, triggers, combination and fold rules, active settings such as Live Sale) that you can copy as Markdown and hand to whoever checks the pricing.
- Activate the profile.
- Open Shopify Carrier Service and make sure it is Activated for the store. Place a real test checkout and compare with the tester.
The profile dashboard also carries the summary switches as cards (Checkout Shipping Summary, Show rate picker in summary, Summary picks as Shopify's total, Write item rates on the order, Apply item shipping methods, Rebuild missing checkout summaries) with their dependency chain: the picker before driving the total; the summary before writing item rates, before applying item methods, before rebuilding.
Pricing rows that depend on the rest of the cart
A group's pricing row (tier) can be limited with Only when cart also has — one or more other groups of the profile. The row is used only if at least one of those groups also has items in the cart; otherwise the next row applies. Example: free Ground for Supplies only when a Drop Shipped item is in the order. The tier table shows Only with X or Y in cart under the range, and the rules walkthrough says so.
Folding a group into another
In the group form, Treat as another group when… picks a target group, and two triggers decide when the items move there:
- …these groups are in the cart — companions present: e.g. Include With Livestock becomes part of Livestock whenever livestock is in the cart.
- …or none of these groups is in the cart — companions absent: e.g. Include With Livestock without any livestock is just Aquarium Supplies. If the shopper's address has an open order the items could join via Add to Existing, the group stays as it is and offers that option.
The group page shows the fold as Exception: … and the tester's pipeline names the rule that fired.
Profile settings
Each profile has its own Settings page:
| Section | Options |
|---|---|
| Add to Existing Order | Let a returning customer add items to an open order at checkout — enable, waived group, qualifying product types, locations you don't handle, ignore Shopify Collective orders, replace regular rates, option label and description |
| Live Sale | A switch for sale days: the chosen groups lose every free option while it is on — groups affected, rate name suffix |
| Carrier service names | The checkout name for each FedEx, UPS, USPS, DHL, or custom service code used on the profile. Add any other code the same way. Blank keeps the built-in name. A pricing row's Shown to customer as still wins for that row |
| Checkout Behavior | Apply discounts to free-shipping thresholds; fall back to Shopify backup rates on error |
| Checkout Shipping Summary | Show a shipping summary at checkout; show the price breakdown under each rate; show a rate picker in the summary; use summary picks as Shopify's shipping total; write item rates on the order; apply item shipping methods from the breakdown; rebuild missing checkout summaries |
Free-shipping thresholds, zone pricing, and carrier markup live on groups, zones, and tiers — not on this page.
Add to Existing Order and repeat orders
The option is offered when the checkout address has an open order in StoresBoost. Orders are imported the moment Shopify sends them, and the checkout re-checks the address as soon as a new order lands, so a customer who places a second order a minute after the first sees the option. A shipment that chose Add to Existing Order but did not merge into another box within 10 minutes (the earlier box already had a label, a payment hold, or merge rules kept them apart) is tagged Add to existing — unmatched and gets a warning entry on its timeline (not in the Notes card, which is reserved for what your team writes), so it is reviewed before it ships on its own with $0 shipping.
Live Sale: no free shipping on sale days
Turn on No free shipping during the sale before a live sale and off afterwards (the Settings card header shows Sale mode ON / Off). While it is on, the groups listed under Groups affected (by default the livestock group) skip their free rows and any free services, and a paid row applies at any cart total — when no paid row covers the total, the paid row just below the free threshold is used, so a $350 livestock cart pays the same as a $150 one. The affected rates carry the Rate name suffix, by default (No Free Shipping During Sale), so shoppers see why the usual free option is missing. Everything else is untouched: other groups keep their thresholds, combination rules and Add to Existing behave as usual, and free-shipping trigger products (a "Free Livestock Shipping" item, a "Free Shipping Sale" item) still make shipping free. No rules or tiers are edited, so switching off restores the normal pricing exactly. The change reaches checkout within about a minute of saving; the Rate Tester and the rules walkthrough both show when sale mode is on.
How the summary picker updates Shopify's shipping total
With Use summary picks as Shopify's shipping total on, tapping a rate in the checkout Shipping Summary saves the choice on the cart and Shopify re-requests rates, then replaces its shipping method with the picked combination. Shopify itself takes about 2–3 seconds for that round-trip; the block shows Updating the shipping total above… meanwhile. The pick is always written ahead of the block's other writes (rate breakdown note, delivery date), so it is never queued behind them. If a checkout refuses cart changes (draft-order checkouts and some wallet flows), the block says so immediately and Shopify's own shipping section remains the source of truth; every applied or refused pick is logged for the store so support can see which checkouts are affected.
While both Show rate picker in summary and Use summary picks as Shopify's shipping total are on, Shopify's own shipping list shows a single default combination (the Add to Existing option when it is offered, otherwise the first regular combination) until the shopper picks per-group services in the summary — the summary is the picker, so the list does not compete with it. Carts where the summary block does not render (one item, one group, no delivery calendar) keep the full list. The tester's pipeline shows this as collapsed_to_default. When the buyer chooses a pickup or pickup-point delivery option, the summary block renders nothing.
Item shipping methods
When Apply item shipping methods from the breakdown is on, each line item on the resulting shipment carries the shipping method it was priced with. Shipments then show both the order's shipping method and per-item methods — useful when a cart mixes groups (for example live goods on overnight, supplies on ground). Merge settings decide which method a combined shipment keeps — see Shipment settings.
Rebuild missing checkout summaries
Not every order arrives with a checkout summary: draft orders, orders placed while the summary block was off, wallet checkouts that refused cart writes, imports. Those shipments show only the order-level method and no per-item methods. With Rebuild missing checkout summaries on (it requires Apply item shipping methods to be on), StoresBoost reconstructs the summary when the shipment is created: it runs the order's items and address through the active profile, picks the option that matches the shipping line the customer actually paid for — by name first, then by service code — and stamps the per-item methods from it. The rebuilt summary is marked as reconstructed and is never written over a real checkout summary.
If no option matches the paid shipping line (an unknown method, or a $0 line on an order with no shipping line at all), nothing is stamped rather than guessing. Add to an existing order options are only chosen when the customer's shipping line was that option. Support can also run the rebuild for a single order or for a date range on request. Matching order: exact rate name → name ignoring a suffix such as (No Free Shipping During Sale) → service code → code + price → a unique paid price. The rebuilt order carries a reconstructed marker next to its summary.
Watching checkout in production
Integration → Webhook Status → Carriers → Checkout rate requests lists every rate request Shopify made to StoresBoost for the last 2 days: what Shopify sent (cart, address), what StoresBoost answered, and how fast. Tiles show Last 24 hours, Got rates, Needs attention and Speed; each request is chipped Rates returned, No rates (a profile matched but nothing applied to this cart and address), Error (the fallback response was sent), No profile, Timed out (Shopify gave up waiting — it allows about 10 seconds) or Calculating. Filter to Needs attention when a customer reports missing options; Answered too late means the customer most likely saw the store's backup rates even though rates were eventually returned. Answers reused from a moment ago are marked as cached.
Carrier refusals during a live-carrier lookup (a ZIP not in the selected state, a US territory sent as a state, an APO / FPO address, rejected credentials, over-weight) are spelled out in plain English in the tester's pipeline and in the logs — see Carriers → When a carrier refuses to quote.
Tips
- Always keep a Default profile rule and a Default zone so checkout never shows no shipping options.
- Turn on Fall back to Shopify backup rates on error until the profile has run cleanly for a while, and watch Checkout rate requests for No rates / Error / Timed out.
- The AI assistant can read, explain and price a profile, and build or change one — it clones the live profile, edits and tests the clone, and asks for confirmation before activating anything.
- Test the edge cases: PO boxes, remote regions, heavy carts, discount codes that cross a free-shipping threshold.
- Use Duplicate on a working profile before making large changes.
Who can use it
Included on Enterprise. Permissions View shipping rates / Manage shipping rates.
Related
- Rate Shopper — your carrier cost side
- Delivery Calendar — delivery dates alongside rates
- Integration → Carriers — live carrier rates need a connected account