Skip to content

Recipe Templates

When you click + Create Discount, the recipe gallery opens with templates grouped by the mechanism they use. The Common mechanisms group has six subcategories — % / £ discounts, Spend & save / tiers, Customer segments, Coupon-triggered, BOGO / bundle, Time / day — followed by a Seasonal · pre-filled row and a single dashed-border Build any discount tile.

Pick a recipe and Dino opens the rule editor pre-filled with sensible defaults for that pattern — including the matching Reward Type in the Rewards section, so a Fixed $ Off template lands on the matching dropdown value. The recipe name appears as a coloured type pill at the top of the editor so you always know what shape you’re working in; switch recipes at any time and the pill updates with it.

The canonical recipe list lives in src/components/recipes/templateDefinitions.js. The catalog below mirrors the shipping set 1:1 — if a row is here, the gallery shows the card; if a row is missing, the recipe isn’t shipping. All 27 mechanism tiles, plus the dashed “Build any discount” tile, are selectable today. The gift-product picker and the bundle-quantity (required_qty) editor have both shipped, so the Free gift, Mix & match bundle, Meal deal, and Mother’s Day gift tiles are fully live — nothing in the gallery is greyed-out.

Picking a recipe does five things in one click:

  1. Reward Type pre-selected. The Rewards-section dropdown opens on the matching reward kind (% Off / Fixed $ Off / Free Shipping / Free Item). Tier rows inherit the same reward type so the first tier is ready to fill in.
  2. Required fields highlighted. Each template lists its required substitution fields — the amounts and pickers you need to fill in before the rule does anything (e.g. “Percent off”, “Pick day(s)”, “Pick a category”). The matching inputs in the editor pick up a “required” pill until you fill them.
  3. Targeting preset injected. Recipes that imply targeting (First-order welcome, VIP, Repeat customer, Day-of-week) drop a starter leaf into the Who is this for? / When does it apply? sections (or the Eligible Items sub-block of What triggers it? for product-scoped recipes) so the rule fires the way the template name implies. The starter leaf is a real condition you can edit — recipes are a thin layer, not a hidden code path.
  4. Cart label seeded. A sensible default cart-line label can be written into the Messaging section’s cart-label field, or you can leave the field blank and let it fall back to the localised string “Discount” at render time. Always editable.
  5. Plain English summary appears. The green box above the Rewards section reads the configuration back as a sentence in real time. As you fill in the required fields, the sentence completes itself — “Spend $100 → 10% off the cart” — so the rule is self-checking before you preview it.

Open the Cart Preview in the right rail to confirm the rule fires against a simulated cart before you publish. See Testing with Cart Preview for how to drive it.


The most-recognised mental model: a percent or fixed amount off something.

Single flat percentage off every order.

  • Use case: site-wide sales, permanent loyalty discounts, simple promotions with no spend threshold.
  • Example: “10% off every purchase.”
  • Plain English summary: “10% off the cart.”
  • Quirks: the simplest recipe in the gallery. Combine with Who is this for? to narrow to a role, or with When does it apply? to time-box it.

Single flat fixed-amount off every order. The card label substitutes the store’s currency symbol.

  • Use case: “£10 off” promotions where customers want to see exactly what they save.
  • Example: “£10 off every order.”
  • Plain English summary: “£10 off the cart.”
  • Quirks: required-substitution includes the Currency zone field — fixed amounts depend on currency, so the recipe asks you to pick a zone up front. Cart label can use the [ccy] token so the same rule renders as “£10 Off” or “€10 Off” in multi-currency stores.

Percentage off a chosen category (or product list).

  • Use case: category-wide promotions (“20% off all winter gear”), holiday sales, brand spotlights, end-of-line clearance.
  • Example: “20% off all accessories.”
  • Plain English summary: “20% off accessories.”
  • Quirks: Dino does not modify catalog price — the discount applies at cart time, and the product page shows a crossed-out original + discounted price via the Product page block in the Messaging section. The original price stays in WooCommerce for reporting; the discount is the source of truth for “what the customer paid.”

The customer crosses a spend or quantity threshold to unlock a deal.

