Features
Storefront
Shipping

Shipping

Shipping rates are fetched in real time from FedEx and UPS during checkout.

Where to configure

Admin: tenant configuration (Edit Source) — enter carrier credentials:

FieldPurpose
fedex_accountFedEx account number
fedex_api_keyFedEx API key (encrypted)
ups_accountUPS account number
ups_api_keyUPS API key (encrypted)
ship_from_*Origin address (name, address1, city, state, zip, country)
free_shipping_thresholdCart total above which shipping is free

API keys are encrypted at rest via CredentialEncryption.

Rate fetching

At checkout, after the customer enters their shipping address:

  1. Frontend calls POST /checkout/shipping-rates with cart ID and address
  2. Backend:
    • Loads cart to calculate total weight (sum of variant weights × quantities)
    • Instantiates FedExProvider and UPSProvider if credentials exist
    • Calls both in parallel, merges the results
    • Sorts by price (cheapest first)
  3. Returns rates — customer picks one

Supported services

FedEx:

  • Ground / Home Delivery
  • Express Saver
  • 2-Day
  • Standard Overnight
  • Priority Overnight

UPS:

  • Ground
  • 3-Day Select
  • 2nd Day Air
  • Next Day Air Saver
  • Next Day Air
  • Next Day Air Early

Rate response

Each rate returns:

  • carrier ("FedEx" or "UPS")
  • service (human-readable name)
  • service_code (provider-specific code)
  • price in dollars
  • estimated_delivery date
  • transit_days

Free shipping

If free_shipping_threshold is set and cart subtotal ≥ threshold, the checkout displays "Free shipping applied" and shipping cost is $0.

USPS + automated tracking (planned)

See the shipping integration planning notes for upcoming support for USPS rates, automated label generation, and real-time tracking webhooks.

Related features