Coupon Email System

Plugin Overview

Coupon Email System for WooCommerce sends coupon emails to customers when specific WooCommerce events or milestones occur.

The plugin can send coupons after a first purchase, after user registration, when a customer reaches configured spend or order-count thresholds, when an order contains selected products, on a customer birthday, and after a configured number of days since the customer’s last purchase.

This plugin is intended for WooCommerce store owners who want to automate customer reward emails using WooCommerce coupons or automatically generated coupons.

Key benefits:

  • Send coupon emails from WooCommerce order and user events.
  • Configure separate email content for each trigger.
  • Use existing WooCommerce coupons or generate new coupons automatically.
  • Restrict generated coupons to the recipient email when enabled.
  • Create and reuse email templates with built-in templates, a drag-and-drop builder, or custom HTML.
  • Collect customer birthdays on My Account and checkout forms when birthday emails are enabled.
  • Include recipient-specific unsubscribe links in promotional coupon emails.

Requirements

Requirement Detected in plugin
WordPress Requires at least 5.8
WooCommerce Requires at least 7.0
PHP Requires PHP 7.4
WooCommerce tested up to 10.6.1
WordPress tested up to 7.0, as declared in the plugin header
Additional dependencies WooCommerce must be installed and active

The plugin checks whether WooCommerce is active. If WooCommerce is missing, it displays an admin notice and does not load the main plugin functionality.

The plugin declares compatibility with WooCommerce High-Performance Order Storage (custom order tables).

Installation

  1. Download the plugin zip file.
  2. In WordPress admin, go to Plugins > Add New Plugin.
  3. Click Upload Plugin.
  4. Select the plugin zip file.
  5. Click Install Now.
  6. Click Activate.
  7. Make sure WooCommerce is installed and active.
  8. Go to WooCommerce > Settings > Coupon Email System to configure the plugin.

On a fresh install, the plugin creates default email subjects, headings, and message bodies, then redirects administrators to the onboarding page.

Getting Started

  1. Go to WooCommerce > Settings > Coupon Email System.
  2. Open General Settings.
  3. Enable Enable coupon email system settings.
  4. Choose the default email type and template.
  5. Decide whether generated coupons should be restricted to the purchaser email.
  6. Open each trigger section you want to use.
  7. Enable coupon sending for that trigger.
  8. Configure the trigger rules, coupon source, email heading, subject, and trigger message.
  9. Use Send Test Email on each trigger page to confirm the email output.
  10. Save changes.

Settings Overview

Settings Sections

↑ Back to top
Section Purpose
General Settings Global plugin enablement, email type, default template, and purchaser email restriction.
Email Builder Create, preview, duplicate, restore, and save reusable email templates.
First Purchase Configure the coupon email sent after a customer’s first qualifying order.
User Registration Configure the coupon email sent when a new WordPress user registers.
Spent Threshold Configure spend milestone rules and emails.
Order Threshold Configure order-count milestone rules and emails.
Product Purchase Configure product-based coupon emails.
Customer Birthday Configure birthday collection and birthday coupon emails.
Days After Last Purchase Configure win-back emails after a configured number of inactive days.
How To Plugin usage guidance and placeholder information.

General Settings

↑ Back to top
Setting Description Options Default value Recommended usage
Enable coupon email system settings Master switch checked before production coupon emails are sent. Enabled or disabled Not explicitly enabled on activation Enable after configuring and testing at least one trigger.
Email type Controls whether plugin emails use HTML or plain text output. HTML, Plain text Not explicitly set; WooCommerce email classes read the saved value Use HTML when using templates or the builder.
Email Template Default template used by triggers set to use the general default. Default Template, Modern Blue Template, Elegant Purple Template, saved builder templates Default Template Choose a global template first, then override per trigger only when needed.
Restrict coupon to purchaser email Adds the recipient email restriction to generated coupons and to direct mutation mode. Enabled or disabled Enabled when read by coupon generation logic Keep enabled for personal reward coupons.

Shared Trigger Settings

↑ Back to top

Most trigger pages include these settings:

