Upcoming: I plan to publish this in WordPress plugin marketplace.
This WooCommerce plugin adds a simple way to display a license expiration date in the customer name shown in admin order emails. It does this when a specific coupon is used.

Being fair in software business: Background motivation
I’ve always admired Balsamiq—not just for their wireframing tool, but for how they chose to build their business. No VC money. No growth hacks. Just a small team solving a real problem for people who needed it, focusing on being useful and human.
That mindset shaped how I approached this WooCommerce plugin.
It doesn’t try to be clever. It just solves a very specific problem I had: how to mark a license expiry date in a way that my existing tools could pick up, without needing to build a licensing backend.
Someone else wrote me saying: “I’d be willing to pay $10 annually for a basic subscription.”
I didn’t want to create subscriptions and enforcement logic for a small use case. Instead I decides to trust the customer. To ”renew their subscription” after a year if the app is still useful to them.
I sent the user a coupon for my online store that would trigger special behaviour.
To support this, I built a small WooCommerce plugin with some LLM help. It adds a simple checkbox in the coupon admin UI. When checked, it appends the coupon’s expiry date to the coupon name in the admin order email. That can then be used in further license processing.
That’s it.
That’s the inspired part: doing the least amount of technical work necessary to support an honest conversation.
Balsamiq showed that a business can be a tool of expression—not just for what you build, but for how you choose to build it.
This plugin is small. But it’s aligned with how I want to work: responsibly, sustainably, and with room to respond to people as they are, not as some funnel metric.
Balsamiq proved that this approach works. I’m just applying it, one snippet of code at a time.
How it works
The plugin does not change any data in the database, billing info, or invoices. It only modifies the way the name is shown in the admin email, appending something like:
John Doe (license expires 2026-04-19)
You can mark any coupon as a “license item” by checking a box in the WooCommerce admin UI. The expiration date is always set to one year from the purchase date (this was enough for my needs).
How to use
- Create a WooCommerce coupon and check Is License Coupon?
- When the coupon is used, the admin email will show the customer name like:
Jane Smith (license expires 2026-04-19)
- You can then use that name as input for your license generator system.
User need
One JPEG Autorotate user explained it clearly in an email:
“Because this only affects about 1 in 20 photos, I can’t justify the full subscription cost at the moment, since I’ve adjusted my workflow to favor landscape shots.
That said, if you’re open to it, I’d be willing to pay $10 annually for a basic subscription.”
This plugin exists exactly for that kind of situation. You sell a product at a reduced price, with a coupon, and the plugin appends an expiry date to the license name in the admin email.
The expiration date in the name acts as the metadata needed for the license and shows in the product UI when the user applies the license.
That expiry date is enough for your license generator to mark the license as “valid for a year,” even if it’s not enforced programmatically.
It keeps the process simple for you as a developer while allowing the customer to make a fair and honest contribution. And since the name includes the expiration date, you can always revisit their status manually or semi-automatically later if needed.
Context: Why this plugin exists
This plugin was created for a workflow where the license system isn’t integrated via API, but instead reads license information from WooCommerce admin emails.
In this setup, the user uses a specific coupon when buying product. The WooCommerce admin email is received. A separate script parses the email, reads the customer name, and uses it to generate a license key or license file.
There’s no direct API call between WooCommerce and the licensing system. This separation is intentional—it helps keep the license generation logic completely independent. It also avoids needing to build and maintain a WooCommerce API integration or licensing platform.
While this approach may not follow conventional WooCommerce best practices, it’s practical for small-scale or solo setups where manual review or basic automation is enough.