Apps

Shipping Rates

Control the shipping prices customers see at checkout — profiles built from zones, product groups, triggers, and combination rules, with profile rules and a tester.

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

PageWhat it does
ProfilesCreate, duplicate, activate, and open rate profiles
Profile RulesWhich profile applies — default, schedule, or condition; first match wins
Rate TesterSimulate 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
SettingsThe active profile's behaviour switches — Add to Existing Order, Live Sale, Checkout Behavior, Checkout Shipping Summary (see Profile settings)
Shopify Carrier ServiceRegister the StoresBoost carrier service with Shopify — Activate / Deactivate and the Callback URL (its own settings page, linked from Profiles)

How a checkout is priced

  1. Shopify asks StoresBoost for rates (via the carrier service you activate in Settings).
  2. Profile Rules pick the profile.
  3. The profile's Shipping Zones decide where the order is going.
  4. Product Groups decide what is in the cart and how each group is priced.
  5. Product Triggers let special products override everything (free shipping, exclude, surcharge).
  6. Combination Rules merge the group prices into the list the customer sees.

Build a profile

  1. Open Apps → Shipping Rates → Profiles → Create Profile. Choose Blank profile or start from a template, and give it a Profile Name.
  2. On the profile dashboard, work through the four cards:
CardWhat to define
Shipping ZonesMatch on an address part (country, state, postal code, …) with a Priority; mark one Default zone
Product GroupsWhich 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 TriggersProduct-level overrides: Free All Shipping, Free Group Shipping, Exclude From Rates, Skip Add To Existing, Append Charge To All Rates
Combination RulesHow group prices merge: Sum Prices, Use Primary, Highest Wins, Append Free
  1. 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.
  2. 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.
  3. Activate the profile.
  4. 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:

SectionOptions
Add to Existing OrderLet 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 SaleA switch for sale days: the chosen groups lose every free option while it is on — groups affected, rate name suffix
Carrier service namesThe 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 BehaviorApply discounts to free-shipping thresholds; fall back to Shopify backup rates on error
Checkout Shipping SummaryShow 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.

Automation and merge rules that use Shipping Group (checkout) or Checkout rate fields only see orders that have a summary. Turn the rebuild on, or write those rules with product type / metafield rows instead, so wallet checkouts, drafts and POS orders behave the same as regular ones.

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.