Setting Description Options Default value Recommended usage
Enable coupon sending Enables the specific trigger. Enabled or disabled Disabled unless previously saved or configured by onboarding Enable only for triggers you want to send.
Coupon Source Selects how the coupon is supplied. Use Existing Coupon, Auto Generate Coupon Varies by trigger; first purchase and registration default to existing, birthday/product/last purchase default to auto in the current UI or email logic Use Auto Generate for recipient-specific rewards; use Existing Coupon when you already manage coupon rules in WooCommerce.
Selected Coupon WooCommerce coupon used when Coupon Source is Existing Coupon. Published WooCommerce coupons Empty Select a valid published coupon before sending.
Existing coupon behavior Determines how an existing coupon is handled for recipient restrictions. Preserve original coupon, Directly change selected coupon Preserve original coupon Keep Preserve original coupon unless you intentionally want the source coupon modified.
Mutation confirmation Required confirmation when using Directly change selected coupon. Checked or unchecked Unchecked Only check after understanding that the source WooCommerce coupon may be changed.
Discount Type Coupon discount type for auto-generated coupons. Percentage, Fixed Cart, Fixed Product Percentage Match the reward type to your campaign.
Discount Value Coupon amount for auto-generated coupons. Number 10 in shared auto-coupon fields Use a positive value; generation fails if the amount is not greater than 0.
Expiry in Days Number of days before auto-generated coupons expire. Number 30 in shared auto-coupon fields Use a short period for time-sensitive campaigns.
Minimum Spend Minimum cart subtotal for auto-generated coupons. Number or empty Empty Leave empty unless the reward should require a subtotal.
Maximum Spend Maximum cart subtotal for auto-generated coupons. Number or empty Empty Leave empty unless the coupon should stop applying above a subtotal.
Include Products Product restrictions copied to auto-generated coupons. Product multiselect Empty Use for product-specific coupon rules.
Exclude Products Product exclusions copied to auto-generated coupons. Product multiselect Empty Use to prevent discounting selected products.
Include Categories Category restrictions copied to auto-generated coupons. Category multiselect Empty Use for category-specific coupons.
Exclude Categories Category exclusions copied to auto-generated coupons. Category multiselect Empty Use to exclude product categories from the coupon.
Usage Limit Total coupon usage limit. Number or empty Empty Set when each generated coupon should have limited total usage.
Usage Limit Per User Per-customer usage limit. Number or empty Empty Use 1 for single-use personal rewards.
Allow Free Shipping Enables free shipping on the coupon. Enabled or disabled Disabled Enable only if your WooCommerce shipping setup supports free shipping coupons.
Individual Use Only Prevents combining the coupon with other coupons. Enabled or disabled Enabled by default in shared auto-coupon fields Recommended for reward coupons.
Exclude sales items Prevents the coupon from applying to sale items. Enabled or disabled Disabled Enable if sale items should not receive extra discounts.
Choose Template Template used by the trigger. General default, built-in templates, saved templates General default Override only when the trigger needs a different layout.
Email Heading Main heading shown in the email. Text with supported placeholders Created on activation for each trigger Keep concise and use supported placeholders only.
Email subject Email subject line. Text with supported placeholders Created on activation for each trigger Include store name or customer name where useful.
Trigger Message Message body inserted into templates using {trigger_message}. Plain text with supported placeholders Created on activation for each trigger Include {coupon_code} or {coupon_description} when the customer needs coupon details.
Test email Sends a test email to the entered address through AJAX. Email address Empty Test every trigger after saving its settings.

Email Builder Settings