Percentage off once a cart spend threshold is met. The card is labelled “Spend threshold cart discount” in the gallery.

  • Use case: classic “spend X get Y% off” promotions. AOV lift without giving away the percentage on small orders.
  • Example: “Spend $50, get 10% off.”
  • Plain English summary: “Spend $50 → 10% off the cart.”
  • Quirks: the spend threshold sits in the What triggers it? section. The Spend-more nudge in the Messaging section auto-targets the threshold so the storefront can show “Spend $5 more for 10% off!” as the cart approaches it.

Multi-tier percentage by cart subtotal — the more they spend, the more they save.

  • Use case: graduated AOV lift, “spend more save more” seasonal sales, tiered loyalty.
  • Example: “Spend $100 → 5%, $200 → 10%, $500 → 15%.”
  • Plain English summary: “Spend $100 → 5% off, spend $200 → 10% off, spend $500 → 15% off.”
  • Quirks: customers always get the best tier they qualify for — tier order in the editor is for display only. The spend-more nudge picks up the next tier above the current spend, not just the lowest. Click Add Tier to add levels; there is no fixed maximum.

Free delivery once a spend threshold is met.

  • Use case: the highest-ROI nudge in DTC — shoppers will add items to clear a shipping threshold more reliably than for a percentage discount.
  • Example: “Free shipping over $50.”
  • Plain English summary: “Spend $50 → free shipping.”
  • Quirks: Dino sets the shipping line to zero rather than swapping shipping methods, so it works with any WooCommerce shipping setup. The spend-more nudge (“Add $X for free shipping”) is the conversion driver — keep it on.

Per-product quantity tiers — “Buy 5 → 10% off, buy 10 → 20% off.”

  • Use case: wholesale / B2B pricing inside a single store, bulk consumables (coffee, vitamins, candles).
  • Example: “Buy 5 → 10% off, buy 10 → 20% off.”
  • Plain English summary: “Buy 5+ of any of these items → 10% off, buy 10+ → 20% off.”
  • Quirks: quantity tiers are evaluated per-product, not cart-wide — five different products in the cart don’t combine into a single 5-unit tier. Use the Eligible Items sub-block inside What triggers it? to scope the rule to the pool of qualifying products. The Product page display can show the whole tier table on the product page (great for conversion — customers see the bulk price before deciding how many to buy).

Only fires for customers who match a segment.

Exclusive rate for a specific WordPress user role.

  • Use case: wholesale tiers, member-only pricing, employee discounts.
  • Example: “Wholesale customers see 20% off.”
  • Plain English summary: “Wholesale customers → 20% off the cart.”
  • Quirks: Dino reads the WordPress user role directly — you can create a “Wholesale” role in WordPress (or with any role plugin) and target it without a separate B2B plugin. Combine with Where does it apply? for region-specific wholesale rates.

Discount that only fires on a shopper’s first order.

  • Use case: “10% off your first order” — the DTC standard new-customer hook.
  • Example: “15% off your first order.”
  • Plain English summary: “First-time customers → 15% off the cart.”
  • Quirks: the preset enables the First-time customers row in Who is this for?, which writes a past_order_count == 0 targeting leaf — the BYO-rebuild shape that handles guests correctly. You don’t have to touch the leaf directly; the preset drops it in.

Discount for customers with N+ prior orders.

  • Use case: loyalty rewards (“10% off your 3rd order onwards”), retention nudges, VIP graduation.
  • Example: “10% off your 3rd order onwards.”
  • Plain English summary: “Customers with 3+ past orders → 10% off the cart.”
  • Quirks: the past-order count uses the same engine path as First-order welcome (mirrored conditions). Combine with Currency in Who is this for? to give loyalty pricing per-currency.

The customer enters a code at checkout to activate the discount.

Percentage off when a code is applied.

  • Use case: newsletter / influencer codes, recovery codes, segmented promotions.
  • Example: “Code SAVE15 for 15% off.”
  • Plain English summary: “Apply code SAVE15 → 15% off the cart.”
  • Quirks: any non-coupon recipe can be turned into a coupon-activated one by adding a Coupon Code condition in What triggers it?. The coupon-triggered cards are shortcuts for that flow — same engine, different starting point. Use the Bulk Pool feature in the Coupons tab for one-use codes.

