WooCommerce discount codes: first order, newsletter and spend threshold
You create WooCommerce discount codes in Marketing → Coupons. Each coupon is a code, a discount type (percentage, fixed cart or fixed product amount), a value and conditions: minimum spend, expiry date, usage limit. A first-order code or one for newsletter sign-ups uses the same fields, but WooCommerce won't check by itself whether it is the first order.
Author: The TellMyShop team. A guide for WordPress site and WooCommerce store owners: the cause, the manual fix and the same work in a chat conversation.
Last updated: · 6 min read
Before you create your first coupon
Check two things, because without them even a well set-up code won't work.
- Coupons are enabled. In WooCommerce → Settings → General there is a setting for using coupon codes. Without it the basket won't show the code field.
- You know how much you can give away. Work out the margin on the products that most often end up in a basket with a code. A percentage discount on the whole basket also covers the products with the lowest margin.
All coupon fields are described in the WooCommerce coupon management documentation. The most important ones in brief:
| Field | Where in the coupon | What it does |
|---|---|---|
| Discount type | General | percentage of the basket, fixed cart amount or fixed amount per product |
| Coupon amount | General | the discount value as a percentage or an amount |
| Allow free shipping | General | only works with a free shipping method set to require a coupon |
| Coupon expiry date | General | the code stops working at the start of that day |
| Minimum and maximum spend | Usage restriction | the basket value range in which the code works |
| Individual use only | Usage restriction | doesn't combine with other codes |
| Exclude sale items | Usage restriction | gives no discount on products already reduced |
| Products and categories | Usage restriction | narrows the code to selected products or excludes them |
| Allowed emails | Usage restriction | code only for the listed addresses, which is personal data |
| Usage limit per coupon and per user | Usage limits | how many times in total and how many times per person |
Codes are not case-sensitive, so “WELCOME10” and “welcome10” are the same code.
Three recipes for the codes stores make most often
The values in the recipes are examples. Adjust them to your margins and shipping costs.
Recipe 1. A welcome code for the first order. One code you give on the site or in a pop-up for new visitors.
- Code: WELCOME10, percentage discount, amount 10.
- Minimum spend: for example €100, so the code doesn't eat the margin on small orders.
- Tick Exclude sale items and Individual use only.
- Usage limit per user: 1. WooCommerce checks this by account or email address.
- Expiry date: optional, if the code is part of a campaign.
To be fair: a regular customer buying with this code for the first time can enter it too. A real “first order in the store” condition needs a plugin that extends coupons.
Recipe 2. A pool of single-use codes for the newsletter. Each subscriber gets their own code that works once. The code doesn't end up on coupon sites.
- Generate a pool of codes with one prefix, for example NEWS, and the same conditions.
- Each code: usage limit per coupon 1.
- Discount and minimum spend as in recipe 1.
- Expiry date, for example 30 days after sending, so the code encourages buying now.
- Upload the codes to your newsletter tool, which assigns them to subscribers one by one.
In the WooCommerce admin alone each code is a separate coupon, so a pool of fifty codes means the same clicking fifty times. Newsletter sign-up terms and consent are a separate topic this post doesn't cover.
Recipe 3. An amount off above a basket threshold. For example €20 off an order of €200. It raises the average basket value and is easy to work out.
- Code: 20OFF200, fixed cart discount, amount 20.
- Minimum spend: 200.
- Individual use only.
- Expiry date: the day after the last day of the campaign.
If you'd rather give free shipping than a discount, read the post on free shipping in WooCommerce. When a code doesn't work for a customer, go through the checklist in the piece on why a WooCommerce coupon isn't working.
Discount codes and the lowest 30-day price
The EU Omnibus rules require you to show the lowest price from the 30 days before a reduction when you announce a price reduction on a product. The rules come from the Omnibus Directive (EU) 2019/2161. National authorities interpret them, and in Poland, for example, the competition authority's guidance also covers discount codes, as summarised in KPMG's commentary on that guidance (in Polish). Check the guidance in your own country.
In practice: a code announced in general terms, for the whole basket, is a different situation from an advert saying “this jacket for €199 with the code”. With the second, check whether you need to show the lowest 30-day price. This post doesn't replace legal advice: if in doubt, ask a lawyer.
How the chat creates coupons from your conditions
The TellMyShop plugin for WordPress and WooCommerce connects your store to your chat (Claude or ChatGPT). Coupons belong to the Sales switch, which you turn on yourself in the plugin panel and which stays on until you turn it off. Without it, the chat in TellMyShop Pro prepares a plan and a preview, but saves nothing. TellMyShop Free neither reads nor creates coupons.
With the switch on, the chat creates a coupon from conditions described in plain words, changes existing ones, shows a list of active and expired codes with usage counts and generates up to 50 single-use codes with a prefix at once.
You: Make 50 single-use codes for the newsletter: 10 percent off from €100, not on sale items, valid until the end of November.
Your chat: Preview of the new pool:
The threshold amount includes tax, like the prices in your store. Save? (yes / no)
You: Yes.
Your chat: Saved. I have 50 codes, and I'll list them in one block for you to paste into your newsletter tool.
old version: none
new version: 50 codes NEWS-XXXXXXXX, each single-use
new version: 10 percent discount, from €100 incl. tax
new version: doesn't apply to sale items, doesn't combine with other codes
new version: expiry date 2026-12-01, so the code works until the end of 30 November
The values in the conversation are examples. Every coupon goes into the change history. Undoing the creation deletes the coupon if nobody has used it yet. A code someone has already used isn't deleted by the chat; it ends it with an expiry date instead. You can undo most changes with one request.
What TellMyShop doesn't do: it doesn't send codes to customers and doesn't sign anyone up to the newsletter. You pass the codes on yourself, through your email tool. Restricting a code to email addresses involves personal data. The chat's access to customer data is off by default in the plugin, so you provide the addresses yourself.
When the codes are part of a bigger campaign, also see the pieces on Black Friday in WooCommerce and the sale schedule. You'll find Pro prices on the pricing page, and the whole plugin on the TellMyShop for WordPress and WooCommerce page. All guides are on the blog.
Questions and answers
Where in WooCommerce do I add a discount code?
In Marketing → Coupons, with the Add coupon button. If you don't see that item or codes don't work in the basket, check in WooCommerce → Settings → General that the use of coupon codes is enabled.
Will WooCommerce check that it is the customer's first order?
Not by itself. Standard WooCommerce has no first-order condition. The closest options are a limit of one use per user and single-use codes sent to new people. A full first-order condition only comes with plugins that extend coupons.
Until when does a code with an expiry date work?
Until the end of the day before the expiry date. A code dated 30 November stops working at midnight, when 30 November begins. If the code should work for the whole last day of the campaign, enter the following day's date.
Does a discount code fall under the lowest 30-day price rule?
Under the EU Omnibus rules, national guidance (for example in Poland) also covers discount codes, and the answer depends on how you announce the reduction. When your code advert gives a lower price for a specific product, check whether you must show the lowest price from the last 30 days. If in doubt, ask a lawyer.
Will the chat create a coupon for me?
Yes, in TellMyShop Pro with the Sales switch on. It creates, changes and disables coupons and generates up to 50 single-use codes at once, always with a preview before saving. TellMyShop Free has no access to coupons.
WordPress is a trademark of the WordPress Foundation. WooCommerce is a trademark of Automattic Inc. Claude is a trademark of Anthropic PBC. ChatGPT and OpenAI are trademarks of OpenAI. TellMyShop is not affiliated with these companies.