A merchandiser reinstalls the live-rate shipping app before a campaign weekend. The app page says installed. Checkout still opens. The shipping step shows no carrier-calculated options, only a leftover flat rate or an empty list.
Shopify posted the reason on 26 June 2026: Admin API version 2026-10 registers a new carrier service and leaves the General shipping profile alone. The stable version landed on 1 October 2026. The next job is a sheet: every live-rate app, every profile and zone you sell into, and a test checkout that proves the rate appears.
Introduction
This article teaches that inventory after the 2026-10 Admin API change. Confirming UK VAT on EU orders after the 29 September tax product move belongs in Shopify Tax Checklist: Confirm UK VAT on EU Orders Over £135. Peak gates that include fulfilment and support belong in A Shopify Black Friday Readiness Checklist for Brands That Already Scale. This piece stays on carrier services: attach the rate, then prove it at checkout.
Merchant and developer threads this month keep returning to the same cluster. A store installs or reinstalls a shipping app, the callback looks healthy, and checkout has no live rates. A second group is asking whether carrierServiceCreate itself is going away. A third reports duplicate named rates or an app-controlled profile that never gets asked for a quote when a flat rate already sits on General. The shared work is a verification owner after an API create, not a new theme section.
Treat the walk as a settings checklist. Confirm plan eligibility and vendor API version before you rebuild rate logic.
| Checklist row | What you record | Pass criterion | Owner |
|---|---|---|---|
| Live-rate shipping app | App name, vendor contact, Admin API version, create path | Every app that can return a checkout rate is named | Ops / tech |
| Plan eligibility | Grow add-on, Advanced, Plus, or built-in Shopify Shipping only | The plan can show third-party calculated rates if you need them | Commerce |
| Profile and zone attach | General plus extra profiles, each zone, carrier-or-app rate present | Every zone that should show a live rate has the service attached | Ops |
| Test checkout | One cart per zone, plus a product that lives only in an extra profile | The expected carrier or app line appears on the shipping step | Commerce |
| Backup and name clash | Backup rate, leftover flat rate with the same title | Backup shows only on live-rate failure; titles do not hide the app line | Ops / tech |
| Vendor follow-up | Whether 2026-10 create now writes the profile, or staff must attach it | Written path for the next install or reinstall | Tech / vendor |
What changed in Admin API 2026-10
Shopify's developer changelog is explicit. Starting with GraphQL Admin API version 2026-10, creating a carrier service no longer automatically adds it to the shop's General shipping profile.
The breaking change hits both create paths that apps have used for years: GraphQL carrierServiceCreate, and REST POST /admin/api/{version}/carrier_services.json. Earlier versions added an active API carrier service to eligible zones on General as soon as create succeeded. On 2026-10 and later, create only registers the service. Shopify no longer adds that service to General or to any of its shipping zones by default.
The 2026-10 release notes repeat the same shipping line: configure carrier-calculated rates in a shipping profile before you expect checkout visibility. Older supported API versions keep the automatic-add behaviour until those versions are sunset. That is why a vendor still on 2026-07 can look fine on one shop and fail on a fresh install that already calls 2026-10.
Carrier service attach after 2026-10
Shopify's recommended path after create is to send the merchant into admin to add the carrier-calculated rate on the right profile. The alternative is that the app writes the rate through the shipping profile APIs. Either path needs a named owner. An install that only stores a callback URL will pass the app page and still fail the shipping step.
Who is affected
Stores that install, reinstall, or migrate an app that shows live carrier rates are in scope when that app now calls Admin API 2026-10. A first-time install on a new shop, a reinstall after a token rotation, and a vendor migration that recreates the carrier service are the three moments that quietly mint a service with no zone attach.
Existing checkouts that already show live rates are outside the changelog's create story. Still re-test after any of those three moments, because the failure mode is silence: checkout loads, the shipping step is empty, and Settings still lists the app.
Plan eligibility sits on a different row. Shopify Help says third-party carrier-calculated shipping is included on Advanced and Plus. Grow stores can add it for an extra monthly fee or by switching to annual billing. Other plans do not include that product. Built-in Shopify Shipping carrier rates on supported fulfilment locations can still appear on all plans. If the store cannot buy third-party calculated rates, the 2026-10 attach change is the wrong diagnosis. Put the plan decision on Choosing the Right Shopify Plan and come back to this sheet once the plan can show the rate.
App-owned delivery profiles keep using the delivery profile API, including on shops that later opt into market-driven shipping. Merchant-owned profiles are the ones the changelog now leaves empty after create. Write which kind you run before you ask a vendor to "just enable rates".
Scrumbles is a health and wellness subscription brand where fulfilment cost already varied by English postcode. We implemented Shopify delivery functions so checkout could allocate those zones in the stack the team owns. That pattern is useful when you control the rate table. A third-party carrier callback is useful when the quote has to come from a 3PL or a carrier account you do not want to copy into Functions. Both still need a visible shipping option at checkout after an app change.
List each live-rate shipping app
Start with the apps that can return a checkout rate, not with the theme footer. Open Settings, Apps, and write one row per install that calculates shipping: the carrier account connector, the 3PL live-rate app, the subscription shipper that injects a rate, and any custom app that registered a callback.
For each row record the vendor contact, the Admin API version they ship today, and whether create still writes the profile or only registers the service. Ask them to say which of Shopify's two post-create paths they use: a merchant prompt in admin, or a programmatic attach through the shipping profile APIs. If they cannot name the path, assume staff must attach the rate after every install.
Add the callback URL status and the last successful rate request if the vendor can show it. A healthy callback with no profile attach is the 2026-10 failure mode. A dead callback is a different ticket.
Include which products the app is supposed to cover. A bulky-item profile, a subscription box profile, and the General catalogue can each miss the attach on their own. YuMOVE moved more than 300,000 subscription customers while support tools and storefront performance still had to hold. A shipping app swap in the middle of a subscription migration is exactly when a silent empty shipping step shows up as "checkout is broken" rather than "the profile was never written".
Confirm the carrier-calculated rate on every profile and zone
Open Settings, then Shipping and delivery. Work profile by profile. Shopify Help still documents shipping profiles as the way to give specific products and locations their own rules, while shipping options by market roll out separately and migrate existing rates when a shop is upgraded.
On each profile, open every zone that should show a live rate. Confirm a rate set to use a carrier or app to calculate rates, and that the selected service matches the app on your sheet. A zone with only a flat "Standard" leftover from last year will hide the problem until a buyer in that country reaches checkout.
Do the extra profiles, not only General. The changelog's old behaviour added the new service to eligible zones on General. Extra profiles never received that gift. A mattress, a hazardous SKU, or a gift-box bundle that lives on its own profile can stay blank after a "successful" install even on older API versions.
Screenshot the profile list before you change anything, so you can compare after a vendor patch. Markets that already moved to shipping options by market need the same confirm on the market's shipping options. Recording duties, currency, and catalog gaps on those markets still belongs in Shopify Markets Black Friday Traps: Duties, Currency, and Catalog Gaps. This row only asks whether the carrier or app rate is attached.
Place a test checkout
Attach is a settings claim. Checkout is the proof. Place a test order to every zone on the sheet, using a product from General and a product that lives only in an extra profile. Use a real destination postcode, because some callbacks ignore a half-filled address.
Write what appears on the shipping step: the carrier or app title, the price, and whether a backup rate also showed. Shopify Help says a backup shipping rate displays when calculated rates fail and no other eligible rate is available. Flat rates on the same destination always display when they are eligible, so a leftover flat option can sit next to the live rate or, in older behaviour, hide a duplicate name. Developer reports this month describe both rates showing when titles match. Record the titles you actually see so you can tell a missing attach from a name clash.
If the shipping step is empty while add-to-cart and the information step still look healthy, stay on this sheet until the attach is proven. The diagnostic for payment and step failures after rates appear belongs in How to Fix Shopify Checkout Abandonment When Your Funnel Looks Healthy. Shop Pay and agentic checkout handoffs are a separate inventory in Shopify Shop Pay Delegated Payments: What Merchants Should Inventory.
Keep the test-order screenshots with the vendor API version. That packet is what you send when the app page says installed and checkout still has no live rate.
What this does not change
The Carrier Service callback remains the documented way for an app to return live rates once the service is active and attached. Shopify's 26 June note covers the auto-add into General. Reading that note as a sunset of the whole callback flow will send you into a Functions rebuild you did not need this week.
Market-driven shipping is a separate Markets programme. Shopify said merchant-owned shipping configuration is moving onto Markets, with a feature preview from 1 July 2026, merchant rollout from 1 October 2026, and a stated default of 1 July 2027. App-owned delivery profiles keep the delivery profile API. Put that upgrade on the Markets sheet. Do not fold it into this attach check.
Delivery option generator Functions remain a valid way to own rate logic in your stack, which is the path we took for postcode zones on Scrumbles. Choose Functions when you want the quote inside a Function you maintain. Choose a carrier service when the quote has to come from a carrier or 3PL callback. The 2026-10 change does not force that choice.
Conclusion
You can now list each live-rate shipping app, confirm the carrier-calculated rate on every profile and zone you sell into, and prove the line on a test checkout after Admin API 2026-10. Write the vendor path for the next install so the next reinstall does not fail in silence.
If a 3PL app, a Markets option, and a merchant-owned profile all write to the same shipping step, or the vendor cannot say whether 2026-10 create attaches the rate, book a shipping and integrations review or a stack assessment. A missing carrier-calculated line stays missing after a theme edit, so finish the sheet, the attach, and the test order this week.