Fixed amount off when a code is applied. Card label substitutes the store’s currency symbol.

  • Use case: “£10 off your first order” codes, win-back vouchers, customer-service make-goods.
  • Example: “Code WELCOME for £10 off.”
  • Plain English summary: “Apply code WELCOME → £10 off the cart.”
  • Quirks: same [ccy] token support as the auto fixed-amount recipe — the same code can render “£10 Off” or “€10 Off” across currencies. Cap with Global Settings if you need a maximum-discount safety net.

Free shipping when a code is applied.

  • Use case: shipping make-goods (delayed orders), launch incentives, partner channels that need free shipping on demand.
  • Example: “Code FREESHIP for free delivery.”
  • Plain English summary: “Apply code FREESHIP → free shipping.”
  • Quirks: combine with Where does it apply? to scope free shipping to specific zones — useful when you want to offer free shipping in your home country but not internationally.

Free gift unlocked by a coupon code.

  • Use case: sampler campaigns, influencer “drops”, fixed-window gift promotions.
  • Example: “Code SAMPLE → free tote.”
  • Plain English summary: “Apply code SAMPLE → free X added to cart.”
  • Quirks: pick the gift product in the Rewards section’s gift-product picker; the coupon code is a required-substitution chip in What triggers it?. The gift drops into the cart as a $0.00 line once the code is applied.

Three distinct BOGO mechanics, plus a mix-and-match bundle, a multi-pool meal deal, and a no-coupon free gift.

Buy multiple of the same SKU — the cheapest qualifying unit is free.

  • Use case: classic same-item BOGOF on a specific product or category, “buy 3 hats, cheapest free”.
  • Example: “Buy 2 Hats, cheapest free.”
  • Plain English summary: “Buy 2 of these items → cheapest one free.”
  • Quirks: matching mode is same_sku — five different products in the cart don’t satisfy the condition; the customer needs two units of the same SKU. Cart label clarifies “cheapest free” so shoppers don’t pick the wrong pair.

Trigger product → gift product gift-with-purchase. Buy a specific item, get a different item free.

  • Use case: gift-with-purchase campaigns (“Buy a sofa, get a cushion”), accessory pairings, sample distribution.
  • Example: “Buy a Sofa, get a free cushion.”
  • Plain English summary: “Buy [trigger] → free [gift] added to cart.”
  • Quirks: required-substitution asks for two products — the trigger product (what unlocks the gift) and the gift category or product (what gets added free). This is not “buy two of the same SKU, cheapest free”; for that, pick BOGO same item.

Buy any 2 from a pool of eligible products — the cheaper of the two is free.

  • Use case: “any two t-shirts, cheaper free” — cross-sell within a curated pool of SKUs.
  • Example: “Pick any 2 from a pool — cheapest free.”
  • Plain English summary: “Buy any 2 of these items → cheaper one free.”
  • Quirks: matching mode is all — different SKUs from the same pool count. Required-substitution is the Eligible products picker. Cart label and product-page display both call out the “cheapest free” rule so shoppers don’t pick the wrong pair.

Mix-and-match fixed bundle price.

  • Use case: “any 3 for $25” multi-buys, gift-set price points, clearance lots.
  • Example: “Any 3 candles for $25.”
  • Plain English summary: “Any 3 of these items → $25 total.”
  • Quirks: set the bundle size (required_qty) and the fixed bundle price in the editor, then scope the eligible pool via the Eligible Items sub-block of What triggers it?. The bundle price applies when the cart holds exactly the qualifying quantity.

Build-your-own combo — take a set number of items from each of several pools and pay one fixed combo price.

  • Use case: “Main + Side + Drink for £5” meal deals, build-a-box bundles, fixed-price combos drawn from curated pools.
  • Example: “Any main + any side + any drink for £5.”
  • Plain English summary: “1 from Mains + 1 from Sides + 1 from Drinks → £5 total.”
  • Quirks: unlike Mix & match (one pool, any N items), the meal deal uses multiple pools each with its own quantity — the customer takes the set number from every pool. Pools, per-pool quantities, and the combo price are edited inline in the pool-stack cards in the Rewards section. Runs on the pooled_match allocator.

Spend X, automatically add a free product to the cart (no coupon required).

  • Use case: “free sample with $50 spend”, subscription-style “free gift this month”, promotional bundling.
  • Example: “Free tote over $75.”
  • Plain English summary: “Spend $75 → free X added to cart.”
  • Quirks: no coupon required — the gift is added automatically once the spend threshold is met. Pick the gift product in the Rewards section’s gift-product picker; it appears as a $0.00 cart line.

