Before you start
- Agreed promotion amount/percentage, dates, minimum purchase and usage limits.
- For a product-specific promotion, the exact target ProductID.
- A configured customer-facing flow that accepts the promotion; do not assume the standard admin quote page has a promo-code input.
Open in your admin application
Use your installation’s admin address with one of these routes. Replace {id} with the actual record identifier.
/discounts/discount-insert/discount?DiscountID={id}/promo-code-insert/promo-codesDefine the discount rule
Choose Discount type
Open
/discount-insert. Select Free Shipping, Amount off Order, Percent off Order, Amount off a Product or Percent off a Product. Choose Free Shipping for a shipping benefit; a fixed order deduction is a different rule.Name the promotion
Enter Discount name and Customer-facing description. Describe the actual eligibility and benefit, including relevant exclusions in your published terms.
Enter Benefit & eligibility
Amount types show Amount off; percent types show Percent off. Product types also show Applies to product. Set Minimum order total if applicable. Enter a percentage such as 20 for twenty percent, within the form’s 0–100 range.
Set Availability
Choose Start date, End date and Maximum uses. The form explains that an empty Maximum uses leaves no usage cap. Set Active, then choose Create. Confirm the resulting discount detail.
Link a code and test eligibility
Create the promo code
Open
/promo-code-insert. Enter Promo Code, select the Discount and set Max Uses if needed. The generic form also exposes Usage Count; treat that as usage accounting, not a promotion setting to reset casually. Save the record.Run an eligible example
In the configured promotion-enabled storefront or test harness, apply the code to a basket that meets the dates, threshold and product conditions. Compare the actual discount with the expected value.
Run ineligible examples
Try the wrong product, below-minimum total, outside schedule and exhausted-cap cases in your test environment. A rule is not verified merely because its record saved.
Check the resulting totals
Inspect Discount, Tax, Shipping and Total. Distinguish automatic rule discounts from an optional Manual Discount on an open quote. The manual amount cannot exceed the remaining subtotal after other discounts.
Fields & records
| Field / record | Meaning or use |
|---|---|
| Amount off / Percent off | Only the field relevant to the selected type is displayed. |
| Applies to product | Shown for product-level discounts only. |
| Maximum uses / Max Uses | The discount rule and its individual code have distinct caps. |
| Active and schedule | Both determine whether a rule is available. |
Verify the result
- Discount has the intended type, value, scope and dates.
- Promo Code references the correct DiscountID.
- Eligible and ineligible examples produce the expected totals and usage behavior.
Troubleshooting
| What you see | What to check or do |
|---|---|
| Wrong benefit | Free Shipping is a dedicated type, not a guessed fixed-dollar order discount. |
| Code saved but not applied | Check the consuming storefront, active state, schedule, caps and eligible products. |
| Manual discount rejected | Keep it within the remaining subtotal after existing discounts. |
Version & scope
Procedure checked against current Feeding Frenzy forms and services. Source verification is not a claim that a live payment, message, customer transaction or full operator run occurred.
Public guides describe shared controls, records and configuration boundaries using fictional data. Tenant URLs, credentials, customer records, provider identifiers and installation-only procedures belong in customer-controlled documentation and are excluded from public pages and search.
- Version
- 2.0.0
- Change source
- Current Feeding Frenzy forms/services plus reconciled Wiki topics
- Feedback key
guide:discounts
Feedback records only the page, guide ID and yes/no choice. It never records documentation search text.
Implementation references (3)
FeedingFrenzy.Admin/wwwroot/kScripts/Discounts/Discount.Insert.ks.htmlFeedingFrenzy.Admin/wwwroot/kScripts/PromoCodes/PromoCodesAdmin.ks.htmlFeedingFrenzy.Commerce/Baskets/Quotes.cs