↑ Back to top
Setting Description Options Default value
Email Design Mode Per-trigger choice between template mode and builder mode. Use Template, Build with Email Builder Use Template
Template Library Built-in and saved reusable templates. Default, Modern Blue, Elegant Purple, custom saved templates Built-in templates available
Builder section types Content blocks available in the drag-and-drop builder. Text, Coupon Box, Button, Image, Spacer No saved layout until configured
HTML Editor Custom HTML editor for reusable templates. Custom HTML Starter HTML is displayed in the editor
Primary Color Shared builder body accent color. Hex color #6C5CE7
Background Color Shared builder background color. Hex color #FFFFFF
Font Family Shared email font. Inter, Georgia, Arial, Verdana Inter
Content Width Email content width. 500px, 600px, 700px 600px
Show Header Shows or hides the builder header. Enabled or disabled Enabled when read by the builder
Header Layout Header layout style. Logo + Nav, Logo, Logo + Links Logo
Logo URL Image URL used as the email logo. URL Empty
Logo Alignment Header logo alignment. Left, Center, Right Center
Header Background Color Header background color. Hex color #FFFFFF
Header Text Color Header navigation text color. Hex color #1A1A1A
Navigation Links Up to four header navigation links. Page selector, label, URL Shop Now, Deals, New Arrivals
Header Padding Header top, bottom, left, and right padding. Numbers Top 20, bottom 20, left 28, right 28
Show Divider Below Header Adds a divider below the header. Enabled or disabled Disabled
Show Footer Shows or hides the builder footer. Enabled or disabled Enabled when read by the builder
Footer Text Text shown in the email footer. Text You received this email from {site name}.
Unsubscribe Text Text used for the unsubscribe link. Text Unsubscribe
Unsubscribe URL Fallback unsubscribe URL if no generated recipient-specific link is available. URL Empty
Footer Background Color Footer background color. Hex color Empty saved value; UI fallback displays #EEF2FF
Footer Text Color Footer text color. Hex color #667085
Footer Alignment Footer content alignment. Left, Center, Right Center

Feature Documentation

First Purchase Coupon Email

↑ Back to top

Overview

↑ Back to top

The first purchase trigger sends a coupon email when an order reaches Processing or Completed status and the order is detected as the customer’s first order.

How it works

↑ Back to top

The plugin listens to woocommerce_order_status_processing and woocommerce_order_status_completed. It triggers the first purchase email class and checks:

  • The global plugin switch is enabled.
  • The first purchase trigger is enabled.
  • The WooCommerce email class is enabled.
  • A recipient email exists.
  • The current order is the customer’s first order.
  • The order has not already been marked as sent for this trigger.
  • The recipient has not unsubscribed from promotional coupon emails.

Configuration steps

↑ Back to top
  1. Go to WooCommerce > Settings > Coupon Email System > First Purchase.
  2. Enable Enable coupon sending.
  3. Choose an existing coupon or configure auto generation.
  4. Choose the template.
  5. Edit the heading, subject, and trigger message.
  6. Save changes.
  7. Send a test email.

Example use case

↑ Back to top

Send a thank-you coupon after a customer’s first completed purchase.

Notes

↑ Back to top

The plugin stores sent status on the order to avoid sending the same production trigger more than once for the same order.

Limitations

↑ Back to top

The email only sends when WooCommerce moves the order into Processing or Completed status and the first-order check passes.

User Registration Coupon Email

↑ Back to top

Overview

↑ Back to top

The user registration trigger sends a coupon email when a new WordPress user account is registered.

How it works

↑ Back to top

The plugin listens to the WordPress user_register action. It triggers the registration email class and checks:

  • The global plugin switch is enabled.
  • The user registration trigger is enabled.
  • The WooCommerce email class is enabled.
  • The registered user has an email address.
  • The recipient has not unsubscribed.

Configuration steps

↑ Back to top
  1. Go to WooCommerce > Settings > Coupon Email System > User Registration.
  2. Enable Enable coupon sending.
  3. Choose a coupon source.
  4. Configure email design and message content.
  5. Save changes.
  6. Send a test email.

Example use case

↑ Back to top

Send a welcome coupon when a shopper creates an account.

Notes

↑ Back to top

The email uses the registered user’s first name, last name, and email when available.

Limitations

↑ Back to top

The trigger is tied to WordPress user registration, not guest checkout.

Spent Threshold Coupon Email

↑ Back to top

Overview

↑ Back to top

The spent threshold trigger sends a coupon when the current order amount reaches a configured spend milestone.

How it works

↑ Back to top

The plugin checks configured threshold rows stored in cesfw_threshold. Each row has:

  • Target value
  • Coupon assigned