The rule fires inside a time window.

Discount that fires on chosen weekdays.

  • Use case: “Wine Wednesday”, “Taco Tuesday”, weekday-only category sales.
  • Example: “20% off wine on Wednesdays.”
  • Plain English summary: “On Wed → 20% off wine.”
  • Quirks: the weekday picker is a required-substitution chip in the When does it apply? section — the rule won’t fire until you pick at least one day. You can pick multiple (e.g. “Sat + Sun”) to make a weekend-only rule.

Percentage off, auto-expires on a date you set.

  • Use case: 24-hour drops, sitewide flash sales, scheduled bursts.
  • Example: “24-hour 25% off sitewide.”
  • Plain English summary: “Until 23:59 Sunday → 25% off the cart.”
  • Quirks: the start_time / end_time sit on the rule itself (visible in When does it apply?). Once the end_time passes, the rule stops firing automatically; no need to disable it manually.

Day-of-week sale preset to Saturday + Sunday.

  • Use case: weekend-only promotions without having to remember the weekday picker.
  • Example: “20% off accessories on weekends.”
  • Plain English summary: “On Sat–Sun → 20% off accessories.”
  • Quirks: mechanically identical to Day-of-week sale with Sat + Sun pre-ticked. Pick this card when “weekend” is the merchant frame; you can still re-pick days in the When section.

Pre-built holiday templates with the typical schedule and copy baked in. Each is a worked example you customise rather than a separate mechanism.

Black Friday preset — % off scheduled for the typical BF window.

  • Use case: Black Friday / Cyber Monday weekend.
  • Example: “20% off everything from Friday → Monday.”
  • Plain English summary: “From Fri → Mon → 20% off the cart.”
  • Quirks: Active from / Active until are required-substitution chips — pick the actual year’s dates. The percentage and category scope are editable; the recipe just gives a structured starting point.

Boxing Day preset — % off scheduled for the typical post-Christmas window.

  • Use case: UK / Commonwealth Boxing Day, December clearance.
  • Example: “30% off clearance December 26 → 31.”
  • Plain English summary: “From Dec 26 → Dec 31 → 30% off clearance.”
  • Quirks: same shape as Black Friday — only the default copy and seasonal framing differ.

Mother’s Day preset — gift or % off, single-day active window.

  • Use case: Mother’s Day campaigns where the active window is one day rather than a multi-day weekend.
  • Example: “Free gift on Mother’s Day.”
  • Plain English summary: “On Mother’s Day → free X added to cart.”
  • Quirks: uses a single Active on date (not a range) — edit to a range if you want a weekend rather than a single day. Shares the free_gift recipe, so the gift product is chosen in the Rewards section’s gift-product picker.

Birthday preset — coupon code + % off, designed for personalised codes.

  • Use case: birthday clubs, ESP-driven personalised codes (“BIRTHDAY-{first_name}”).
  • Example: “Code BIRTHDAY-SAM for 20% off.”
  • Plain English summary: “Apply code BIRTHDAY-SAM → 20% off the cart.”
  • Quirks: the coupon code is a required-substitution chip — fill it from your ESP’s merge tag. Use the Coupons tab with bulk pools for high-volume personalisation.

Start from a blank editor — no preset, no targeting leaf, no required substitutions. The dashed-border tile sits top-right of the gallery.

  • Use case: when none of the recipes fit, or when you’d rather start clean and pick the reward type yourself.
  • Quirks: there is no Plain English sentence until you pick a reward type in Rewards and fill in the basics. The other sections start in their default empty states (Anyone / Always / Anywhere / Auto-applied — with the Eligible Items sub-block defaulting to “All items”) — exactly the same as customising any other recipe down to its base.

Every recipe is just a starting point. After the editor opens with the pre-filled settings, you can change anything:

  • Adjust the discount amounts and tiers in Rewards
  • Add targeting in Who is this for?, When does it apply?, Where does it apply?, and What triggers it? (which also houses the Eligible Items sub-block for products / categories / SKUs / attributes)
  • Customise the cart-line label, product-page display, and spend-more nudge in the Messaging section
  • Set a schedule in When does it apply?
  • Verify with Cart Preview in the right rail before publishing

The recipe saves you from starting with a blank form — but nothing is locked in.