AffStackDev Help

Fine-tune: what counts, what can be given, limits

The settings behind a promotion: which purchases count, which products may be gifts, buy-two-get-one repeated, a ladder of rewards, who may get a gift and how often, coupons, competing promotions, and every setting of the Settings tab. With worked examples.

Two separate questions

Free Gifts & BOGO keeps apart what earns a gift and what may be a gift.

So there are three places to exclude products:

Where The product ...
Exclude from qualifying purchases only, in 1. Customer must… (Purchases that do not count, Purchase categories that do not count) does not count toward earning, but may be given as a gift
Exclude from gifts only, in 2. Customer gets… (Products never offered as gifts, Categories never offered as gifts) cannot be a gift, but buying it counts. This holds for every reward level and for gifts added automatically.
3. Exclusions and limits (Exclude products, Exclude categories, Exclude tags, Exclude product types, Exclude attributes or groupings), and the same lists on Settings for all promotions neither counts nor can be a gift

Excluding a category includes the categories below it. Picking a product excludes all its variations; you can also pick one exact variation.

What must be bought

What is given

Depending on the kind of deal, How the reward is chosen offers:

Choice Use it for
Add a specific product automatically "Free tote bag with every order over 50": the product you pick under Gift product is added to the cart by itself. For a variable product, pick the exact variation.
Let the customer choose The shopper picks from Customer can choose from: All eligible products, Only selected products or groups (you list them), or The same products or groups that count toward this deal.
Give the same product they bought Buy two, get one of the same (BOGO). Each product or variation counts for itself.

Number of gifts ("How many reward slots this promotion earns.") and the value limit go together: under Optional maximum gift value, tick Limit reward value and enter Maximum reward value. 2 gifts with a maximum of 20 means two products, each worth up to 20. It limits which products can be chosen; it is not an amount to spend.

Price used for the limit says what "worth" means: Current active price (a product on sale for 18 passes a limit of 20), Regular price (the same product at regularly 30 does not), or Use global default (Reward value basis on Settings, the current price at the start).

If a chosen gift is sold out or no longer allowed, it is taken out of the cart and the shopper can choose another. Free Gifts & BOGO never swaps in a different product by itself.

A gift at a discount

A gift does not have to be free. Under Gift price, Price of each gift offers Free (the start), A percentage off its price and An amount off its price, with the Discount under it. It works for every kind of deal, and every reward level of a ladder has its own (50% off from $100, free from $200, for example).

Worked example: socks at half price with every pair of boots

Harbor & Pine sells Trail Boots and wants to give Wool Camp Socks ($10) at half price with every pair:

Field Value
What kind of deal? Buy products, get a specific product free (the price below makes it half price)
Number of items 1
Products that count Only selected products or groups, Specific products: Trail Boots
Gift product Wool Camp Socks
Price of each gift A percentage off its price
Discount 50

A shopper adds one pair of boots ($89): the socks are added as their own line at $5.00, labelled "Gift at 50% off"; the cart total is $94. The boots' product page says "Get 1 × Wool Camp Socks at 50% off". With the store's 10% code AUTUMN10 the boots cost $80.10 and the socks $4.50. When the socks go on sale at $8, the next cart update charges $4.00 for them.

Free shipping as the reward

Instead of a gift, a promotion can give free shipping: choose Give free shipping under How the reward is chosen (on a level of a ladder, Free shipping under Customer gets). Free Gifts & BOGO sets no shipping price itself; it uses WooCommerce's own Free shipping method.

Worked example: free shipping over $75

Harbor & Pine ships to the United States with Flat rate $7.95. Under WooCommerce → Settings → Shipping, in that zone, they add Free shipping with Free shipping requires: A valid free shipping coupon, then build the promotion "Free shipping over $75":

Field Value
What kind of deal? Spend an amount, get a reward
Amount to spend 75
How the reward is chosen Give free shipping

A shopper with $64 in the cart sees only Flat rate $7.95, and the cart says "Add $11.00 more to unlock Free shipping over $75." They add a $15 beanie ($79): checkout now offers Free shipping at $0.00 next to Flat rate, and they choose it. The order has a Free shipping line at $0.00, and the order screen lists "Free shipping over $75: Free shipping" under Gift promotions. Had they removed the beanie before paying, Free shipping would have gone from the choices and Flat rate would have been chosen again. A customer who applies one of the store's own free shipping coupons gets free shipping from WooCommerce as before; the order then does not credit the promotion.

Getting it more than once

