First Order Discount for WooCommerce
A welcome discount for a customer's first order only, with no code to share, checked again when they pay.

What it does
A welcome discount for a customer's first order only, with no code to share, checked again when they pay.
First Order Discount gives a customer a percentage or a fixed amount off their first order, automatically, with no code for anyone to share or type. A customer counts as new when no earlier paid, on-hold, completed or refunded order is found for their account or their email address, and capital letters, plus-tags and Gmail dots are ignored. The check is made in the cart and again when the order is placed, in the block cart and checkout and in the classic ones, so changing the email address at checkout does not get round it. Orders from before you installed it are read in the background, and until that has finished your orders are searched directly, so an existing customer is never mistaken for a new one.
You choose the amount, an optional minimum, whether sale items are left out and what happens when the customer also has a coupon. You can also limit the discount to chosen products or categories, cap what one discount can take off, give bigger carts a bigger discount, add free shipping or a free gift, match a returning customer by address or phone number, and limit the offer by customer role or date. If the licence lapses, nothing is deleted and nobody is given more than before: every limit keeps applying, and the bigger discounts, free shipping and free gift switch off.
See it in action
What the plugin does
- A welcome discount for a customer's first order only, applied automatically with no code to share or type.
- A percentage or a fixed amount off, as you choose.
- An optional minimum cart total before the discount applies.
- A choice to leave items that are already on sale out of the discount.
- A name for the discount line that you choose.
- When the customer also has a coupon: use whichever is worth more, allow both, or use the welcome discount only.
- The discount shown as a coupon-style discount, or as a fee line taking money off if your theme hides discounts.
- A customer is recognised by their account and by their email address, so guests are checked as well.
- Capital letters, plus-tags and Gmail dots are ignored, so jo+shop@gmail.com and J.O@googlemail.com are the same person.
- Paid, on-hold, completed and refunded orders count as earlier orders. Unpaid ones count only if you tick the box for it.
- The check is made in the cart and again when the order is placed, so changing the email address at checkout does not get round it.
- Works in the block cart and checkout and in the classic ones.
- Orders from before you installed the plugin are read in the background, and your orders are searched directly until that has finished.
- Plain-words messages you can edit, for an eligible customer, a discount taken off and a coupon used instead, and a shortcode, [fodwc_message], to show one anywhere.
- Limit the discount to chosen products or categories, or leave some out.
- Cap what one discount can take off.
- A bigger discount for a bigger cart, in tiers you set.
- Free shipping on the first order, on the cheapest delivery rate or on every rate.
- Recognise a returning customer by billing address or phone number as well, if you switch it on.
- Turn away throwaway email domains, from a list you can edit.
- Limit the offer to chosen customer roles, guests included.
- Run the offer between two dates, or only for the first days of an account.
- A free gift added to a first order, from a product you choose.
- A Tools screen to check any customer, rebuild the order record or mark someone as new again.
- A First order box on each order showing what was decided.
- Settings import and export, with the settings above included.
- High-Performance Order Storage compatibility.
- Personal data export and erase support.
- Updates from your PluginCity account, kept coming by your licence key.
Pricing
Every Pro plan is the same plugin with every feature. The only difference is how many sites you can run it on.
Single site
One site, with a year of updates and support.
$39/year
Secure checkout. Cancel any time.
5 sites
Most popularUp to 5 sites, with a year of updates and support.
$79/year
Secure checkout. Cancel any time.
25 sites
Up to 25 sites, with a year of updates and support.
$159/year
Secure checkout. Cancel any time.
Need more than 25 sites? Get in touch about a custom licence.
Frequently asked questions
Can a customer type a code to get the discount?
No. There is no code to share. The discount is applied by the plugin when the customer is eligible, and nothing is applied when they are not, whatever they type.
How does it know a customer is new?
By their account if they are logged in, and by their email address if they are not. A customer counts as new when no earlier paid order is found for either. The check is made in the cart and again at the moment the order is placed, so changing the email address at checkout does not get round it.
What counts as an earlier order?
Paid, on-hold, completed and refunded orders count. Unpaid orders count only if you tick the box for it, and failed and cancelled orders never do. A subscription renewal never makes someone count as having ordered, and an order created by hand in the admin is never given the discount but does count.
Can someone get it twice by using another email address?
Not with the same account, and not by changing the capitals, adding a plus-tag or adding dots in a Gmail address. A customer who simply uses a completely different mailbox and a different account looks like a new customer, as with any offer that does not ask for more identification. You can also switch on matching by billing address and by phone number.
What about customers who ordered before I installed it?
Your earlier orders are read in the background, and until that has finished every check looks at your orders directly, so nobody who ordered before is treated as new. The Tools screen can rebuild the record from your orders at any time.
Does it work with the block cart and checkout?
Yes, and with the classic ones. On the block checkout a customer who turns out not to be new is told in plain words, and the total is refreshed without the discount, so nothing is charged that they did not agree to.
What happens when the customer also has a coupon?
You choose: use whichever is worth more to the customer, allow both, or use the welcome discount only. The default is whichever is worth more.
Is the discount taken off sale items?
Not by default. Items that are already on sale are left out of the discount, and a box lets you include them. A minimum cart total is worked out on the same items the discount is.
How do tiers work?
Each tier is a cart total and the discount for a cart that reaches it. A cart gets the best tier it has reached, and never less than the amount you set above. The total is the part of the cart the discount covers, so with a product limit set it is counted on those products only.
Does the cap apply before or after the discount is worked out?
After. The discount is worked out first and then held to the cap, so a customer with a big cart gets the cap and no more.
Which delivery rate does free shipping cover?
Your choice: only the cheapest delivery rate, or every rate. Collection rates such as local pickup are never counted as the cheapest delivery.
What does the free gift cost the customer?
Nothing. It is added to the cart at no charge, the customer cannot remove it or change its quantity, and it goes if they stop qualifying. It is never part of what the discount is worked out on. It is not added if the product is out of stock.
Does matching on address and phone block honest customers?
It can, which is why both are off until you switch them on. Two people who share an address and a phone number but use different email addresses are treated as one customer. Mark as new customer on the Tools screen is the way out for a customer who was caught by mistake. Only a scrambled code is kept, never the address or the number itself.
What does the throwaway email list do?
A customer whose email address is on a listed domain is not given the discount. The list starts short and is yours to edit, and it is off until you switch it on. A listed domain also covers the names under it.
What does days after the account was made mean for a guest?
A guest is not logged in, so that limit does not apply to them. Use the customer roles setting to refuse guests outright.
Can I give the discount to someone who was caught by mistake?
Yes. On the Tools screen, enter their email address to see whether they would get the discount, and use Mark as new customer to let them through. It changes only this plugin's record, not their orders.
What happens to the record of who has ordered?
It keeps only scrambled codes made with a secret key stored on your site, never the addresses themselves. It is kept when you deactivate or delete the plugin, so the discount cannot be given twice if you reinstall. You can erase a customer through the personal data tools in WordPress.
Does it slow my shop down?
No. A customer is looked up by an indexed column, and while your older orders are still being read in, a search of the orders themselves fills the gap.
Does it work with High-Performance Order Storage?
Yes. Orders are only read and written through WooCommerce, so either storage works.
Does it send any data out?
Nothing about your orders or customers ever leaves your site. The licence check and the update check contact PluginCity, and send the licence key, the site address and the plugin version. Nothing else is sent.
How do I install it and what does it need?
Download the ZIP from your PluginCity account, then go to Plugins, Add New, Upload Plugin, choose the ZIP and click Install Now. If an earlier copy of the plugin is already installed, choose Replace current with uploaded: every setting you have made is kept. It needs WordPress 6.7 or later, WooCommerce 10.0 or later with WooCommerce active, and PHP 8.1 or later. There is nothing else to install alongside it.
How do updates and the licence key work?
Paste your licence key under WooCommerce, First Order Discount, Licence. Updates then arrive on your Plugins screen like any other, and the key keeps the scope, cap, tiers, free shipping, free gift, role, date and matching settings editable. A new install has 14 days before that starts to matter.
What happens if my licence lapses?
Nothing is deleted. The bigger discounts for bigger carts, free shipping and the free gift switch off. Every limit that makes the discount smaller or rarer keeps applying, so a lapse can never widen who gets the discount or raise what it is worth. Renewing brings it all back as you left it.
What happens if I deactivate WooCommerce?
The plugin steps aside and shows a notice. It does not fatally error, and your settings are waiting when WooCommerce comes back.
More plugins

Estimated Delivery Dates for WooCommerce
Tell customers when their order will arrive, and your team when it has to leave. Estimates on the product page, cart, checkout and emails.

Free Shipping Bar for WooCommerce
Show customers how close they are to free shipping, with a progress bar on the cart, at checkout and in the mini-cart.

Stock Alerts for WooCommerce
Lets customers leave their email address on a sold-out product or variation, and emails them when it can be bought again. A change in the stock number on its own sends nothing.

Delivery Instructions for WooCommerce
Gives customers one clear box at checkout for delivery or shipping instructions, on the classic checkout and the Checkout block, and shows what they wrote on the order and in your emails.

Minimum Order for WooCommerce
Set a minimum spend or quantity before checkout, with clear messaging that tells customers exactly what to add.

Product Expiry Dates for WooCommerce
Give a product a date it can no longer be sold after. It comes off sale when that date passes, and a basket still holding it cannot be checked out.