When an order reaches Processing or Completed status, thresholds are sorted by target value. The plugin selects the highest threshold met by the current order amount and sends the assigned coupon if the order has not already received a spent-threshold coupon.

Configuration steps

↑ Back to top
  1. Go to WooCommerce > Settings > Coupon Email System > Spent Threshold.
  2. Enable Enable coupon sending.
  3. Add one or more threshold rows.
  4. Enter a target spend value for each row.
  5. Assign a WooCommerce coupon to each target.
  6. Configure the email design and message.
  7. Save and test.

Example use case

↑ Back to top

Send a coupon when an order subtotal or total reaches a high-value purchase milestone.

Notes

↑ Back to top

The trigger uses threshold-specific assigned coupons rather than the shared auto-coupon source UI.

Limitations

↑ Back to top

Rows without a numeric target or assigned coupon are ignored.

Order Threshold Coupon Email

↑ Back to top

Overview

↑ Back to top

The order threshold trigger sends a coupon when a customer reaches a configured number of orders.

How it works

↑ Back to top

The plugin checks configured rows stored in cesfw_threshold_order. Each row has:

  • Target order count
  • Coupon assigned

When an order reaches Processing or Completed status, the plugin counts customer orders, selects the highest configured order-count threshold met, and sends the assigned coupon. For registered users, sent thresholds are tracked in user meta _cesfw_order_thresholds_sent.

Configuration steps

↑ Back to top
  1. Go to WooCommerce > Settings > Coupon Email System > Order Threshold.
  2. Enable Enable coupon sending.
  3. Add one or more threshold rows.
  4. Enter the target order count.
  5. Assign a coupon.
  6. Configure the message and template.
  7. Save and test.

Example use case

↑ Back to top

Send a loyalty coupon when a customer places their third order.

Notes

↑ Back to top

The plugin also stores order-level metadata when the threshold is met.

Limitations

↑ Back to top

Order history must be available through WooCommerce order queries. Guest tracking is more limited than registered customer tracking.

Product Purchase Coupon Email

↑ Back to top

Overview

↑ Back to top

The product purchase trigger sends a coupon when an order contains one or more selected eligible products or variations.

How it works

↑ Back to top

The plugin checks the products in the current Processing or Completed order against the selected product IDs stored in cesw_select_coupon_products. If a matching product or variation is present, the email can be sent.

The email includes placeholders for eligible product count and purchased product names.

Configuration steps

↑ Back to top
  1. Go to WooCommerce > Settings > Coupon Email System > Product Purchase.
  2. Enable Enable coupon sending.
  3. Select eligible products or variations.
  4. Choose an existing coupon or configure auto-generated coupon settings.
  5. Configure product/category restrictions if using auto generation.
  6. Configure the template and message.
  7. Save and test.

Example use case

↑ Back to top

Send an accessory discount after a customer buys a selected product.

Notes

↑ Back to top

The product selector includes simple products and variable product variations.

Customer Birthday Coupon Email

↑ Back to top

Overview

↑ Back to top

The birthday trigger sends a coupon email to registered users whose saved birthday matches the current date.

How it works

↑ Back to top

When the birthday trigger is enabled, the plugin:

  • Adds an optional birthday field to My Account details.
  • Adds an optional birthday field to classic checkout when the logged-in customer does not already have a saved birthday.
  • Registers an optional birthday field for WooCommerce Checkout Blocks when available.
  • Saves birthdays in MM-DD format in user meta cesfw_customer_birth_date.
  • Saves checkout birthday values on the order as cesfw_customer_birth_date.
  • Runs a daily Action Scheduler job to check all users and send birthday emails where the saved month/day matches the current date.

Configuration steps

↑ Back to top
  1. Go to WooCommerce > Settings > Coupon Email System > Customer Birthday.
  2. Enable Enable coupon sending.
  3. Choose a coupon source.
  4. Configure coupon generation options if needed.
  5. Configure the template and message.
  6. Save and test.

Example use case

↑ Back to top

Send each registered customer a birthday coupon once their saved birthday matches today’s date.