Maximum reward sets per order in 1. Customer must…: "Use 1 to award the deal once. Use 0 to repeat it every time the customer reaches the qualifying amount." A number above 1 caps the repeats.

Worked example: buy two packs, get one free, as often as the cart allows

Harbor & Pine's "Socks: buy two packs, get one free":

Field Value
What kind of deal? Buy products, get the same product free
Number of items 2
Products that count Only selected products or groups, Specific products: Wool Camp Socks (3-pack)
Maximum reward sets per order 0
The promotion's 1. Customer must…: two items of the socks, no cap on the sets per order
The promotion's 1. Customer must…: two items of the socks, no cap on the sets per order (the top of the screen; select the picture to see all of it)

A shopper puts four packs in the cart: two packs more are added free ("An earned free gift was added to your cart."), each as a line of its own at $0.00 ("Save $28.00"). The paid packs cost $25.20 each instead of $28 here: the store's own Dynamic Pricing rule "Wool socks: buy more, save more" takes 10% off from three packs. The free packs count for nothing in the total ($100.80).

Four packs in the cart: two more come free
Four packs in the cart: two more come free

A ladder

Spend or buy more, get different rewards. Under 2. Customer gets… each Reward level has its own Customer spends (or Customer buys this many), Number of gifts, Customer gets (A product added automatically or Their choice of eligible products), Customer can choose from and Optional maximum gift value (Limit the value of gifts at this level, Maximum value, Price used). "How levels work: The customer receives the reward from the highest level reached. Lower levels are replaced, not added again." A ladder has 2 to 20 levels: Add another reward level, Remove level. The editor always shows at least three level cards; a card you leave empty (spending 0) is not saved.

Worked example: bigger orders, better gifts

Level Customer spends Number of gifts Customer gets Maximum value
Reward level 1 100 1 Their choice of eligible products 25
Reward level 2 200 2 Their choice of eligible products 40
Two levels, each with its own maximum gift value; the third card is empty and is not saved
Two levels, each with its own maximum gift value; the third card is empty and is not saved (the top of the screen; select the picture to see all of it)

A cart of $114 (a base layer for $78 and a mug set for $36) reaches level 1: "Bigger orders, better gifts is unlocked. Add $86.00 more for the next reward level." The gift box offers one gift worth up to $25: the beanie or the candle.

A $114 cart: level 1, one gift up to $25, and how much more for level 2
A $114 cart: level 1, one gift up to $25, and how much more for level 2

A cart of $234 (a field jacket for $198 and the mug set) reaches level 2: "You have 2 free gifts to choose." Gift 1 of 2 and Gift 2 of 2 each offer the five products worth up to $40 (the steel bottle, the socks, the beanie, the candle and the mug set). Level 1's gift is not added on top. The store's "Free beanie with orders over $150" is a different promotion: it adds its beanie as well, because the two promotions combine.

A $234 cart: level 2, two gifts up to $40 each, next to the beanie of another promotion
A $234 cart: level 2, two gifts up to $40 each, next to the beanie of another promotion (the top of the screen; select the picture to see all of it)

Who, and how often

Under 3. Exclusions and limits, Customer targeting ("All selected conditions must match."):

Field Choices
Shopper access All eligible shoppers, Guest checkout only, Signed-in customers only
Customer roles Empty: any role. Picking roles requires sign-in; one matching role is enough. Hold Ctrl or Command to pick several.
Account purchase history Any purchase history; No previous paid orders (a first-order gift: it also sets the promotion to one gift order per account); At least one previous paid order. These need sign-in and look at the account's orders that were paid, also when refunded or cancelled later. A guest's earlier purchases are not matched by email.

Campaign limits (0 means no limit):

Field Counts
Orders across this campaign orders with at least one gift from this promotion, however many gifts each has
Orders per signed-in customer the same, per account; a limit above 0 requires sign-in
Gift units across this campaign gift items given in all

Counting starts when a limit is switched on; earlier orders are not counted afterwards, and changing a limit keeps what was used. An order waiting for payment holds its place; an unpaid order that fails or is cancelled gives it back; paid orders and refunds keep it. A cart alone holds nothing: availability is checked again at checkout. When a limit is set, the editor shows how much is used ("Allocated: ... orders, ... gift units.").

In the shop, a guest's cart says when a promotion needs sign-in, starting with the promotion's name (for example "Choose a gift with orders over $250: Sign in to qualify for this limited gift promotion."). The promotion's offer text adds its conditions ("Sign in; at most 1 order per account.").

Coupons

Under Advanced behavior and limits:

