Order fulfillment and shipping operations, per channel.
8-status fulfillment pipeline, rule-based order routing with 8 conditions and 7 actions, 16-marketplace order ingestion with inventory sync, customs document workflow with HS classification and landed-cost calculation, event-driven shipment tracking with 8 carrier webhook adapters, multi-leg handoff orchestration, and 8 rental fulfillment surfaces.
Order to shipped. 8 statuses. Pick and pack tracking.
OpsFulfillmentClient renders the fulfillment task queue from /api/logistics/fulfillment. Each order carries channel, items with per-item pick counts, carrier assignment, and tracking number. Filter by status, priority, or assignee. PATCH to advance status.
8-Status Fulfillment Pipeline
Every FulfillmentOrder moves through pending, processing, picking, packing, shipped, delivered, returned, or cancelled. OpsFulfillmentClient renders the queue with filters by status, priority, and assignee.
Per-Item Pick Tracking
Each line item carries sku, name, quantity, and pickedQuantity. Pickers update pickedQuantity as they work through the order. The packing station only releases orders where all items are fully picked.
Packing Stations
PackingStation records track id, name, assignedTo, activeOrders, and completedToday. LogisticsPackingStationClient shows station workload and lets managers reassign orders between stations.
Warehouse Location Model
WarehouseLocation stores zone, aisle, shelf, and bin with capacity and currentOccupancy. The routing engine uses warehouseId in ShipmentPlan to direct fulfillment to the correct origin.
Rules decide where each order goes. Automatically.
The RoutingEngine evaluates order value, weight, destination, customer tier, channel, product tags, fulfillment type, and time windows. Actions assign carriers, set service levels, pick warehouses, split shipments, route to vendors, and add insurance.
,0,
routing conditions evaluated per order
,0,
routing actions applied to matching rules
,0,
marketplace connectors with order ingestion
,0,
unified tracking statuses across carriers
8 conditions. 7 actions. Rule-based decisions.
The routing engine evaluates each order against prioritized rules. Mode is first_match (stop at first hit) or accumulate (apply all matching). CostOptimizer runs after rule evaluation when enabled. RoutingSimulator provides what-if analysis with alternative decisions and a full rule-evaluation trace.
Conditions (if)
Actions (then)
16 marketplaces. Order ingestion. Inventory sync.
MarketplaceOrchestratorClient renders connected channels with order counts, sync status, and error indicators. The ecommerce sub-routes provide dedicated surfaces for order management, shipping, packing, returns, pickup, and dropship fulfillment.
16 Global Marketplaces
The marketplace registry provides connector implementations for 16 platforms. Each connector exposes orders, inventory, fulfillment, returns, and webhook capabilities per platform.
Order Ingestion
OrderIngestionService pulls orders from connected marketplaces into the logistics pipeline. /api/logistics/marketplace/orders returns ingested orders. Each carries its source channel for routing rule evaluation.
Inventory Sync
InventorySyncService pushes stock levels to marketplace channels and pulls reserved quantities back. /api/logistics/marketplace/inventory/sync triggers push/pull operations per channel.
OAuth Channel Connection
OAuthFlowManager handles marketplace authentication flows. Channels with oauthUrl get a connect button; others use API key entry. Callback routes complete the auth handshake.
Ecommerce Surfaces
8 carriers. Rate comparison. Customs documents.
RateShoppingService queries configured carriers in parallel. LabelService generates printable labels. The customs engine classifies HS codes, calculates landed cost, screens restricted items, and manages 6 document types through a create-validate-sign workflow.
8 carriers. Rate comparison. Label generation. SLA contracts.
The shipping layer configures 8 carrier clients from environment variables, each with sandbox/production toggle. RateShoppingService compares rates across all carriers for a given shipment. CarrierSLAContract records track delivery guarantees, cutoff times, and volume discounts.
Rate Shopping
RateShoppingService queries all configured carriers in parallel and returns RateComparison results with estimated cost, transit days, SLA compliance, and savings vs. alternatives. GET /api/logistics/shipping/rates.
Label Generation
LabelService generates shipping labels for created shipments. GET /api/logistics/shipping/labels/[shipmentId] returns the printable label for a specific shipment.
Tracking Normalization
TrackingNormalizationService converts carrier-specific tracking data into a unified format. GET /api/logistics/shipping/tracking/[trackingNumber] returns normalized status and events.
Configured Carriers
SLA Contract Fields
- carrierId + carrierName
- serviceLevel
- maxDeliveryDays
- guaranteedDelivery flag
- cutoffTime (HH:mm)
- pickupDays (weekday list)
- surcharges (type, amount, condition)
- volumeDiscount (threshold, discountPercent)
- validity period (validFrom / validUntil)
HS codes. Landed cost. Restricted item screening.
The customs engine provides the classification, cost calculation, compliance screening, and document generation layer. CustomsDashboardClient renders recent classifications, compliance alerts, and pending calculations.
HS Code Classification
HSCodeClassifier assigns Harmonized System codes from product name, description, category, and materials. POST /api/logistics/customs/classify returns codes with confidence scores. Lookup via /api/logistics/customs/hs-codes.
Landed Cost Calculation
LandedCostCalculator computes duties, taxes, and fees based on HS code, origin, destination, and declared value. POST /api/logistics/customs/landed-cost returns a breakdown per line item.
Restricted Items Screening
RestrictedItemsScreener checks items against restricted/prohibited goods lists per destination country. SanctionsChecker runs entity-level sanctions screening. POST /api/logistics/customs/compliance.
Document Workflow
CustomsWorkflowService manages 6 document types: commercial invoice, packing list, certificate of origin, customs declaration, bill of lading, airway bill. Each document moves through create, validate, generate-pdf, and sign (with callback).
Document Types
Carrier webhooks in. Normalized events out. Alerts everywhere.
WebhookIngestionRouter verifies signatures, parses payloads, and normalizes statuses into LogisticsEvent records. The EventBus distributes events to subscribers, the timeline service, and the notification engine.
8 carrier adapters. 25 statuses. Multi-leg timelines.
The logistics events engine runs the event-driven tracking layer. Carrier webhooks arrive at /api/logistics/events/webhooks/[carrier], get verified and normalized, then flow through the EventBus to subscribers, the EventStore, and the TrackingTimelineService.
Event Bus + Event Store
EventBus distributes LogisticsEvent records to subscribers. EventStore persists events for replay and timeline reconstruction. EventReplay re-processes historical events against new subscriber logic.
8 Carrier Webhook Adapters
WebhookIngestionRouter dispatches incoming carrier webhooks to the correct adapter: FedEx, UPS, DHL, USPS, DPD, Glovo, Rappi, or GenericWebhookAdapter. Each adapter verifies signatures and normalizes payloads into LogisticsEvent records.
25 Unified Tracking Statuses
StatusNormalizer maps carrier-specific status codes to 25 unified values, from order_placed through in_customs and customs_cleared to delivered or exception. LocationNormalizer standardizes facility names and coordinates.
Multi-Leg Shipment Timeline
TrackingTimelineService builds ShipmentTimeline from stored events, including milestones with estimatedAt fields. Multi-leg shipments get per-leg LegTimeline with separate carrier and tracking number per leg.
ETA Calculator
ETACalculator produces confidence-rated delivery estimates (high, medium, low) based on carrier performance data, current status, and historical transit times. Updates fire eta_update events through the bus.
Customer-Facing Tracking Page
TrackingPageService generates TrackingPageData with DisplayEvent list, MapPoint coordinates, and milestone progress. LogisticsTrackingClient renders the timeline with map and status indicators.
4 notification channels. Carrier scorecards. Exception tracking.
NotificationEngine dispatches status updates across email, SMS, push, and webhook channels using configurable templates per tracking status. DeliveryPerformanceTracker and CarrierScorecardService surface operational metrics.
EmailNotifier
Renders NotificationTemplate with shipment variables and sends via configured EmailTransport
SMS
SMSNotifier
Short-form status updates sent via SMSTransport with tracking link
Push
PushNotifier
Mobile push notifications via PushTransport using recipient push tokens
Webhook
WebhookNotifier
HTTP POST to merchant-configured URLs with full event payload
Delivery Performance Tracker
Aggregates totalShipments, avgTransitDays, onTimeDeliveryRate, firstAttemptSuccessRate, and exceptionRate. Breaks down by carrier, region, and channel with average resolution hours per exception type.
Carrier Scorecards
Per-carrier metrics: deliveredOnTime, deliveredLate, failedDeliveries, returnedShipments, avgTransitDays, onTimeRate, exceptionRate, avgDeliveryAttempts, costPerShipment. Configurable scoring period.
Exception Tracker
Categorizes shipping exceptions (delayed, lost, damaged, return_initiated) with per-category counts and average resolution time in hours. ExceptionSummary feeds dashboard alerts.
Multi-leg chains. Dwell monitoring. Stuck-package alerts.
The handoff engine manages shipment custody transfers between carriers. This is the logistics-side handoff: packages moving between legs of a multi-carrier route. Distinct from Dispatch handoff, which handles field work transfers between people.
Multi-Leg Chain Orchestration
HandoffOrchestrator creates chains from ShipmentPlan, managing custody transfer between carriers across legs. POST /api/logistics/handoff/chains to create a chain, GET to list active chains by status.
Stuck Package Detection
StuckPackageDetector monitors dwell time per leg against a configurable threshold (defaultMaxDwellHours, default 48). When a package sits too long at a handoff point, alerts fire to /api/logistics/handoff/alerts.
Handoff Dashboard
HandoffDashboardClient renders active chains and stuck alerts. Each chain shows its legs, current carrier, and time at current handoff point. Alerts are sorted by dwell time to surface the most overdue packages first.
Chain Status Queries
GET /api/logistics/handoff/chains supports status filtering. PATCH /api/logistics/handoff/chains/[chainId] updates individual chains as legs complete or new legs are added mid-transit.
Rental fulfillment. Product feeds. 4 cross-product bridges.
8 rental-specific surfaces for order boards, shortages, returns, subrentals, inspections, locations, damage, and overdue items. Product feed generation for marketplace channels and comparison shopping engines. Cross-product connections to Sync, Inventory, Equipment, and Reputation.
Marketplace feeds. Shopping engines. Affiliate exports.
ProductFeedsClient renders the feed management interface. Create feeds with custom field mappings, generate them against your product catalog, and push to marketplace channels or comparison shopping engines.
Feed Management Service
The feed management service handles listing, creating, generating, and deleting product feeds. Each feed has a FeedConfig that defines format, field mapping, and target platform.
Feed Generation
POST /api/logistics/feeds with a config and product list generates a feed in the target format. Supports marketplace product listings, comparison shopping engine exports, and affiliate data feeds.
Scheduled Regeneration
ProductFeedsClient provides an onUpdateSchedule handler for configuring automatic feed regeneration. Feeds can be triggered on product changes or run on a fixed schedule.
Feed Lifecycle
GET /api/logistics/feeds lists all feeds with optional target filter. DELETE /api/logistics/feeds/[feedId] removes a feed. POST /api/logistics/feeds/[feedId] regenerates a single feed on demand.
8 rental surfaces. Shortages. Inspections. Damage reports.
The /logistics/rentals/ sub-routes provide 8 dedicated surfaces for rental-specific fulfillment. Each uses an operations client component scoped through OpsAreaGate for role-based access.
Order Board
OpsRentalsOrderBoardClient
Rental order queue with status tracking, sorted by due date and priority
Shortages
OpsRentalsShortagesClient
Items with insufficient stock for upcoming rental commitments
Returns
OpsRentalsReturnClient
Inbound rental returns with condition assessment and restocking workflow
Subrentals
OpsRentalsSubrentalsClient
Items sourced from third-party vendors to fill rental gaps
Inspections
OpsRentalsInspectionsClient
Pre-dispatch and post-return inspection checklists per item
Locations
OpsRentalsLocationsClient
Warehouse and staging locations for rental inventory
Damage Reports
OpsRentalsDamageClient
Damage documentation with photo evidence and cost assessment
Overdue
OpsRentalsOverdueClient
Rental items past their return date with escalation indicators
Sync distributes. Inventory allocates. Equipment supplies.
Logistics connects to 4 sibling products. The sidebar is registry-driven with 3 access areas. OpsAreaGate controls route visibility per user role.
Sync
Marketplace channel auth and config managed through the marketplace orchestrator. OAuthFlowManager handles connect/callback flows. 16 marketplace connectors registered.
Inventory
InventorySyncService pushes stock levels to channels and pulls reserved quantities. Fulfillment orders check stock availability before entering the picking stage.
Equipment
Rental fulfillment surfaces check equipment availability. 8 rental sub-routes connect to operations client components for asset tracking during rental cycles.
Reputation
/api/logistics/webhooks/reputation fires delivery completion events. Reputation product uses these to trigger post-delivery review requests.
Registry-Driven Navigation
deriveLogisticsSidebarFromRegistry groups nav items by OpsArea (personal, staff, manager) and VerticalKey. Users see only routes matching their assigned area and active verticals.
OpsAreaGate Access Control
Every route wraps its client in OpsAreaGate, which checks the user's assigned area against the required access level before rendering. Three tiers: personal, staff, manager.
Settings Surface
Configure fulfillment rules, carrier preferences, warehouse zones, and channel integrations from /logistics/settings. Bottom nav also cross-links to the Inventory product.
High-Performance Ops. Zero Monthly Overhead.
Get all 15 Core modules at no monthly cost. You only pay 2% of processed revenue.
Logistics
Order fulfillment, shipping pipeline, and carrier management.
Part of Ops Suite
Wallet-debit
Add to Pro Shop