Notes

↑ Back to top

The birthday field is optional and accepts MM-DD format. Legacy full-date formats are normalized where the plugin can safely parse them.

Limitations

↑ Back to top

The scheduled birthday check loops through WordPress users. Customers without a saved birthday are skipped.

Days After Last Purchase Coupon Email

↑ Back to top

Overview

↑ Back to top

The days-after-last-purchase trigger sends a win-back coupon after a configured number of days has passed since a customer’s latest Processing or Completed order.

How it works

↑ Back to top

The plugin schedules a daily Action Scheduler job. The job:

  • Checks whether the trigger is enabled.
  • Loads Processing and Completed orders.
  • Keeps only the latest order per customer email.
  • Calculates days since the latest order.
  • Skips customers whose latest order is more recent than the configured threshold.
  • Skips customers already marked as sent.
  • Sends the last-purchase email and stores sent state.

For registered customers, sent state is stored in user meta is_last_purchase_coupon_sent. For guests, sent state is stored on the latest order as _cesfw_last_purchase_coupon_sent.

When a registered customer’s order later changes to Processing or Completed, the plugin resets is_last_purchase_coupon_sent to 0.

Configuration steps

↑ Back to top
  1. Go to WooCommerce > Settings > Coupon Email System > Days After Last Purchase.
  2. Enable Enable coupon sending.
  3. Set Days to Elapse.
  4. Choose a coupon source.
  5. Configure email design and content.
  6. Save and test.

Example use case

↑ Back to top

Send a comeback coupon 45 days after a customer’s last purchase.

Notes

↑ Back to top

The plugin stores a diagnostic summary in cesfw_specific_days_last_run.

Email Builder and Templates

↑ Back to top

Overview

↑ Back to top

The plugin includes built-in templates and a reusable template builder.

How it works

↑ Back to top

Administrators can create reusable templates from the Email Builder section. Trigger pages can use:

  • The global default template.
  • A built-in template.
  • A saved builder template.
  • A trigger-specific builder layout.

Builder templates can be previewed, saved, duplicated, deleted, restored if built-in, and counted when used.

Configuration steps

↑ Back to top
  1. Go to WooCommerce > Settings > Coupon Email System > Email Builder.
  2. Choose a built-in template or create a new template.
  3. Edit with the drag-and-drop builder or custom HTML editor.
  4. Save the template with a real template name.
  5. Open a trigger page.
  6. Select the saved template from Choose Template.

Example use case

↑ Back to top

Create a branded coupon email template and reuse it for first purchase, birthday, and win-back emails.

Notes

↑ Back to top

Builder-supported block types are Text, Coupon Box, Button, Image, and Spacer.

Unsubscribe and Suppression

↑ Back to top

Overview

↑ Back to top

The plugin adds recipient-specific unsubscribe placeholders to promotional coupon emails.

How it works

↑ Back to top

Emails prepared through the suppression service receive:

  • {unsubscribe_link}
  • {unsubscribe_url}

The generated URL contains a signed token. When a recipient visits the URL, the plugin stores suppression state in user meta when possible and in an email-hashed WordPress option as a fallback. Future sends to that recipient are skipped.

Configuration steps

↑ Back to top

No separate admin setting is provided. Add {unsubscribe_link} or {unsubscribe_url} to email content or templates where needed.

Example use case

↑ Back to top

Add an unsubscribe link to the footer of promotional coupon emails.

Notes

↑ Back to top

Builder footer settings include an unsubscribe text field and a fallback unsubscribe URL. Production coupon emails use generated recipient-specific unsubscribe links when available.

Admin Workflow

  1. Install and activate WooCommerce.
  2. Install and activate Coupon Email System for WooCommerce.
  3. Complete onboarding if shown after activation.
  4. Go to WooCommerce > Settings > Coupon Email System.
  5. Enable the global plugin setting.
  6. Choose email type and default template.
  7. Create any WooCommerce coupons you plan to use as existing coupons.
  8. Configure each trigger section.
  9. Test each trigger email with the built-in test email field.
  10. Monitor WooCommerce logs using the source coupon-email-system-for-woocommerce for production trigger diagnostics.
  11. Update threshold rows, selected products, templates, and message content as campaigns change.

