Pricing & Promotions
Pricing & Promotions is the domain that determines which price a shopper or account is eligible to receive, and how campaign-style discounts are applied on top of that pricing.
This is the right second deep documentation pass because the framework clearly separates offer resolution from promotion code redemption, and both areas touch storefront behavior, admin tools, Excel workflows, and ERP sync.
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:
- storing product-level sellable price records
- resolving which offer is available for a given shopper, location, and quantity
- materializing best-price snapshots for storefront pricing surfaces
- managing promotions, codes, conditions, and per-product benefits
- applying validated promotion redemptions during cart and order recalculation
Subdomains
Offer ResolutionProductOffer
System-Generated Pricing ViewsFeaturedOffer
Promotions And Code RedemptionPromotionPromotionCodePromotionConditionPromotionBenefit
Folded Supporting RecordsPriceHistoryPromotionRedemptionPriceListProductOfferBillingAddressProductOfferShippingAddressProductOfferProductInventoryItem
Classification Decisions
Standalone technical pages
Standalone end-user pages
Standalone task guides
Folded into parent pages for now
PriceHistory- folded into
Product Offer
- folded into
PromotionRedemption- folded into
Promotion CodeandPromotions
- folded into
PriceList- folded into domain notes because the default framework route exists, but the base customer implementation is intentionally incomplete
- targeting pivots such as
ProductOfferBillingAddress,ProductOfferShippingAddress,ProductOfferProductInventoryItem- folded into
Product Offer
- folded into
Explicitly deferred or ambiguous
price_rule_id,price_zone_id, andcustom_price_id- present on
ProductOfferand in admin filters, but this sprint did not find packaged first-class ownership surfaces that justify standalone pages yet
- present on
Evidence Highlights
Framework ownership
packages/framework/src/Models/ProductOffer.phppackages/framework/src/Models/FeaturedOffer.phppackages/framework/src/Models/PriceHistory.phppackages/framework/src/Models/Promotion.phppackages/framework/src/Models/PromotionCode.phppackages/framework/src/Models/PromotionCondition.phppackages/framework/src/Models/PromotionBenefit.phppackages/framework/src/Models/PromotionRedemption.php
Admin surfaces
packages/admin/routes/web.phppackages/admin/src/Livewire/Admin/Settings/Promotionspackages/admin/src/Livewire/Admin/Settings/Promotionpackages/admin/src/Livewire/Admin/Forms/PromotionForm.phppackages/admin/src/Livewire/Admin/Tools/Excel/ExportDialog/ProductOffersExport.phppackages/admin/src/Livewire/Admin/Tools/Excel/ExportDialog/PromotionsExport.phppackages/admin/src/Livewire/Admin/Tools/Excel/ImportDialog/PromotionImport.phppackages/admin/src/Livewire/Admin/Order/Items/AddItemToOrder/ProductOffersDialog.php
Storefront surfaces
packages/storefront/src/Livewire/Storefront/Product/OfferBlock.phppackages/storefront/src/Livewire/Storefront/Product/PricingWrapper.phppackages/storefront/src/View/Components/Product/Pricing.phppackages/storefront/src/Livewire/Storefront/Cart/PromotionSection.phppackages/framework/src/Http/Resources/Storefront/ProductOfferResource.phppackages/framework/src/Http/Resources/Storefront/PromotionRedemptionResource.php
Integration and bulk-data surfaces
packages/framework/src/Actions/ProductOfferpackages/framework/src/Actions/FeaturedOffer/CalculateFeaturedOffers.phppackages/framework/src/Actions/PriceList/DownloadPriceList.phppackages/framework/src/Imports/Promotionspackages/framework/src/Exports/Promotionspackages/framework/src/Actions/Exports/ProductOfferpackages/framework/src/Actions/ErpBridge/ProductOfferpackages/erp-bridge/src/Requests/ProductOffers/GetProductOffersRequest.php
Navigation Notes
ProductOfferis the pricing center of gravity in the framework, but this first pass did not find a packaged admin CRUD screen equivalent to the promotion settings UI.FeaturedOfferis a system-generated pricing snapshot, not a manually authored settings record.- Promotions are feature-gated through
PromotionsFeature, and featured-offer calculation is separately gated throughCalculateFeaturedOfferFeature. - The default price-list route exists, but the base
Customer::downloadPriceList()implementation throws until the host app provides the real customer-specific behavior.
Priority Technical Pages
Priority End-User Pages
Priority Task Guides
- How to create a promotion
- How to add a promotion code
- How to troubleshoot why a promotion is not applying