How Do I Send License Expiry Reminders in Easy Digital Downloads?

To send an EDD license expiry reminder email, you have two options. The built-in Software Licensing extension sends one reminder at a configured interval before expiry. For a multi-step sequence, 30 days out, 7 days out, on the expiry date, and a post-expiry recovery message, you need Krom Automation Pro, which adds the EDD trigger set and the delay scheduling that makes a sequence possible.

EDD’s own reminder is fine for low-volume stores where a single nudge is enough. Most software sellers find that a single email converts a fraction of lapsing customers because the timing rarely lands when the buyer is ready to act. A four-message sequence covering the full renewal window lifts renewals without any extra manual work after the initial setup.

This guide covers both approaches, including how to configure EDD’s built-in system, how to build a full reminder sequence in Krom Automation Pro, where to add a personal renewal discount, and what to send after a license has already expired.

Browse the full Krom Automation feature list to see the complete EDD trigger and action set before diving into setup.

What EDD’s Built-In Reminder Actually Does

Easy Digital Downloads Software Licensing includes a single renewal reminder email. You enable it under Downloads > Settings > Emails > Renewal Reminder, set a send period in days or weeks before expiry, and write your template using EDD’s merge tags.

Available merge tags include the customer name, the license key, the product name, the expiry date, the renewal URL, and an unsubscribe URL. The renewal URL generates a one-click link that pre-fills the cart with the renewal product and optionally applies a discount.

The limitation is structural: one email, one timing. If that email lands while the customer is travelling, on deadline, or simply not ready to spend, there is no follow-up. The license lapses, and you have no automated way to reach them again unless you build it manually or use a second tool.

A single renewal email is not a renewal strategy. It is one shot at the moment the customer may be least prepared to act.

EDD’s Recurring Payments extension handles auto-renewing subscriptions separately. If a customer is on automatic billing, the Software Licensing reminder does not apply to them and should not be sent. The two systems operate independently, and mixing them up produces duplicate emails, which is the most common complaint in EDD support forums.

What Gets Sent and When: A Renewal Sequence That Converts

Before building anything, decide the sequence structure. The four-message cadence below is practical for most software sellers. Adjust the intervals based on your license term, but keep at least three touchpoints before expiry.

MessageTimingPurposeDiscount?
Early reminder30 days before expiryPlant the renewal in mind, no pressureNo
Urgency reminder7 days before expiryDrive action while there is still timeOptional, 10 to 20%
Expiry-day messageDay of expiryLast chance, direct CTAYes, your strongest offer
Post-expiry recovery7 days after expiryWin back lapsed customers before they move onYes, time-limited

The discount logic matters. Offering your best discount at day 30 trains customers to wait for it. Save the strongest incentive for the expiry-day and post-expiry messages, where it functions as a recovery tool rather than an early-bird reward.

Setting Up the Sequence in Krom Automation Pro

Krom Automation Pro includes the Easy Digital Downloads integration, which adds the license expiry trigger set to the visual workflow builder. The full list of EDD triggers and the setup walkthrough are in the Easy Digital Downloads integration documentation.

The general shape of each workflow is identical. The trigger fires when a license is approaching expiry, then a delay node holds execution until the right moment, then a Send Email action delivers the message. Repeat across four separate workflows, one per message in the sequence.

Here is what each workflow needs:

  • Trigger: EDD License Expiring (from the Pro trigger library)
  • Delay node: configured to the correct number of days before or after the trigger fires. See the delays and scheduling documentation for exact configuration options including minutes, hours, days, and weeks.
  • Conditional branch: check whether the license is on auto-renewal. If yes, skip the email. This prevents sending manual renewal prompts to customers already billed automatically. See conditions and branching for how to set the Yes/No path.
  • Send Email action: personalised with merge tags for the customer name, product name, expiry date, and renewal link

Merge tags let you pull live data from the trigger event directly into the email body. The customer’s first name, the exact license expiry date, the product they purchased, and a pre-built renewal URL all inject automatically. The merge tags documentation covers every available variable and the correct syntax.

The Post-Expiry Workflow

The post-expiry recovery email is the one most stores never send, and it is often the highest-converting message in the sequence. A customer whose license lapsed seven days ago is still familiar with your product.

They have not replaced it yet. A time-limited offer, framed as a one-time reinstatement discount, converts a meaningful slice of lapsed customers who ignored every pre-expiry message.