WooCommerce Integration

The plugin integrates with WooCommerce in the following ways:

  • Adds custom WooCommerce email classes through woocommerce_email_classes.
  • Adds a WooCommerce settings tab named Coupon Email System.
  • Sends trigger emails from WooCommerce order status hooks for Processing and Completed orders.
  • Uses WooCommerce coupon CRUD to create coupons.
  • Reads published shop_coupon posts for existing coupon selection.
  • Reads WooCommerce orders through wc_get_orders.
  • Uses WooCommerce customer and order data for placeholders.
  • Adds birthday fields to classic checkout, Checkout Blocks, My Account, and admin order details.
  • Declares compatibility with WooCommerce custom order tables.
  • Uses WooCommerce logging for order-trigger diagnostics.

Email Functionality

Email Triggers

↑ Back to top
Trigger WooCommerce email ID Trigger condition
First purchase first_purchase_email Order reaches Processing or Completed and is the customer’s first order.
User registration user_register_email WordPress user_register action fires.
Spent threshold threshold_money_spent_email Order reaches Processing or Completed and the current order amount reaches a configured spend threshold.
Order threshold order_threshold_email Order reaches Processing or Completed and customer order count reaches a configured threshold.
Product purchase threshold_money_order_email Order reaches Processing or Completed and includes a selected eligible product.
Customer birthday birthday_email Daily birthday job finds a user with today’s saved month/day.
Days after last purchase specific_days_email Daily job finds a customer whose latest order is at least the configured number of days old.

Email Templates

↑ Back to top

The plugin includes PHP email templates and builder-rendered templates:

  • templates/email-default.php
  • templates/email-custom1.php
  • templates/email-custom2.php
  • templates/emails/cesfw-coupon-email.php
  • Built-in builder templates: Default, Modern Blue, Elegant Purple
  • Custom saved templates stored in the cesfw_builder_saved_templates option

Placeholders

↑ Back to top

Common placeholders include:

Placeholder Meaning
{site_title} Store/site name.
{customer_name} Customer first name or display name.
{customer_last_name} Customer last name.
{customer_email} Customer email address.
{coupon_code} Coupon code used by the email.
{coupon_description} WooCommerce coupon description.
{coupon_discount} Coupon discount text from the builder renderer.
{coupon_free_shipping_text} Free shipping text from coupon details.
{coupon_expiry_text} Coupon expiry text from coupon details.
{coupon_minimum_spend_text} Minimum spend text from coupon details.
{coupon_maximum_spend_text} Maximum spend text from coupon details.
{unsubscribe_link} Recipient-specific unsubscribe URL.
{unsubscribe_url} Recipient-specific unsubscribe URL.
{order_date} Relevant order date.
{order_number} Relevant order number where provided.
{order_total} Relevant order total where provided.
{customer_money_spent} Spend amount used by spent-threshold emails.
{customer_total_spent} Customer total spent.
{spending_threshold} Spend threshold reached.
{customer_order_count} Customer order count.
{customer_money_order} Legacy order-count placeholder.
{order_threshold} Order threshold reached.
{purchases_threshold} Order or product-count threshold placeholder depending on trigger.
{purchased_product} Purchased eligible product names.
{days_ago} Number of days since last purchase.
{days_ago_text} Human-readable days since last purchase.
{last_order_date} Last order date.
{last_order_total} Last order total.
{last_order_products} Product names from the last order.
{customer_birth_date} Saved birthday in normalized format.
{current_date} Current date.
{trigger_message} Trigger message inserted into templates.

Heading and subject fields are limited to base placeholders shown by the UI: {site_title}, {customer_name}, and {customer_last_name}.

Customization Options

↑ Back to top

Administrators can customize:

  • Global email type.
  • Global email template.
  • Per-trigger template.
  • Per-trigger heading.
  • Per-trigger subject.
  • Per-trigger trigger message.
  • Builder layout and design settings.
  • Reusable builder templates.
  • Custom HTML templates through the Email Builder UI.

