Catalog.
Everything PerkUp can send — branded swag, gift cards, and curated gifts — is modelled as a single entity: the ProductVariant. One model, several providers behind it.
Three product types
Every catalog item has a type that determines how it is funded and fulfilled (proto/perkup/v1/product_variant.proto):
| Type | What it is | Fulfilled by |
|---|---|---|
swag | Physical branded merchandise — apparel, drinkware, kits. | Print-on-demand or warehoused bulk |
nearCash | Gift cards and vouchers redeemable for cash-equivalent value. | Gift-card providers |
publicGift | A pre-selected gift sent to an external or no-login recipient. | Catalog providers |
amazonProduct | An Amazon Business product chosen by ASIN. | Amazon (migration in progress) |
Five providers
The provider field says which system actually holds inventory and ships the item:
| Provider | Role |
|---|---|
shopify | Primary on-demand swag store and inventory source of truth. |
printful | Print-on-demand manufacturing for apparel and accessories. |
plum | Digital gift cards and vouchers. |
amazon | Amazon Business products. |
manual | Statically curated items (e.g. sourced from Airtable). |
How a variant works
A ProductVariant carries everything needed to display, price, and ship an item:
- Options — size, color, or gift-card denomination.
- Collections — groupings used to build storefronts and curated sets.
- Per-country pricing — price and currency vary by recipient country.
- Shipping rates — default rates by package size and zone, with per-org overrides.
- Source type —
fullPrepaiditems don't draw from an account; normal items do.
Where each kind lives
Source: proto/perkup/v1/product_variant.proto · GLOSSARY.md · perkupapp.com