Skip to content

Discounts

Steps for

Discounts sit on top of price lists, so you can run a promotion without changing anyone's prices. To try them as a customer, sign in to our B2B demo store (opens in a new tab), add some products to your cart and use the coupon code SAVE10. New to SparkLayer? Speak to our team (opens in a new tab).

How discounts work

Every discount has three parts:

  • A type and reward: what the customer gets, such as 20% off the order or 5% off 24 or more units.
  • Requirements: who qualifies and when, such as a customer group, a date range, a minimum spend or a coupon code.
  • How it's applied: automatically, or when the customer enters a coupon code.
How a discount is applied to an order

Customer builds a cart

Signed in, with their B2B prices
(this flows forward)

Requirements checked

Group, dates, coupon, order limits
(this flows forward)

Reward applied

To the net sub-total, before tax and shipping
(this flows forward)

Order placed

With the discount details saved on the order
How it's appliedWhat happens
AutomaticSparkLayer applies the discount when the order meets the requirements you've set, for example spend over $1,000 and get $100 off.
Coupon codeSparkLayer applies the discount when the customer enters a coupon code in the My Cart Interface. See Cart and checkout for what you can customise.

What a discount is calculated on

An amount off an order comes off the order's sub-total, which is net of tax and excludes shipping. For example, if the sub-total is $200.00 and the discount is $100 off, the cart shows "Discounts applied -$100". Tax is calculated in the final step of checkout.

Discounts apply whichever payment method the customer chooses.

How many discounts apply to an order

By default, only one discount applies to an order. To let a discount be used alongside others, turn on its Compatible discounts requirement (see Allow discounts to be combined).

Discount types

Each discount has one type, which decides the reward the customer gets.

TypeWhat it gives
Give an amount off an orderA percentage or fixed amount off the order's sub-total. This is the default.
Give a free productAdds a product to the order at no cost.
Give a percentage off productsA percentage off specific products.
Give a shipping rewardMoney off shipping, or a fixed shipping charge. Only available if you use SparkLayer shipping rules.
Advanced requirements and rewardsFor example volume tiers: more off as the quantity goes up.
Advanced free productsOne or more free products when the cart meets requirements you set, such as "buy one get one free".

Create a discount

Try itPricing > Discounts
Guided tour

Pricing > Discounts

Walk through a working copy of Pricing > Discounts, step by step. Nothing you do here changes your store.

  1. Go to Pricing,Discounts (opens in your SparkLayer Dashboard in a new tab) and click Create discount, or click a ready-made discount to start from it.
  2. Under Summary, leave Enable this discount on.
  3. Enter a Discount internal name (for you), a Discount handle (or ID) (a short unique ID, such as vip-20-off) and a Discount public name (what customers see). See Summary settings.
  4. Under Type, choose a discount type. The Reward card changes to match.
  5. Set up the reward. See the section for your type below.
  6. Under Requirements, tick any requirements you need, such as Coupon codes or Customer groups. See Limit who can use a discount and when.
  7. Click Save in the save bar.

To change a discount later, click its name at Pricing,Discounts (opens in your SparkLayer Dashboard in a new tab), make your changes and click Save.

Summary settings

SettingWhat it does
Enable this discountTurns the discount on or off. A discount is only active when it's enabled and today falls within its schedule.
Discount internal nameA name for your own use. Only visible to you.
Discount handle (or ID)Identifies the discount when an order is placed. It appears in the order's discount data (discountSlugs).
Discount public nameShown to buyers when the discount applies to their order, for example "20% off your first B2B order".

To show customers a longer description under the public name, your developer can add one: see Show customers a description.

Give an amount off an order

  1. Create a discount and choose Give an amount off an order under Type.
  2. Under Reward, choose Percentage discount (e.g. 10% off) or Fixed amount discount (e.g. US$100 off).
  3. Enter the Percentage off (between 1 and 100) or the Amount off.

The reward is applied to the order's sub-total, excluding tax and shipping ("net"). For a fixed amount, check the currency requirement.

Set up volume tiers

Volume tiers give more off as the quantity goes up, for example 5% off 24 or more units and 10% off 96 or more.

  1. Create a discount and choose Advanced requirements and rewards under Type.
  2. Under Reward, set the first tier's Minimum units and Discount percentage. It starts at 24+ units and 5%.
  3. Click Add tier for each further tier, and use the bin icon to remove one.

On the Discounts screen, these show with the type Volume tiers. To combine them with quantity pricing and pack sizes, follow Run volume pricing and promotions for trade customers.

Give a free product, products off or a shipping reward

Set up these types the same way: choose the type under Type, then set up the reward.

TypeWhat you set
Give a free productThe SKU of the product to add to the cart at no cost. It must be a valid SKU, and a different product from those already in the order.
Give a percentage off productsThe SKUs to discount, and the percentage off each.
Give a shipping rewardThe shipping method, and a percentage off, a fixed amount off, or a fixed charge. The amount is net of tax.
Advanced free productsThe requirements the cart must meet, the free products and quantities, and whether they're added once, every time the requirements are met, or up to a limit.