Scheduling Behavior

↑ Back to top

Birthday and days-after-last-purchase emails are processed by daily Action Scheduler recurring actions. Order-based and registration-based emails are sent immediately when their WordPress or WooCommerce hooks run.

Cron Jobs / Scheduled Actions

Birthday Check

↑ Back to top
Item Details
Action hook cesfw_birthday_check_every_day_check
Scheduler Action Scheduler
Frequency Daily, starting at strtotime( 'tomorrow' )
Purpose Checks all users for saved birthdays matching today’s month/day.
Admin configuration Enabled from Customer Birthday > Enable coupon sending.
Behavior Skips users without a saved birthday and sends the birthday email to matching users.

Days After Last Purchase Check

↑ Back to top
Item Details
Action hook cesfw_specific_days_check_every_day_check
Scheduler Action Scheduler
Frequency Daily, starting at strtotime( 'tomorrow' )
Purpose Finds customers whose latest Processing or Completed order is at least the configured number of days old.
Admin configuration Enabled from Days After Last Purchase > Enable coupon sending and Days to Elapse.
Behavior Sends the win-back email once per inactivity period and records results in cesfw_specific_days_last_run.

The scheduling functions first check that Action Scheduler helper functions exist. If they are unavailable, the recurring actions are not scheduled.

Frequently Asked Questions

Does the plugin require WooCommerce?

↑ Back to top

Yes. The plugin checks for WooCommerce and does not load its main functionality if WooCommerce is not active.

Where are the plugin settings?

↑ Back to top

Go to WooCommerce > Settings > Coupon Email System.

Can I enable only one trigger?

↑ Back to top

Yes. Each trigger has its own Enable coupon sending setting.

Is there a global enable setting?

↑ Back to top

Yes. Enable coupon email system settings must be enabled for production coupon emails to send.

Can I use my existing WooCommerce coupons?

↑ Back to top

Yes. Trigger pages can use an existing published WooCommerce coupon where that trigger supports coupon source selection.

Will existing coupons be changed?

↑ Back to top

By default, the plugin preserves the selected source coupon and creates recipient-specific clones when needed. A separate direct mutation mode exists but requires explicit confirmation.

Can the plugin generate coupons automatically?

↑ Back to top

Yes. Auto-generated coupons use the configured discount type, value, expiry, restrictions, and usage limits.

Can generated coupons be limited to the recipient?

↑ Back to top

Yes. When Restrict coupon to purchaser email is enabled, generated coupons are restricted to the recipient email.

Can I send test emails?

↑ Back to top

Yes. Each trigger page includes a test email field and button.

When do first purchase emails send?

↑ Back to top

They send when an order reaches Processing or Completed status and the plugin determines that the order is the customer’s first order.

When do registration emails send?

↑ Back to top

They send when WordPress fires the user_register action for a new user.

How do spent thresholds work?

↑ Back to top

You add target spend values and assign a coupon to each target. The plugin sends the coupon assigned to the highest threshold met by the current order.

How do order thresholds work?

↑ Back to top

You add target order counts and assign a coupon to each target. The plugin sends the coupon assigned to the highest eligible order-count milestone.

How do product purchase emails work?

↑ Back to top

The plugin checks whether the order contains one of the selected eligible products or variations.

How are birthdays collected?

↑ Back to top

When birthday emails are enabled, the plugin adds an optional birthday field to My Account and checkout. Values are stored as MM-DD.

Can birthday emails be sent to guests?

↑ Back to top

The scheduled birthday check loops through WordPress users. Guest birthday values may be saved on orders, but the scheduled birthday email process is user-based.

How often do scheduled emails run?

↑ Back to top

The birthday and days-after-last-purchase checks run daily through Action Scheduler.

Can customers unsubscribe?

↑ Back to top

Yes. The plugin generates signed unsubscribe URLs and skips future promotional coupon emails for suppressed recipients.

Does uninstall remove plugin data?

↑ Back to top

The included uninstall.php only exits when called outside WordPress. It does not delete plugin options or metadata.

