Write down each code's rules before creating it, then set them in the shop: no combining unless intended, sale items excluded where needed, use limits, and an end date and time. Test every combination with real orders before the sale.

A code that did more than intended

A holiday code goes out in the newsletter: twenty percent off.

By Saturday, orders are arriving with the code applied to items already on sale, combined with a free shipping code and a loyalty discount, from addresses that were never on the mailing list.

None of it is fraud. The shop system did exactly what it was told, and nobody told it much.

Many shop systems create a coupon with generous defaults: it combines with other offers, applies to everything, works any number of times and never expires.

With Black Friday on Friday and Cyber Monday next week, this is when customers test those defaults.

How codes get out of hand

The last catches owners by surprise. Coupon websites collect codes from newsletters, receipts and social posts and publish them, and a code with no limits works for everyone who finds it.

Decide the rules first

Before creating a code, write down what it is for: who should be able to use it, on which products, whether it may be combined with anything, how many times, and exactly when it starts and stops.

That note is the specification. It takes five minutes, and it turns a vague offer into settings someone can enter and check.

It also forces the questions that cause trouble later: whether twenty percent off includes the sale rack, and whether it counts before or after the free shipping threshold.

The settings that matter

Most shop systems offer similar controls, often on the same screen as the code. In WooCommerce, for example, each coupon has settings for individual use only, excluding sale items, usage limits per coupon and per customer, and an expiry date.

There are usually product and category restrictions too, a minimum spend, and sometimes a list of email addresses allowed to use the code.

Individual use is the setting that stops codes combining, and it stays off unless someone ticks it.

Check how your shop treats automatic discounts, such as quantity pricing from a plugin. They often sit outside the coupon rules and stack regardless.

Expiry dates and the shop's clock

An end date raises two questions most shops never ask. Does the code stop at the start of that day or the end of it, and in which time zone?

A site whose clock is set to universal time ends a midnight sale at four in the afternoon, Pacific time, in winter. And a code set to expire on the 28th may stop working as the 28th begins.

Check the shop's time zone setting, then test a code set to expire today and see when it actually stops.

A worked example

A kids' coding camp runs week-long day camps over spring break and the summer, in rented rooms at two community centres, and takes registrations through a WooCommerce shop on its website.

Last December it sent families a holiday code for fifteen percent off a summer week, suggested as a gift.

Summer weeks already carried an early-bird price until the end of February, and a plugin took a further amount off for each sibling.

The code had been created with the defaults. It stacked on the early-bird price and the sibling discount, worked on spring break camps it was never meant for, and was shared in a parents' group online.

With no end date, it was still being used in April. Some families paid well under the cost of running a week, and the camp honoured every registration.

This year the code covers summer weeks only, cannot be combined with other codes, allows one use per email address and ends at 11:59 p.m. Pacific on December 31.

The sibling discount was set not to apply to orders carrying a code. Before the code went out, someone placed a test order for every combination on a copy of the site.

Test before the code goes out

Every code deserves a few minutes of deliberate misuse before customers try it.

Place test orders with the code alone, with a second code, on a sale item, alongside any automatic discount, below and just above the minimum spend, and after the end time. Do it once on a phone.

Use the payment system's test mode or a staging copy of the shop, or refund the test orders afterwards. Write down what each test should produce, then compare.

Watch the first orders

For the first day of a promotion, open each order and look at the discount lines. The order list in most shops shows which codes were used and what they took off.

Check usage counts daily. A newsletter code showing hundreds of uses overnight has probably escaped.

Decide in advance what you will do if one does: end it early, cap it, or let it run to its limit. Deciding at midnight on a sale day is harder.

Clear out old codes

Codes from past promotions stay in the shop until someone removes them, and a code with no end date still works years later.

After each sale, set an end date on anything still open, delete codes nobody will use again and keep a short list of what is live.

The counter-case

Some shop systems accept only one code per order, which removes the most common way of stacking. Sale items, automatic discounts and missing end dates can still cause trouble there.

A shop running one modest code a year, with no sale prices, has less to test.

For anyone running holiday promotions, though, write the rules down, set them, and test every combination before the code goes out.

Before Friday

  1. Write down each code's rules.
  2. Block combining unless it is intended.
  3. Exclude sale items unless the offer covers them.
  4. Set limits per code and per customer.
  5. Set the end date and check the time zone.
  6. Test every combination with real orders.
  7. Check the first day's orders by hand.

Step six finds the problems the settings screen hides. Defaults, plugins and time zones interact in ways nobody predicts, and a test order shows the actual result.

Codes left behind after a sale are small, but they belong to the same tidy-up as the database that grew to two gigabytes.


Frequently asked questions

Why do coupon codes stack?

Many shop systems create codes with generous defaults: they combine with other offers, apply to sale items, work any number of times and never expire.

What should I decide before creating a code?

Who can use it, on which products, whether it combines with anything, how many times, and exactly when it starts and stops, all written down.

Which setting stops codes combining?

An individual use setting, which is off by default in many systems. Automatic discounts from plugins often sit outside the coupon rules, so check them separately.

Why do codes end at the wrong time?

The end date may mean the start of the day, and the shop's clock may use another time zone. A site on universal time ends a midnight sale mid-afternoon in BC.

How should I test a coupon code?

Place test orders with the code alone, with another code, on a sale item, with automatic discounts, around the minimum spend and after the end time.

What should I do with old codes?

Set an end date on anything still open, delete codes nobody will use again, and keep a short list of the codes that are live.

West Coast Media Solutions Inc. provides web design, web development, hosting, digital marketing, and business consulting to organisations across Canada, drawing on more than twenty-five years in the field.

Holiday codes going out this week?

Send us the rules you intend. We will check the settings and test every combination before customers do.

Start a Conversation