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:
| Provider | Role |
|---|---|
| Printful | Print-on-demand production and direct shipping. |
| Shopify / OrderDesk | Order management and routing to suppliers. |
| Bulk suppliers | Sage, Swell, Topshelf and others produce warehoused runs. |
| AfterShip | Carrier-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