Restrict a discount to certain products

Use a rule for a collection discount, or a discount on a product range or category. Under Rules, click New rule to add the products, collections or tags the cart must include before the discount applies.

For a tag-based discount, give every product in the range the same tag in your store, such as dog-toy, and choose that tag in the rule. This works for a range that isn't a collection.

Limit who can use a discount and when

Requirements decide who gets a discount and when. A discount only applies when every requirement you've turned on is met.

The Requirements card lists 9 requirements, with a count of how many are on. Tick a requirement to turn it on, then set it up underneath.

RequirementDescription on screenSettings
Coupon codesRequire a coupon code to use this discountAdd a coupon code, then Add coupon
Customer groupsLimit discount to specific customer groupsThe Customer groups to include
SchedulingLimit the discount to a specific date rangeStart date and Expiry date (optional)
Order sub-total limitsRequire a minimum or maximum order sub-totalMinimum order sub-total and Maximum order sub-total
Order item limitsRequire a minimum or maximum number of itemsHow to count the order, Require at least and Up to
Usage limitsLimit number of uses per customerMaximum uses per customer
Exclude customersExclude specific customers from this discountThe Excluded customers
Compatible discountsLet this discount be used alongside othersThe discounts it Can be used with
CurrencyThe buyer must be ordering in a specific currencyThe Currency

Require a coupon code

A coupon code makes a discount manual: it isn't applied until the customer enters the code.

  1. Tick Coupon codes.
  2. Enter the code under Add a coupon code and click Add coupon. Add more codes the same way. Click × on a code to remove it.

With a coupon, the customer clicks Discounts & codes in the cart or the Order Summary, enters the code and clicks Apply (see My Cart). When the order reaches your store, the coupon codes used are in the order's additional notes (see See discount details on an order).

  • Coupon codes are saved in capitals. For example, Code-Abc is saved as CODE-ABC.
  • You can save several coupon codes against one discount, for example CODE-ABC and CODE-123, to promote the same discount in different places.
  • The My Cart Interface accepts up to 3 coupon codes per order. If a customer has 3 coupons applied and adds a 4th, the 4th isn't applied.

Limit a discount to customer groups

By default, a discount applies to all customers. To restrict it to some customer groups:

  1. Tick Customer groups.
  2. Tick one or more groups. Only these groups get the discount.

To apply the discount to everyone again, untick Customer groups.

Schedule a discount

  1. Tick Scheduling.
  2. Choose a Start date and, if the discount should end, an Expiry date (optional), each with a time.
  • The dates use the time zone shown under them, for example Europe/London. For customers in another time zone, adjust the dates and times to match.
  • A time of 00:00 means the start of the selected date, and 23:59 the end.

Set minimum or maximum order requirements

Order sub-total limits set the spend needed to qualify, for example spend over $400 and get 5% off.

  1. Tick Order sub-total limits.
  2. Enter a Minimum order sub-total, a Maximum order sub-total, or both.

The discount applies when the order's sub-total (net of tax and shipping) is between these amounts. A maximum of 100 covers orders up to 99.99.

Order item limits set how many items the order must contain.

  1. Tick Order item limits.
  2. Under How to count the order, choose an option (see below).
  3. Enter Require at least, Up to, or both.
OptionWhat it countsExample: 1 Red Shoe, 5 Blue Shoes, 4 Green Shoes
Quantity across all line itemsThe total quantity of items across all products.10
Number of line itemsThe number of different items (lines) in the order.3

Limit uses per customer

  1. Tick Usage limits.
  2. Enter the Maximum uses per customer, for example 1 for a one-time discount.

Once a customer has used the discount this many times, it stops applying to their orders.

Exclude customers

  1. Tick Exclude customers.
  2. Under Excluded customers, tick the customers who should never get this discount. Each is listed by name and company.

Set the discount currency

If you have price lists in several currencies, you can limit a discount to one of them.

  1. Tick Currency.
  2. Choose the Currency, for example GBP.

The customer must be ordering in this currency for the discount to apply.

Allow discounts to be combined

  1. Tick Compatible discounts.
  2. Under Can be used with, tick the discounts that can be used alongside this one in the same order. If you don't tick any, it can be combined with any discount.

Once your discounts are live, you manage them from the Discounts screen.

The Discounts screen

Pricing,Discounts (opens in your SparkLayer Dashboard in a new tab) lists your discounts, with Create discount at the top.

ColumnWhat it shows
DiscountThe discount's name, with a short description underneath, such as "Code TRADE10: 10% off" or "24+ units: 5% off, 96+ units: 10% off". Click it to edit the discount.
TypeOrder discount, Volume tiers or Coupon code.
Customer groupsThe groups the discount is limited to, or All.
StatusActive or Paused.
UsesHow many times the discount has been used.

With no discounts yet, the screen offers two ready-made discounts you can edit before saving: 20% off with coupon code 20-OFF and $100 off orders over $1,000.

Pause or delete a discount

To stop a discount for now, pause it; to remove it for good, delete it. Open the discount from Pricing,Discounts (opens in your SparkLayer Dashboard in a new tab) and use More actions at the top of the page:

