Skip to content

How to Troubleshoot Why a Shipping Service Is Not Available

What This Task Does

This task helps you figure out why a shipping service is missing, rejected, or not selectable for a shipment or storefront estimate.

Use it when a service does not appear in the order shipment block, when the storefront estimate returns no usable service, or when a service shows up in configuration but fails eligibility checks at runtime.

Before You Start

Make sure:

  • you can open the order shipment block in admin, or the storefront shipping estimate for the product or cart you are testing
  • you know the shipping destination or postal code being used
  • you know which product, shipment, or cart item is being evaluated
  • you understand whether the service should be filtered by product type, shipping class, customer restriction, size or weight, or calendar validation

This guide stays inside the packaged shipment and storefront lookup flows. It does not assume a standalone shipping-service settings page exists in the shared repo.

Steps

  1. Open the order and go to the Shipments block, or open the storefront shipping estimate for the product or cart item you are testing.
  2. Confirm the shipment context first:
    • postal code or shipping location
    • product type
    • shipping class
    • size or weight
    • customer restriction or exemption
    • pickup date or other delivery date, if calendar rules apply
  3. Check whether any shipping services are listed at all.
  4. If no service appears, compare the shipment context with the service restrictions that are usually applied in the shipping lookup flow.
  5. If one service appears but cannot be selected, check whether the row is being rejected as invalid or replaced by a different service in the same method group.
  6. If the wrong service wins, check whether another service for the same shipping method is marked as priority.
  7. If the service appears but the price is zero or unexpectedly missing, check whether free-shipping rules are suppressing the result or whether the shipping-price pipeline returned no usable price.
  8. If the shipment uses pickup or a scheduled date, confirm the selected date still satisfies the calendar validation rules.
  9. Re-test the order shipment or storefront estimate after you adjust the shipment context or supporting setup.

What Happens Next

If the service was blocked by postal code, product type, shipping class, customer restriction, size or weight, priority filtering, free-shipping suppression, or calendar validation, correcting that input should make the service available the next time the shipment is evaluated.

If the storefront estimate still returns no service, the same restriction set is likely being applied in the shared shipping lookup action and needs to be checked from the shipment context side rather than from a separate configuration screen.

Common Mistakes

  • checking only the shipping-service record and not the shipment context that is being evaluated
  • assuming a service should appear even when a priority service for the same method is taking precedence
  • forgetting that free-shipping rules can suppress a zero-price service
  • ignoring product-type, shipping-class, or customer restrictions
  • testing a pickup or scheduled shipment without confirming the calendar validation date
  • expecting a storefront lookup to behave differently from the order shipment block when they both use the same eligibility logic

Sources

  • packages/admin/src/Livewire/Admin/Order/Shipments/Block.php
  • packages/admin/resources/views/components/order/shipments/block.blade.php
  • packages/framework/src/Actions/ShippingService/GetAvailableShippingServices.php
  • packages/framework/src/Http/Controllers/Api/Storefront/ShippingController.php
  • packages/framework/src/Models/Traits/ShippingService/IsAvailableForCustomer.php
  • packages/framework/src/Models/Traits/ShippingService/IsAvailableForProductTypes.php
  • packages/framework/src/Models/Traits/ShippingService/IsAvailableForShippingPostalCode.php
  • packages/framework/src/Models/Traits/ShippingService/IsAvailableForOrderShipment.php
  • packages/framework/src/Models/Traits/ShippingService/IsAvailableForOrderItem.php
  • packages/framework/src/Models/Traits/ShippingService/IsAvailableForProductInventoryItem.php
  • packages/framework/src/Rules/CalendarRuleValidation.php