Store credit and gift cards (AffStackDev Store Credit & Gift Cards) are payment, not coupons: they never lower the amount that counts and never block a promotion.

A gift through a coupon code

Under 3. Exclusions and limits, Coupon code, the field Only with these coupon codes takes one or more existing WooCommerce coupon codes, separated by commas. With codes there, the promotion counts only while one of them is in the cart; everything else the promotion asks for still has to match. Leave it empty (the start) for a promotion without a code.

Worked example: a tote bag for newsletter readers

Harbor & Pine's newsletter offers a free canvas tote with any order of $40 or more and the code TOTEFALL. First a coupon in Coupons: code totefall, Fixed cart discount, amount 0, Limit per customer 1 (WooCommerce's own coupon screen calls it Usage limit per user). Then the promotion:

Field Value
What kind of deal? Spend an amount, get a reward
Amount to spend 40
Gift product Canvas Tote
Only with these coupon codes totefall
Coupon coexistence (under Advanced behavior and limits) Do not combine with coupons

A shopper with $52 of products sees no tote and no progress line. They type TOTEFALL in the cart: WooCommerce accepts the code (it takes nothing off), and the tote is added at $0.00. If they also type the store's 15% code AUTUMN15, the tote goes (the promotion does not combine with other coupons); removing AUTUMN15 brings it back. After the order, TOTEFALL is used up for that customer, so their next cart cannot use it and gets no tote.

The Promotion Preview has Coupon codes applied for this: type totefall to see the promotion earn the tote; without it the result says "This promotion counts only while one of its coupon codes is applied."

Coupons in the same place

The Coupons area lists your ordinary WooCommerce coupons (All, Enabled, Disabled, Trash; 20 a page) with their code, discount, status, uses and expiry. New basic coupon and Basic edit cover the everyday fields: code (left empty, one is made for you), discount type (percentage, fixed cart, fixed product), amount, an internal note, expiry date, minimum and maximum spend, total and per-customer use limits, Enabled, and Do not combine with other coupons. For anything else (product or email restrictions, for example) use WooCommerce's own coupon editor; it is the same coupon.

When two promotions match the same cart

Each promotion has an Evaluation order number: smaller numbers win when promotions compete, and with equal numbers the older promotion wins. Combine with other gift promotions? (under Advanced behavior and limits) decides whether a promotion is given together with others (Yes — combine with other promotions) or competes (No — make this promotion compete); Use the store default follows Default promotion combining on Settings (Combine promotions by default at the start). Competing promotions with the same Competition group (optional) compete only with each other: the first one earned (smallest number) wins. A competing promotion without a group competes with every other promotion. The order is yours, not "the most valuable gift".

Business customers

If you also run AffStackDev B2B: business accounts (waiting, approved or on hold) do not get consumer gifts, also when their business discount is zero. They see no gift box at all.

Every setting on the Settings tab

Promotion Settings: the defaults every promotion starts from
Promotion Settings: the defaults every promotion starts from (the top of the screen; select the picture to see all of it)
Setting At the start What it does
Admin display mode Enhanced AffStackDev workspace Performance / PHP pages loads ordinary pages with fewer scripts; both keep the same layout and save the same promotions.
Excluded products, Excluded categories, Excluded tags, Excluded product types, Excluded attributes or groupings empty Products that never count toward a promotion and are never given, in every promotion.
Sale products, Virtual products, Downloadable products allowed Whether such products count by default; each promotion can follow or override it.
Gift cards off "Count gift card purchases toward promotions." A gift card is never given as a free gift.
Coupon coexistence on "Allow WooCommerce coupons alongside gift promotions by default."
Reward value basis Current active price The price a gift's maximum value is measured against (or Regular price).
Coupon spend basis After coupon discounts Whether coupons lower the amount that counts.
Default promotion combining Combine promotions by default What Use the store default means in a promotion (or Do not combine promotions by default).
Customer-facing label Free Gifts The heading of the gift box in the cart and at checkout ("For example: Free Gifts, Freebies, or Rewards.").
Policy page none The page that lists the current promotions; Create policy page makes a draft for you (Telling shoppers about the offer).
Refund review warning on A private order note when a refund may mean the customer no longer qualifies (A refund).
Uninstall behavior off When ticked, deleting the plugin also deletes its promotions and settings. WooCommerce products, coupons, customers, orders and the campaign usage history always stay.

Below the settings, B2B / Commerce Core shows whether the license allows promotions (Promotion permission), whether campaign limits can be counted (Campaign allowance storage; if not, limited promotions give no gifts until your host fixes the database table) and whether B2B is connected (Integration status).