Skip to content

Fulfillment & Shipping

Fulfillment & Shipping is the domain that turns shipping configuration into real shopper choices, order shipment selection, delivery scheduling, fulfillment coordination, and final shipped records.

This first pass treats the domain as two connected halves:

  • shipping configuration that decides which methods and services are available
  • fulfillment planning and execution that turns order items into confirmed and fulfilled deliveries

Status

  • [x] Domain overview written
  • [x] Subdomains reviewed
  • [x] Technical node pages linked
  • [x] End-user concept pages linked
  • [x] Task guides linked

Responsibility

This domain is responsible for:

  • defining reusable shipping methods, services, zones, classes, and geographic constraints
  • calculating which shipping services are available for a shipment, product offer, cart, or order item
  • validating pickup and delivery dates through calendar rules
  • grouping order items into shipments and calculating order shipping lines
  • planning, confirming, and fulfilling fulfillment requests
  • producing delivery documents, pickup details, invoices, and customer-facing fulfillment status

Subdomains

  • Shipping Configuration And Eligibility
    • ShippingMethod
    • ShippingService
    • ShippingZone
    • ShippingClass
    • ShippingPostalCode
    • ShippingOption
  • Order Shipment Selection And Shipping Lines
    • OrderShipment
    • OrderShippingLine
  • Fulfillment Planning And Coordination
    • FulfillmentRequest
    • FulfillmentRequestItem
    • TransferLocation
    • DeliveryTimingIssue
    • FulfillmentService
    • FulfillmentServiceRequest
  • Fulfillment Execution
    • Fulfillment
    • FulfillmentItem
  • Scheduling Constraints
    • CalendarRule
    • CalendarRuleCondition

Classification Decisions

Standalone technical pages

Standalone end-user pages

Standalone task guides

Folded into parent pages for now

  • ShippingClass
    • folded into Shipping Service because the main first-pass question is how classes restrict service availability
  • ShippingPostalCode
    • folded into Shipping Zone and Shipping Service because postal-code management is mainly a supporting geographic substrate
  • ShippingOption
    • folded into Shipping Service and the order-shipment task guide
  • OrderShipment
    • folded into Shipping Service and the task guides as the shared admin and storefront shipment-selection record created from order-item grouping
  • OrderShippingLine
    • folded into Shipping Service and Fulfillment Request as the priced commercial result of shipment selection
  • TransferLocation
    • folded into Fulfillment Request
  • FulfillmentRequestItem
    • folded into Fulfillment Request
  • FulfillmentItem
    • folded into Fulfillment
  • DeliveryTimingIssue
    • folded into Fulfillment Request
  • FulfillmentService and FulfillmentServiceRequest
    • folded into Fulfillment Request because they matter mostly as send/request plumbing around a request

Explicitly not getting standalone end-user concept pages in this pass

  • Shipping Method
  • Fulfillment

ShippingMethod is a lower-level configuration container under Shipping Service, and Fulfillment is mainly a downstream output that shoppers and operators consume indirectly through order history, documents, and status.

OrderShipment is intentionally folded rather than omitted. The codebase treats it as a real shared workflow record across storefront cart editing and admin order editing, but this first pass keeps it inside the shipping-service and task-guide pages to avoid splitting the batch into too many overlapping operational pages.

Evidence Highlights

Framework ownership

  • packages/framework/src/Models/ShippingService.php
  • packages/framework/src/Models/ShippingMethod.php
  • packages/framework/src/Models/ShippingZone.php
  • packages/framework/src/Models/FulfillmentRequest.php
  • packages/framework/src/Models/Fulfillment.php
  • packages/framework/src/Models/CalendarRule.php

Admin and operations surfaces

  • packages/framework/routes/admin.php
  • packages/admin/src/Livewire/Admin/Order/Shipments
  • packages/admin/src/Livewire/Admin/Order/FinancialDetails
  • packages/admin/src/Livewire/Admin/Settings/CalendarRules
  • packages/admin/src/Livewire/Admin/Settings/CalendarRule
  • packages/admin/src/Livewire/Admin/Tools/Excel

Storefront and customer-facing surfaces

  • packages/framework/routes/storefront.php
  • packages/framework/src/Http/Controllers/Api/Storefront/ShippingController.php
  • packages/framework/src/Http/Controllers/Api/Storefront/CartShipmentsController.php
  • packages/framework/src/Http/Controllers/Api/Storefront/OrdersController.php
  • packages/framework/src/Http/Resources/Storefront/ShippingServiceResource.php
  • packages/framework/src/Http/Resources/Storefront/FulfillmentResource.php

Core behavior and automation

  • packages/framework/src/Actions/ShippingService/GetAvailableShippingServices.php
  • packages/framework/src/Actions/Order/CalculateShipments.php
  • packages/framework/src/Actions/Order/CalculateShippingLines.php
  • packages/framework/src/Actions/FulfillmentRequest/ConfirmFulfillmentRequestItems.php
  • packages/framework/src/Actions/FulfillmentRequest/FulfillFulfillmentRequestItems.php
  • packages/framework/src/Actions/Fulfillment/CreateFulfillmentFromFulfillmentRequest.php
  • packages/framework/src/Rules/CalendarRuleValidation.php
  • ShippingMethod is the shopper-facing label bucket such as delivery or pickup, while ShippingService is the priced and constrained operational instance tied to a location.
  • ShippingZone is not the same thing as ShippingPostalCode. Zones group or derive postal-code coverage; postal codes are the underlying data source.
  • OrderShipment is an operational grouping record created from order items and inventory locations. It is not the same thing as a final Fulfillment.
  • FulfillmentRequest is the planning and coordination record. Fulfillment is the executed result after items are actually fulfilled.
  • CalendarRule is a supporting configuration node, but it is included in this first pass because the packaged admin exposes it directly and it materially changes pickup and delivery date validation.

Priority Technical Pages

Priority End-User Pages

Priority Task Guides

Quick Checklists