Build this as a separate workflow with the trigger set to fire on the expiry date and a delay of exactly 7 days. Use a conditional branch to check whether the license has since been renewed.

If yes, skip the email entirely. If no, deliver the recovery message with your strongest discount and a hard expiry date on the offer, something like “this offer expires in 48 hours”.

Adding a Personal Renewal Discount

EDD Software Licensing supports a renewal discount that auto-applies when a customer clicks the renewal link in their email. You create the discount under Downloads > Discounts, set it to apply to the renewal product, and paste the discount code into the renewal URL tag in your email template.

In a Krom Automation workflow, you can use the HTTP Request action to call the EDD REST API and generate a customer-specific coupon before the email fires. This is more work than a shared code, but it prevents coupon sharing and lets you track redemption per customer.

Whether the extra complexity is worth it depends on your volume. For stores with fewer than 500 annual renewals, a shared code with a short expiry window is sufficient.

The key rule: do not put the same discount in every email. Customers who receive the discount at the 30-day mark have no incentive to act before the expiry-day email. Staggering the offer, or withholding it until the urgency messages, produces better timing-to-conversion alignment.

Sending your best discount at 30 days does not accelerate renewals. It teaches customers to wait another 23 days.

Designing the Emails Themselves

Krom Automation Pro includes a visual email builder built on the Gutenberg block editor. You design renewal emails using blocks, with no HTML required and no external email tool to connect. The output is responsive and compatible with all major email clients.

Each message in the sequence should do one thing. Here is how to frame each:

  • 30-day email: Helpful tone. Remind the customer what value they get from the license. Link to your changelog or recent updates. Renewal CTA, no pressure language.
  • 7-day email: Practical tone. Tell them exactly when the license expires. List what stops working after expiry, support, updates, or both. Introduce the discount if you are offering one at this stage.
  • Expiry-day email: Direct tone. The license has expired today or expires tonight. Best discount, single CTA, no distractions. Subject line should state the date.
  • Post-expiry email: Recovery tone. Acknowledge the lapse without guilt-tripping. Offer reinstatement with a time-bounded discount. Make the path back as frictionless as possible.

Subject lines for renewal emails perform better when they include the product name and a date rather than generic urgency phrases. “Your [Product] license expires January 14” outperforms “Don’t miss out on your renewal” in open rate testing across SaaS email benchmarks, because the first tells the reader exactly why they are receiving the message.

Testing Before You Go Live

Krom Automation includes a workflow simulator that runs a complete dry-run execution with zero side effects. No emails are sent, no data is written, but every step is evaluated against real workflow logic so you can confirm the conditional branches, the delay values, and the merge tag output are all correct before a real license expiry event fires.

The workflow simulator documentation explains how to feed a test event through the system and read the per-step audit trail. Run the simulator on each of the four workflows before enabling them. A missed conditional branch on the auto-renewal check is the most common setup error, and it produces the duplicate-email problem customers report most often.

For more on testing automation workflows before they go live, the guide on how to test a WordPress automation before it goes live covers the full testing process including failure simulation.

A Note on WP-Cron Timing

Krom Automation runs scheduled actions via Action Scheduler, which itself depends on WordPress Cron. On low-traffic sites where no one visits for several hours, WP-Cron fires late. A delay set for 9:00 AM may fire at 11:30 AM if no request hits the site in that window.

For a license expiry sequence, this is usually acceptable. A few hours of drift on a 30-day or 7-day reminder does not meaningfully affect conversion. The expiry-day email is more sensitive.

If exact timing matters, configure a real server cron job to call wp-cron.php on a set schedule rather than relying on visitor-triggered execution. Most managed WordPress hosts offer this in their control panel.

Cost Comparison: Built-In EDD vs. Krom Automation Pro

CapabilityEDD Built-In ReminderKrom Automation Pro
Number of reminder emails1Unlimited, one workflow per message
Timing optionsOne fixed intervalAny combination of minutes, hours, days, weeks
Post-expiry recovery emailNoYes
Auto-renewal skip logicManual configuration requiredConditional branch, built in 2 minutes
Per-customer personalisationEDD merge tags onlyEDD merge tags plus full Krom merge tag library
Visual email builderNoYes, Gutenberg block based
Execution logs per stepNoYes, full audit trail
Cost (1 site, annual)Included in EDD Software LicensingStarts at $69/year (launch pricing)