Troubleshooting

Plugin not working

↑ Back to top

Confirm WooCommerce is installed and active. Also confirm Enable coupon email system settings is enabled in General Settings and the specific trigger is enabled.

Settings not saving

↑ Back to top

Make sure you are saving from the Coupon Email System WooCommerce settings tab. The settings save handler verifies the WooCommerce settings nonce and only runs when the tab is coupon_email_system_setting.

Dependency missing

↑ Back to top

If WooCommerce is inactive, the plugin displays an admin notice and exits. Activate WooCommerce first.

Emails not sending

↑ Back to top

Check:

  • Global plugin setting is enabled.
  • Trigger setting is enabled.
  • The related WooCommerce email class is enabled under WooCommerce email settings.
  • Recipient email is valid.
  • The trigger eligibility rules are met.
  • The recipient has not unsubscribed.
  • WooCommerce mail delivery is working.

Also review WooCommerce logs for the source coupon-email-system-for-woocommerce.

Feature not appearing

↑ Back to top

Birthday fields only appear when the birthday trigger is enabled. Checkout fields may be hidden for logged-in customers who already have a saved birthday.

Scheduled tasks not running

↑ Back to top

The birthday and last-purchase jobs depend on Action Scheduler helper functions. Confirm Action Scheduler is available through WooCommerce and that WP-Cron or your server cron is running.

Existing coupon not available

↑ Back to top

Only published WooCommerce coupons are listed in the selection dropdowns. Create or publish the coupon under Marketing > Coupons or WooCommerce > Coupons, depending on your WooCommerce admin menu.

Auto-generated coupon is not created

↑ Back to top

Auto generation requires a valid discount type and a discount amount greater than 0. Invalid settings can prevent coupon creation and therefore prevent the email from sending.

Birthday validation error

↑ Back to top

Enter birthdays in MM-DD format. Invalid month/day combinations are rejected.

Permission issues

↑ Back to top

AJAX actions for previewing and managing builder templates require a user who can manage_woocommerce.

Best Practices

  • Enable the global plugin setting only after configuring and testing triggers.
  • Use one trigger at a time when first setting up the plugin.
  • Keep Restrict coupon to purchaser email enabled for personal coupons.
  • Prefer Preserve original coupon for existing coupon behavior.
  • Use short expiry periods for incentive campaigns.
  • Add clear coupon details to the trigger message.
  • Include an unsubscribe link in promotional emails.
  • Use WooCommerce logs when troubleshooting production sends.
  • Avoid overlapping thresholds that could confuse campaign reporting.
  • Test each trigger after changing templates, coupon rules, or email copy.

Support

Before contacting support, collect:

  • WordPress version.
  • WooCommerce version.
  • PHP version.
  • Plugin version.
  • Whether WooCommerce is active.
  • Which trigger is affected.
  • Screenshot or summary of the trigger settings.
  • Whether the global plugin setting is enabled.
  • Coupon source setting and selected coupon or auto-generation settings.
  • Example order ID or user ID.
  • Recipient email address used for testing.
  • WooCommerce email settings status for the relevant email class.
  • WooCommerce log entries with source coupon-email-system-for-woocommerce.
  • Whether the recipient has used an unsubscribe link.
  • Whether Action Scheduler jobs exist for birthday or last-purchase emails, if a scheduled email is affected.

One of the most effective strategies  to retain customers and increase transactions is to assign special coupons or discount codes for your customers to make them feel special.

The WooCommerce Coupon Email System plugin will allow you to control the distribution of targeted coupons to entice visitors to buy the products on your website.

Coupon email system plugin helps you to create and send targeted coupons for special events to build customer loyalty and stimulate purchases.


    Related Products

    Offer add-ons like gift wrapping, special messages or other special options for your products.

    WooCommerce Subscriptions is a WooCommerce extension that lets customers subscribe to your products or services and pay on a weekly,...

    Use of your personal data
    We and our partners process your personal data (such as browsing data, IP Addresses, cookie information, and other unique identifiers) based on your consent and/or our legitimate interest to optimize our website, marketing activities, and your user experience.