ActionWhat happens
Pause discountStops the discount applying. Its status changes to Paused. Click Turn on discount to start it again.
Delete discountBuyers stop getting it straight away. Orders that already used it keep their discount. This can't be undone. Confirm with Delete discount.

See discount details on an order

When a customer uses a discount, SparkLayer saves details of it on the order:

  • The coupon codes applied.
  • The handles (IDs) of the discounts applied.
  • The order's value before the discount.
  • The amount taken off by the discount.

All amounts are in the currency the customer ordered in.

The details are in the Additional details section of the Shopify order. You'll see:

  • B2B Discount Coupon Codes: a comma-separated list of the coupon codes used, kept separate so you can see it at a glance.
  • sparkDiscountData: the rest of the discount data, including the SKUs ordered, net pricing and the internal ID of the discount.
Discount data for your developer

In the Shopify API, the details are in note_attributes, and the discount data is a JSON string. For example:

{"subTotalPreDiscount":{"net":"10.00"},"subTotalDiscount":{"net":"5.00"},"lineItemDiscounts":[{"preDiscount":{"net":"10.00"},"discount":{"net":"5.00"},"sku":"t-shirt","itemKey":"73199196ee530866c9a5db11f50c1442"}],"discountSlugs":["50-off"]}

To read this data with code, use the Shopify API (see the Shopify Order API reference (opens in a new tab)).

Report on discount usage

SparkLayer doesn't have built-in reporting on discount usage.

Shopify only

On Shopify, use Shopify Flow (opens in a new tab), Shopify's automation tool, to tag orders that use a discount and then report on those tags. Download our example Shopify flow (opens in a new tab) and edit it to match your discounts. It works like this:

  1. An order is created by the customer (for example a draft order). The flow starts on Draft order created.
  2. The flow checks for a discount by looking at the B2B Discount Data field on the order (shown under Additional details in Shopify). It checks that a custom attribute key equals "B2B Discount Data" and its value includes a specific discount ID from discountSlugs, for example free-product-test.
  3. The flow tags the order, for example with b2b-free-product-test, using Add draft order tags.
  4. You report on the tag: filter the Orders section (opens in a new tab) by the tag, or use the Analytics section (opens in a new tab) in Shopify.

To find a discount's ID, edit the discount in SparkLayer and look at Discount handle (or ID).

Limitations

ItemLimitation
Combining discountsBy default, a customer can only apply one discount to an order. Use Compatible discounts to let discounts be used together.
Payment-specific discountsYou can't base a discount on the payment method, for example $10 off if the customer pays by card.
Discounts from a URLYou can't apply a discount from a link, for example $100 off for visiting mystore.com/?discount=ABC.
Platform discountsYour platform's own discounts can't be used alongside SparkLayer (see Compare platforms).

Plan availability

Discounts are part of the Growth plan and above, including the 14-day Growth trial. Every discount type and requirement is included. See Plans and features and SparkLayer pricing (opens in a new tab).

On Basic and Starter:

  • The Discounts screen shows B2B discounts are part of Growth. Click Try Growth free to start a trial.
  • You can still open Create discount and fill it in. When you save, Advanced discounts opens: click Try Growth free for 14 days to start a trial and keep your discount, or Book a 15-min demo.

See Your plan and usage for how trials work.

For developers

These changes are made in your SparkLayer Core Script, so they're usually done by your developer or agency. You don't need them to set up or run discounts.

Show customers a description

A discount description can be shown to customers when a discount is applied to their order, under its public name. For example: "For this month only, all customers will get 20% off their first order!" Add a language string of discount.[handle].description to your Core Script, replacing [handle] with the discount's Discount handle (or ID). See Languages and international for how language strings work.

Core Script
/* [handle] should be replaced with the discount's handle,
shown in the discount's Summary card. */
translations: {
  en: {
    "discount.[handle].description": "Include a description here",
  }
},

Change the cart text

To change the discount text customers see in the My Cart Interface, such as the coupon field's placeholder or the success message, add these language strings to your Core Script and edit the values. See Languages and international.

Core Script
translations: {
  en: {
     "cart.checkout.coupons.apply": "Apply",
     "cart.checkout.coupons.input-placeholder": "Enter discount code here and click 'Apply'",
     "cart.checkout.coupons.not-found": "Discount code ''{couponCode}'' not found",
     "cart.checkout.coupons.already-applied": "Discount code ''{couponCode}'' already applied",
     "cart.checkout.coupons.successful-apply": "You've successfully added discount code ''{couponCode}''!",
     "cart.checkout.coupons.max-reached": "You can only add a maximum of 3 discount codes",
     "cart.checkout.discount.cta": "Enter a discount here or view discounts",
     "cart.checkout.discount.success-message": "Discounts have successfully been applied to your order",
     "cart.checkout.discount.totals-row-text": "Discounts Applied",
     "cart.checkout.discount.no-of-discounts-applied": "{numberOf} {numberOf, plural, =1 {discount applied} other {discounts applied}}"
  }
},  

Troubleshooting and FAQs

Was this page helpful?

Last updated