Coupon codes can be a very significant marketing tool, so it's important to understand what is and isn't possible with FoxyCart's coupon and quantity discounting functionality. While coupon codes and quantity discounts may not seem inherently related, FoxyCart uses almost the same logic and syntax for both, so we'll discuss them together.
We've found that stores with coupon codes tend to generate 60% more revenue and 83% more transactions than stores not utilizing coupon codes, and those numbers increase (significantly) as the number of coupon codes increases. (Stores with 10 or more coupon codes do 3.8x the revenue and 3x the transactions. According to our data, at least. No joke.) It's not a magic bullet, but simply having coupon codes available can motivate an otherwise “too busy” merchant or marketer to do some email marketing or advertisements promoting the coupon codes. Try it! According to our system-wide data, you won't regret it.
It's important to understand that both coupon codes and discounts can apply a value or percentage based discount, based on the value or quantity “tier” of the cart (or of specific categories, or specific products, depending). This is a critical piece to understand, because in FoxyCart you cannot simply apply a “$5 discount” without a tier, even if that tier is simply “minimum quantity of 1 product”.
That might sound confusing, but once you understand the logic and syntax you'll see how it's possible to create very advanced discount structures without much trouble at all.
In order to make sure we're on the same page, let's review the terms we'll be using.
Discount Name
Discount Method
Discount Type
Discount Amount
Discount Tier
discount amount
to be applied. All discount types can accept multiple tiers except for the repeat
type.discount_quantity_amount
$/qty
.discount_quantity_percentage
%/qty
.discount_price_amount
$/$
.discount_price_percentage
%/$
.allunits
allunits
is the default discount type for quantity discounts applied to products. If a discount type isn't specified, allunits
is applied.discount_quantity_amount=My Discount{allunits|2-2}
: Buy two products, take $2 off of both.discount_quantity_percentage=My Discount{allunits|5-10|10-20}
: Orders of five or more get a 10% on every item ordered. Orders of 10 or more get a 20% discount on every item ordered.incremental
$/$
discount methods.discount_quantity_amount=My Discount{incremental|3-5}
: Buy two products, get additional products at $5 off. (The first two are not discounted.)discount_quantity_percentage=My Discount{incremental|11-10|51-15|101-20}
: With a quantity of 1-10, all products are at 100%. With a quantity of 150, 10 products would be at 100%, 40 would be at 90%, 50 would be at 85%, and 50 would be at 80%.repeat
incremental
discounts, but only have a single tier that repeats. Using this method you can achieve “buy one get one free” types of discounts that repeat (buy 1 get 1, or buy 3 get 3). You can also do something like “buy 3 get the 4th at $5 off”, so buying 5 or 6 would only get a single $5 discount, but buying 8 would get a $10 discount.$/$
discount methods. Only accepts one tier.discount_quantity_percentage=My Discount{repeat|2-100}
: Buy one, get one free (100% off).discount_quantity_percentage=My Discount{repeat|4-50}
: Buy 3, get the 4th at 50% off.single
single
discount type applies one single discount and not a quantity discount across all products.single
is the default discount type for coupons, as it makes the most sense in that context. For %/qty
and %/$
a single
discount type will yield the same discount as allunits
.discount_quantity_amount=My Discount{single|5-10}
: Buy any 5 products, get $10 off your order.
The discount syntax below shows all the pieces to creating a discount. In a coupon or category discount, the discount_method
is specified separate from the
discount_method=Discount_Name{discount_type|X-A|Y-B|Z-C}
discount_method
: One of the Discount Methods above.Discount_Name
: The text label applied to the discount and displayed to the customer in the cart. For example, “Summer Special” or “Local Coupon Discount”. A discount name is required for discounts to apply properly on cart pageloads.discount_type
: A Discount Type from above. Optional. Will default to single
if a coupon, or allunits
otherwise.X
, Y
, Z
: “Discount Tiers”. The threshold at which the Discount Amount will apply.A
, B
, C
: “Discount Amounts”. The amount or percentage discount to apply.Quantity discounts can be applied in two ways: specific to a product, or specific to a category (or categories). To apply a quantity discount to a single product, the discount must be included as a parameter when the product is added to the cart. In this case, the quantity discount will apply to that product and that product only. This is often desired for items that may be ordered in bulk, like screws or other hardware. If a discount is set at the category level, the discount will apply across all the products in the category equally, so category-based discounts work best when the category contains similarly priced items. Note that category discounts are set on the category's FoxyCart settings page and are always applied to products in that category. If you would like your category discount to be applied only in certain cases (like when a customer is a member of a group that receives the discount), then you can create two categories, one with and one without the discount, and use the discounted category (or not) when adding products to your cart.
It is important to note that the discount tiers only count against the portion of the cart that will actually receive a discount. So a category-wide quantity discount that has a quantity tier of 5 will not apply if there are only 3 products in the category, regardless the number of products in other categories.
All product and category quantity discounts are applied to the products themselves, and not as a separate line item like a coupon code. So if a product is ordinarily $10 and has a 10% discount, the discount is reflected in the product details and the product price becomes $9.
Product quantity discounts can be combined with category quantity discounts, as well as coupon codes, however it will likely result in confusion to mix product-specific and category-specific quantity discounts, so it's best avoided if possible.
Unlike product or category quantity discounts, coupon codes apply one single discount as a line-item in the cart, and do not affect the individual product prices. Coupon codes also can apply to one or many categories, but cannot be product-specific (unless the product is the only product in that category).
Coupon codes have a variety of other options in addition to the discounting functionality described above.
category=shirts
, and you have 3 shirts in the cart at $10 each. This quantity discount would be $4.50. Now let's say you have a coupon code with this checkbox checked. When that coupon is added to the cart, the quantity discount will be removed, and only the coupon discount will remain. This is most often useful in situations where you do not want coupons discounts to be added together with other discounts.