If your store sells 50 or more licenses per year, the revenue difference between a one-email and a four-email renewal sequence likely covers the cost of Krom Automation Pro in the first month of operation. At a 20% renewal discount on a $99 product, one additional renewal per month pays for the annual plan twice over.

What About WooCommerce Subscriptions?

This guide covers EDD Software Licensing specifically. If you run WooCommerce with subscription products instead, the trigger set and sequence logic are almost identical, but the integration is different. The WooCommerce Subscriptions integration documentation covers the equivalent setup, and the companion post on automating WooCommerce subscription renewal reminder emails walks through a comparable sequence in that context.

MemberPress users dealing with a similar expiry and recovery challenge can also apply the same four-message structure using the MemberPress integration triggers for subscription expiry events.

Also from wpRigel

Pollify is wpRigel’s Gutenberg-native poll and survey plugin. Polls are built as real blocks inside the block editor, with no shortcodes to paste and no separate interface to learn. If you collect customer feedback or run product satisfaction surveys alongside your license sales, Pollify fits directly into the same WordPress workflow.

Commandify is a command palette for the WordPress admin. Press Cmd or Ctrl plus K to jump anywhere, search anything, and run admin actions without clicking through menus. It is the only WordPress command palette with real WooCommerce order, product and customer commands built in, which makes it useful for stores managing high order or license volumes.

Our Verdict

EDD’s built-in renewal reminder is a reasonable starting point for a store with a small license base and low renewal volume. For anything beyond that, one email is not enough, and the setup cost of a four-workflow sequence in Krom Automation Pro is low relative to the revenue it recovers.

The post-expiry recovery email alone is worth the setup time. Most EDD stores never send one.

The customers who lapsed without renewing are still familiar with your product, still have the problem your product solves, and are reachable for 7 to 14 days after expiry before they start evaluating alternatives. A single automated message in that window, with a clear offer and a short deadline, will recover a meaningful number of those licenses every cycle.

If you run more than one EDD site, Krom Automation Pro plans cover 5 sites from $149 per year (launch pricing), which changes the per-site economics significantly compared to single-site tools. Lifetime plans start at $199 for one site and include every future update. The free plugin is available with no time limit or run cap, so you can install it and explore the workflow builder before committing to Pro.

Frequently Asked Questions

Can I send more than one EDD license expiry reminder email without a third-party plugin?

No. EDD Software Licensing supports a single reminder email at one configured interval. Sending multiple reminders at different intervals requires either a custom solution or a plugin like Krom Automation Pro that adds a delay-based sequence builder on top of EDD’s trigger events.

Will EDD send renewal reminders to customers on automatic subscriptions?

EDD Recurring Payments handles auto-billing separately from Software Licensing renewal reminders. Customers on automatic renewal do not need a manual renewal prompt, and sending one confuses them. In Krom Automation, a conditional branch checks the auto-renewal status before any email fires and skips the sequence for customers already set to renew automatically.

How do I stop customers from receiving duplicate renewal reminder emails?

Duplicates almost always come from two sources running simultaneously: EDD’s built-in reminder and a third-party workflow. Disable EDD’s built-in reminder under Downloads > Settings > Emails before activating your Krom Automation sequence. Also enable the “run once per entity” setting on each workflow to prevent the same license from triggering the same workflow twice.

Does the free version of Krom Automation support EDD triggers?

The EDD trigger set is a Pro feature. The free plugin includes 16 triggers covering WordPress users, posts, comments, media, and WooCommerce orders, but EDD license events require the Pro add-on. You can review the full comparison in the free vs Pro feature comparison.

Can I send the post-expiry recovery email through Mailchimp or another email platform instead of directly from WordPress?

Yes. Krom Automation Pro includes integrations with Mailchimp, ConvertKit, MailerLite, and ActiveCampaign, among others.

Instead of the Send Email action, you can trigger a sequence in your email platform when the EDD license expires. The Mailchimp integration documentation covers how to subscribe or tag a contact from a WordPress trigger event, which is the mechanism you would use to hand off to a Mailchimp automation.

How accurate is the expiry-day email timing on shared hosting?

On sites with steady traffic, WP-Cron fires within minutes of the scheduled time. On low-traffic sites, drift of 2 to 6 hours is common because WP-Cron only runs when a visitor request arrives.

For expiry-day emails where timing matters, configure a real server cron job to call wp-cron.php every 5 to 15 minutes. Most managed WordPress hosts provide this option in the hosting control panel without requiring server access.