Fulfillment & Warehousing.

When a reward is a physical thing, PerkUp has to actually ship it. Fulfillment spans order creation, shipping rates and addresses, the warehouses that hold bulk inventory, and the tracking that flows back.

Orders

A redemption that involves a physical item becomes an Order with one or more OrderFulfillment records (proto/perkup/v1/order.proto). A fulfillment moves through created, in production or picking, shipped, delivered — or exception states like cancelled or returned.

Shipping & addresses

Recipients enter or confirm a shipping address at redemption. Address entry is assisted by geocoding, and shipping is rated per package size and destination zone, with per-organization overrides. Items ship from the source closest to the recipient.

Warehouses & inventory

Bulk swag is held in regional warehouses (proto/perkup/v1/warehouses.proto) so recipients get domestic-speed delivery:

  • Inventory is tracked per warehouse as on-hand, committed, and available.
  • Warehousing is billed monthly by package size and quantity.
  • On-demand items skip warehousing — they are produced per order; see On-Demand Swag.

Tracking & providers

Delivery is executed and tracked through fulfillment and logistics providers:

ProviderRole
PrintfulPrint-on-demand production and direct shipping.
Shopify / OrderDeskOrder management and routing to suppliers.
Bulk suppliersSage, Swell, Topshelf and others produce warehoused runs.
AfterShipCarrier-agnostic shipment tracking back into PerkUp.

For the bulk production lifecycle specifically, see Bulk Swag.

Source: proto/perkup/v1/{order,warehouses}.proto · functions/src/shopify/orderdesk · backend/app/printful · functions/src/services/{rye,dimona}.ts