Описание
Smart Cycle Discounts is a powerful WooCommerce discount rules plugin that helps you create, schedule, and automate promotions from one campaign wizard. Instead of manually editing sale prices product by product, you define a campaign once, set your rules, and let the plugin run it automatically.
If your store runs seasonal promotions, flash sales, BOGO campaigns, role-based offers, free shipping incentives, or advanced dynamic pricing strategies, Smart Cycle Discounts gives you the structure and control to execute them reliably.
This plugin is built for real store workflows:
— plan campaigns in advance
— launch promotions on time
— prevent overlap conflicts with priority rules
— stop discounts automatically when campaigns end
— keep pricing behavior consistent across your catalog
It works for small stores that need quick setup and for larger WooCommerce operations that need repeatable campaign processes.
Why Smart Cycle Discounts
Most WooCommerce stores eventually hit the same problems:
— discount setup takes too long
— manual sale edits create mistakes
— promotions stay live longer than intended
— multiple offers conflict on the same products
— campaign timing depends on someone being online at launch time
Smart Cycle Discounts solves these problems by moving discount management from product-by-product editing to campaign-based automation.
You decide:
— which products are included
— what discount type applies
— when the campaign starts and ends
— who should see or use the offer
— how this campaign should behave when other campaigns overlap
That means fewer manual tasks, fewer pricing errors, and better promotion execution.
5-Step Campaign Wizard
The plugin uses a practical 5-step wizard so campaigns are easy to create, review, and launch:
-
Basic Information
Set campaign name, description, and priority. -
Product Selection
Choose all products, specific products, random products, or advanced targeting. -
Discount Configuration
Pick discount type and configure values and rules. -
Schedule
Set exact start and end date/time with timezone support. -
Review & Launch
See a clear summary, validate settings, and publish with confidence.
This flow helps new users onboard quickly while giving advanced users enough control for complex discount logic.
Free Features
Smart Cycle Discounts includes strong functionality in the free version:
-
Percentage Discounts
Run classic percent-off campaigns (for example, 10%, 20%, 30% off). -
Fixed Amount Discounts
Apply flat value discounts (for example, $5 off, $15 off). -
BOGO Discounts
Create Buy One Get One style offers with flexible buy/get quantity and discount behavior. -
Free Shipping Campaign Support
Enable free shipping inside campaign logic and combine it with product discounts. -
User Role Targeting
Include only selected user roles or exclude selected roles for campaign eligibility. -
Product Selection Flexibility
Apply campaigns to all products, specific products, random picks, or filtered sets. -
Campaign Scheduling
Automatically activate and deactivate campaigns at the time you define. -
Priority Control
Resolve overlapping campaign situations with clear precedence. -
Guided Review Step
Validate and review your setup before launch. -
Campaign Management Workflow
Create, edit, duplicate, and monitor campaigns in one system.
For many stores, these features already replace manual discount operations.
Pro Features for Advanced Stores
Pro unlocks advanced WooCommerce discount strategy tools for growth-focused stores:
-
Tiered Quantity Discounts
Create volume pricing tiers (buy more, save more). -
Spend Threshold Discounts
Apply offers when cart totals reach a defined amount. -
Bundle Discounts
Define multi-product bundles with percentage off, fixed off, or flat bundle pricing. -
Advanced Subscription Discount Controls
Configure discount behavior for subscription scenarios with more precision. -
Expanded Rule Control
Fine-tune eligibility and promotion logic for more targeted campaigns.
These features are designed for stores that care about margin protection, average order value growth, and promotional precision.
Built for Real Promotion Scenarios
Smart Cycle Discounts is ideal for practical WooCommerce campaigns, including:
- store-wide seasonal sale
- category-specific weekend promotion
- BOGO campaign on selected products
- spend threshold offer to increase average order value
- bundle offer for complete product sets
- role-based pricing for wholesale or members
- time-limited flash discount
- free shipping plus discount combination campaigns
Because campaigns are reusable, you can duplicate successful promotions and relaunch them with adjusted dates, values, or product groups.
Bundle Discount Workflows
Bundle discounts are especially useful for cross-selling and set-based pricing strategy. You can define required products and apply discount logic only when the full bundle is present in cart.
Use bundle campaigns for:
— routine refill combinations
— starter kits
— frequently bought together sets
— complete look or complete setup offers
— gift bundles during holiday periods
Bundle configuration supports multiple discount modes so you can test which offer structure converts better in your market.
Role-Based WooCommerce Discounting
Role targeting helps stores run segmented offers without maintaining multiple catalogs.
You can:
— include only specific roles (for example, wholesale customers or VIP members)
— exclude specific roles (for example, internal staff)
— keep standard campaigns public while running private role-based promotions in parallel
This is useful for B2B/B2C hybrid stores, membership stores, and loyalty-based pricing models.
Free Shipping as a Campaign Lever
Shipping incentives can outperform pure price reductions in many niches. Smart Cycle Discounts lets you include free shipping in campaign setup, so it can run with your discount strategy instead of being configured separately.
You can combine:
— product discount + free shipping
— spend threshold + free shipping
— role-based discount + free shipping
— limited-time sale + selected shipping method logic
This gives you stronger promotional flexibility with better control over customer offer design.
Scheduling and Operational Reliability
Scheduling is where this plugin becomes a major operational advantage.
You can:
— prepare campaigns days or weeks in advance
— launch exactly at planned time
— stop campaigns automatically at end time
— avoid stale discounts staying active
— align on-site pricing with ad and email schedules
For teams, this reduces stress and avoids «midnight manual edits» during high-traffic campaign windows.
Priority and Campaign Conflict Control
When multiple discounts target overlapping products, priority rules help avoid unpredictable price behavior.
With Smart Cycle Discounts:
— campaign precedence is explicit
— overlap behavior is controlled
— pricing outcomes remain predictable
This is essential for stores running layered promotion calendars where multiple campaigns may touch similar product groups.
WooCommerce Compatibility
Smart Cycle Discounts is designed for modern WooCommerce environments and practical long-term use.
Key compatibility focus:
— WooCommerce HPOS support
— modern admin workflow compatibility
— dynamic pricing behavior aligned with WooCommerce logic
— campaign-based architecture suitable for medium and large catalogs
The plugin follows WooCommerce-oriented promotion behavior rather than forcing fragile one-off pricing hacks.
Performance and Scalability Mindset
Campaign-based management scales better than per-product editing. As catalog size and campaign frequency increase, manual sale updates become error-prone and slow.
Smart Cycle Discounts helps scale operations by:
— centralizing promotion logic
— standardizing campaign setup
— reducing repetitive admin work
— improving consistency across launches
— making campaign duplication and iteration faster
You spend less time on repetitive setup and more time on strategy.
Marketing and Conversion Benefits
Discount automation is not just admin convenience. It impacts conversion quality and campaign execution.
Potential benefits include:
— higher launch consistency
— faster campaign turnaround
— fewer pricing mistakes
— stronger urgency campaigns with exact timing
— improved average order value through thresholds, bundles, and tiers
— more personalized offers through role targeting
By running promotions through a structured system, stores can move from reactive discounting to intentional pricing strategy.
Agency and Team Friendly
For agencies and multi-user teams, campaign clarity is a major benefit. Smart Cycle Discounts provides a process clients and team members can follow without needing developer intervention for every promotion.
Why teams like this model:
— setup is wizard-driven and repeatable
— review stage improves quality control
— campaign names and summaries improve visibility
— scheduling reduces emergency edits
— role and product targeting reduce logic confusion
It is easier to hand off, easier to audit, and easier to maintain over time.
Who This Plugin Is For
Smart Cycle Discounts is a strong fit for:
- WooCommerce store owners running frequent promotions
- growth-focused stores testing dynamic pricing strategies
- wholesale and membership stores requiring role-based campaign control
- agencies delivering WooCommerce discount automation for clients
- teams that want clean campaign workflows instead of manual price editing
If your current discount process feels scattered, this plugin gives you a reliable operational framework.
Why It Stands Out
Many discount plugins add options. Smart Cycle Discounts adds structure.
You get:
— campaign-first logic
— guided setup flow
— practical discount types
— scheduling automation
— overlap control via priority
— role and shipping-aware promotion design
— clearer review before launch
It is built for execution quality, not just feature count.
Get Started
Install Smart Cycle Discounts, create your first campaign in minutes, and automate your WooCommerce promotions with confidence.
Start simple with percentage or fixed discounts. Expand into BOGO, free shipping, role targeting, tiered discounts, spend thresholds, and bundle strategies as your store grows.
If you need a WooCommerce discount plugin that combines campaign scheduling, dynamic pricing flexibility, and practical operational control, Smart Cycle Discounts is built for exactly that.
Getting Started
Quick Start
- Go to Campaigns > Create Campaign in your WordPress admin
- Follow the 5-step wizard: Basic Info > Products > Discounts > Schedule > Review
- Click Create Campaign to launch your discount
Example: 25% Off Flash Sale
- Basic Info: Name it «Flash Sale» with priority 5
- Products: Select «All Products» or pick specific items
- Discounts: Choose «Percentage» and enter 25
- Schedule: Set start date/time and end date/time
- Review: Verify settings and click Create
Your WooCommerce discounts will activate and deactivate automatically on schedule.
Managing Campaigns
Access Campaigns in your admin menu to view, edit, duplicate, or delete campaigns. Use bulk actions to manage multiple campaigns at once.
Need Help?
External services
This plugin connects to external services for licensing, updates, and optional email delivery. Below is a complete list of all external services used, including the specific domains contacted.
Freemius (License Management)
This plugin uses Freemius for license management, plugin updates, and optional usage analytics.
- Service provider: Freemius, Inc.
- Domains contacted: api.freemius.com, wp.freemius.com, checkout.freemius.com, users.freemius.com
- What it does: Handles Pro license activation/deactivation, delivers plugin updates, processes payments via secure checkout, and collects anonymous usage data (if opted-in)
- When data is sent: On plugin activation, license validation, update checks, Pro checkout, and if you opt-in to usage tracking
- What data is sent: Site URL, plugin version, license key (if Pro), WordPress version, PHP version, and anonymous usage statistics (only if opted-in)
- Terms of Service: https://freemius.com/terms/
- Privacy Policy: https://freemius.com/privacy/
Plugin Feedback API (Optional)
When deactivating the plugin, you may optionally provide feedback to help us improve.
- Service provider: Webstepper
- Domain contacted: api.smartcyclediscounts.com
- What it does: Collects optional deactivation feedback to improve the plugin
- When data is sent: Only when you choose to submit the optional deactivation feedback form during plugin deactivation
- What data is sent: Feedback reason, site URL, WordPress version, WooCommerce version, PHP version, plugin version, and basic usage statistics (number of campaigns created)
- Terms of Service: https://webstepper.io/terms-of-service/
- Privacy Policy: https://webstepper.io/privacy-policy/
SendGrid Email API (Optional)
This plugin can optionally connect to the SendGrid API to send email notifications about your discount campaigns.
- Service provider: Twilio SendGrid
- Domain contacted: api.sendgrid.com
- What it does: Delivers email notifications (campaign started, campaign ended, performance alerts)
- When data is sent: Only when you configure SendGrid as your email provider in Settings > Email Notifications AND an email notification is triggered by campaign events
- What data is sent: Recipient email address, email subject, and email body content (campaign status information only — no customer personal data is transmitted)
- Terms of Service: https://www.twilio.com/legal/tos
- Privacy Policy: https://www.twilio.com/legal/privacy
Amazon SES Email API (Optional)
This plugin can optionally connect to Amazon Simple Email Service (SES) to send email notifications about your discount campaigns.
- Service provider: Amazon Web Services
- Domain contacted: email.[region].amazonaws.com (where [region] is your configured AWS region, e.g., email.us-east-1.amazonaws.com)
- What it does: Delivers email notifications (campaign started, campaign ended, performance alerts)
- When data is sent: Only when you configure Amazon SES as your email provider in Settings > Email Notifications AND an email notification is triggered by campaign events
- What data is sent: Recipient email address, email subject, and email body content (campaign status information only — no customer personal data is transmitted)
- Terms of Service: https://aws.amazon.com/service-terms/
- Privacy Policy: https://aws.amazon.com/privacy/
Important: All external services except Freemius (required for licensing) are completely optional. The plugin works fully without configuring SendGrid or Amazon SES. The Plugin Feedback API is only contacted if you explicitly choose to submit feedback during deactivation. No email data is transmitted unless you explicitly enable and configure email integrations in Settings > Email Notifications.
Additional Information
Support
Privacy
Campaign data is stored locally in your WordPress database. The plugin does not collect or transmit customer personal data. See the «External services» section for details about third-party integrations.
Links
Скриншоты

Campaigns list — Manage all campaigns with status, schedule, health scores, and quick actions 
Campaign overview panel — Quick view of campaign settings and real-time performance metrics 
Campaign wizard Step 1 — Basic information with campaign name, description, and contextual help 
Campaign wizard Step 2 — Product selection with category tree and filtering options 
Campaign wizard Step 3 — Discount configuration with live badge preview and positioning 
Campaign wizard Step 4 — Schedule configuration with date/time picker and duration calculator 
Campaign wizard Step 5 — Review with smart recommendations and campaign summary sidebar 
Dashboard health widget — Monitor all campaigns with 6 health indicators at a glance 
Campaign planner — Smart suggestions for upcoming events and seasonal promotions 
Analytics dashboard — Track revenue, conversions, click-through rates, and performance trends 
Main dashboard — Performance summary with campaign cards sorted by urgency
Блоки
Этот плагин предоставляет 1 блок.
- Discount Showcase Display active discounts and campaigns in an attractive showcase format.
Установка
Minimum Requirements
- WordPress 6.4 or later
- WooCommerce 8.0 or later
- PHP 7.4 or later (PHP 8.3+ recommended)
- MySQL 5.6 or later / MariaDB 10.1 or later
Automatic Installation
- Log in to your WordPress dashboard
- Navigate to Plugins > Add New
- Search for «Smart Cycle Discounts»
- Click Install Now and then Activate
- You’ll see a new Campaigns menu item in your WordPress admin sidebar
- Click Campaigns > Create Campaign to launch the wizard and create your first discount campaign
Manual Installation
- Download the plugin zip file
- Log in to your WordPress dashboard
- Navigate to Plugins > Add New > Upload Plugin
- Choose the downloaded zip file and click Install Now
- Click Activate Plugin
- Navigate to Campaigns > Create Campaign to get started
Часто задаваемые вопросы
-
How do I schedule WooCommerce sales automatically?
-
Install Smart Cycle Discounts, create a campaign using the 5-step wizard, and set your start and end dates in the Schedule step. The plugin automatically activates your sale prices at the scheduled time and removes them when the campaign ends. No manual work required — your WooCommerce sale prices update themselves on schedule.
-
Is this a WooCommerce dynamic pricing plugin?
-
Yes. Smart Cycle Discounts supports dynamic pricing through multiple discount types. The free version includes percentage discounts, fixed amount discounts, and BOGO deals. The Pro version adds tiered quantity pricing (buy more, save more), spend threshold discounts, and bundle deals — all the dynamic pricing options you need for a WooCommerce store.
-
Can I set up BOGO deals in WooCommerce with this plugin?
-
Yes. BOGO (Buy One Get One) deals are included free. You can create Buy 1 Get 1 Free, Buy 2 Get 1 at 50% off, or any custom buy/get combination with your chosen discount percentage. BOGO campaigns run on the same automated schedule as all other discount types.
-
How do I create bulk discounts for WooCommerce?
-
Use the Tiered Quantity Discounts feature (Pro). Set quantity breaks like: Buy 5+ get 10% off, Buy 10+ get 20% off, Buy 25+ get 30% off. The discount applies automatically at checkout based on the quantity in the cart. Perfect for wholesale, B2B, and volume-based WooCommerce pricing.
-
How do I automate Black Friday and Cyber Monday sales?
-
Create a campaign with your desired discount, select your products, and schedule it for your Black Friday dates (e.g., November 29 12:00 AM to December 2 11:59 PM). You can set this up weeks in advance using Draft mode. The campaign activates and deactivates automatically — no midnight price editing required.
-
Is Smart Cycle Discounts compatible with my theme?
-
Yes. Smart Cycle Discounts is a backend plugin that works with any properly coded WordPress theme. It integrates with WooCommerce’s native sale price system, so your theme’s existing sale price styling applies automatically. No theme modifications needed.
-
Can I schedule campaigns in advance?
-
Yes. Use the Schedule step in the wizard to set specific start and end dates/times. Campaigns activate and deactivate automatically based on your schedule. You can create campaigns weeks or months in advance using Draft status, then set them to Scheduled when ready.
-
How many campaigns can I create?
-
There are no campaign limits — you can create and run unlimited campaigns in both the free and Pro versions. Run as many simultaneous promotions as your store needs.
-
What’s the difference between the discount types?
-
Free Version:
— Percentage: Reduce price by a percentage (e.g., 25% off = $100 product becomes $75)
— Fixed Amount: Reduce price by fixed amount (e.g., $10 off = $100 product becomes $90)
— BOGO: Buy One Get One offers with flexible configurations (e.g., Buy 2 Get 1 Free)Pro Version:
— Tiered: Quantity-based dynamic pricing (e.g., Buy 5 get 10% off, Buy 10 get 20% off)
— Spend Threshold: Discount based on cart total (e.g., Spend $100 get 15% off)
— Bundle: Product bundle deals (e.g., Buy shampoo + conditioner + mask for 20% off) -
Will this slow down my site?
-
No. Smart Cycle Discounts uses optimized database queries, efficient caching, and loads assets only on admin pages where needed. Frontend performance is not impacted. The plugin is designed to handle stores with thousands of products efficiently.
-
Can I run multiple discount campaigns at the same time?
-
Yes. You can run unlimited campaigns simultaneously. Use the Priority field (1-5, where 5 is highest priority) to control which campaign takes precedence when multiple campaigns affect the same product. This prevents discount stacking and gives you full control.
-
What’s the difference between «All Products», «Specific Products», and «Random Products»?
-
- All Products — Applies discount to your entire product catalog. Best for store-wide sales.
- Specific Products — You manually select which products to discount using the AJAX-powered product search. Best for targeted promotions.
- Random Products — Plugin automatically selects X random products from your catalog each day. Best for «deal of the day» promotions that drive repeat visits.
-
Does it work with WooCommerce HPOS (High-Performance Order Storage)?
-
Yes. Smart Cycle Discounts is fully compatible with WooCommerce HPOS and has been tested with custom order tables. It works with both the legacy post-based storage and the new High-Performance Order Storage system.
-
Does it work with WooCommerce Subscriptions?
-
Yes. Subscription products are fully supported. On the free tier, discount campaigns apply to the recurring subscription price automatically — no special setup needed. Your subscription product pages show strikethrough pricing just like regular products (e.g., ~~$29/month~~ $23.20/month). The Pro version adds advanced subscription controls: choose whether to discount the recurring price, the sign-up fee, or both. You can also limit discounts to the first X renewal payments — for example, «20% off for the first 3 months, then full price.» If WooCommerce Subscriptions is not installed, the subscription settings simply don’t appear in the wizard.
-
Does it work with WooCommerce block-based cart and checkout?
-
Yes. Smart Cycle Discounts fully supports WooCommerce block cart and checkout pages (WooCommerce 8.3+). Discounted prices display correctly with strikethrough formatting in both classic templates and the new block-based cart/checkout. The plugin automatically detects which template you’re using and applies the appropriate discount display logic. No configuration needed — it just works.
-
Can I duplicate an existing campaign?
-
Yes. On the Campaigns list page, hover over any campaign and click the «Duplicate» action. This creates a copy of the campaign with all settings intact, which you can then modify as needed. Great for creating seasonal promotions based on previous campaigns.
-
How does the priority system work?
-
When multiple campaigns affect the same product, the campaign with the highest priority (5 = highest, 1 = lowest) takes precedence. This lets you run multiple campaigns without conflicts — for example, a high-priority flash sale can override a lower-priority seasonal discount.
-
Can I export campaign data?
-
Campaign analytics and export features are available in the Pro version. Pro users can export campaign performance data in CSV or JSON format, and schedule automated reports.
-
What happens when a campaign ends?
-
When a campaign reaches its end date/time, it automatically deactivates and removes the sale prices from affected products. The campaign remains in your list as «Expired» and can be duplicated or reactivated with new dates. Your original product prices are restored automatically.
-
Is there a way to test campaigns before activating them?
-
Yes. Use the Draft status to create and configure campaigns without activating them. You can review the campaign settings, check the health score, and preview which products will be affected. When ready, change the status to Active or Scheduled.
-
Does it work with WooCommerce variable products?
-
Yes. Smart Cycle Discounts fully supports WooCommerce variable products. When you apply a discount to a variable product, all variations receive the discount automatically. The sale price displays correctly on both the main product page and individual variation selections.
-
Can I exclude products that are already on sale?
-
Yes. The plugin respects existing sale prices. If a product already has a manual sale price set in WooCommerce, you can configure your campaign to skip those products or override them based on your preference.
-
Can I offer free shipping with discount campaigns?
-
Yes. Enable free shipping for any campaign with a single toggle in the Discounts step. When enabled, customers receive free shipping on qualifying orders. You can apply free shipping to all shipping methods or select specific methods like flat rate or local pickup. This is included in the free version.
-
Can I create wholesale or member-only discounts?
-
Yes. Use the User Role Targeting feature to restrict discounts to specific WordPress user roles. Choose «Include» mode to give discounts only to selected roles (e.g., «Wholesale Customer» or «Premium Member»), or «Exclude» mode to give discounts to everyone except certain roles. This makes it easy to create B2B pricing, membership discounts, or role-based promotions — all from the same WooCommerce store.
-
Does it work alongside WooCommerce coupons?
-
Yes. Campaign discounts and WooCommerce coupons work independently. Campaign discounts apply to product prices (shown as sale prices), while coupons apply at checkout. Customers can use both together unless you configure specific restrictions.
-
What happens if two campaigns affect the same product?
-
The campaign with the higher priority wins. Each campaign has a priority setting from 1 (lowest) to 5 (highest). When multiple active campaigns include the same product, only the highest-priority discount applies. This prevents discount stacking and gives you full control over which promotions take precedence.
-
How is this different from WooCommerce’s built-in sale price feature?
-
WooCommerce’s built-in sale prices are set per product — you need to edit each product individually. Smart Cycle Discounts lets you manage discounts at the campaign level: select hundreds of products at once, set a schedule, and the plugin handles everything automatically. You also get features like priority management, health monitoring, random product rotation, and campaign intelligence that WooCommerce doesn’t offer natively.
-
Can I create recurring weekly or monthly promotions?
-
The Pro version supports recurring campaigns with two powerful modes. Continuous mode toggles your campaign active/inactive based on time windows — perfect for daily happy hours or weekend specials without creating hundreds of database entries. Instances mode creates separate campaign copies for each occurrence with individual analytics. Set up a «Weekend Flash Sale» once and schedule it to repeat every weekend, or create monthly promotions that run automatically. The free version supports one-time campaigns with specific start and end dates.
-
What WooCommerce discount types are supported?
-
The free version supports percentage discounts, fixed amount discounts, and BOGO deals (Buy One Get One) on any WooCommerce product. The Pro version adds tiered quantity discounts (volume-based dynamic pricing), spend threshold discounts (minimum cart value offers), and bundle discounts (buy a set of products together for a deal). All discount types work with the automated scheduling system.
-
Is there a limit on how many products I can discount?
-
No. You can apply discounts to your entire product catalog or select specific products. The plugin is optimized with efficient database queries and caching to handle stores with thousands of products without performance issues.
-
Can I set minimum order requirements for discounts?
-
Yes (Pro). Application rules let you fine-tune when discounts apply. Set minimum quantity requirements (e.g., «discount only applies when buying 3+ items»), minimum order value thresholds, and choose whether to exclude products already on sale. These rules give you precise control over discount eligibility.
-
How do I control discount stacking with coupons?
-
Pro users can configure combination policies for each campaign. Choose whether your campaign discount can be combined with WooCommerce coupon codes or if it should be mutually exclusive. This prevents over-discounting and protects your margins when running multiple promotions.
Отзывы
Участники и разработчики
«Smart Cycle Discounts – Automated Sale Campaigns for WooCommerce» — проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:
УчастникиПеревести «Smart Cycle Discounts – Automated Sale Campaigns for WooCommerce» на ваш язык.
Заинтересованы в разработке?
Посмотрите код, проверьте SVN репозиторий, или подпишитесь на журнал разработки по RSS.
Журнал изменений
1.7.36
- Fix: Synced release version metadata and packaging after previous tag/version mismatch.
1.7.35
- Improvement: Upgraded auto badge text generation with smarter discount-type messaging (percentage, fixed, BOGO, tiered, spend threshold, bundle).
- Improvement: Spend Threshold auto labels now derive the minimum threshold amount for clearer value messaging.
- Fix: Custom badge text now consistently takes precedence over phase labels (e.g.,
Starts Soon/Ends Soon) in shortcode rendering. - Fix: Currency-position formatting for badge amounts now correctly respects WooCommerce
left_spaceandright_spacesettings. - Fix: Location targeting now ignores WooCommerce guest base-location fallback (
base/shop_base) until a real billing/shipping country is provided, preventing false storefront discount blocking. - Maintenance: Removed redundant auto-text branching and completed cleanup/hardening across display, AJAX, and shortcode badge text flows.
1.7.34
- Improvement: Replaced deprecated high-frequency DOM removal listener with
MutationObserverfor countdown badge cleanup to reduce frontend overhead on dynamic pages. - Fix: Prevented duplicate countdown intervals during badge/timer re-initialization and corrected timer cleanup reference to avoid potential leaked intervals.
- Improvement: Optimized badge render hot paths with request-level caching for display settings and cache-version/hash resolution in WooCommerce badge services.
1.7.33
- Fix: Corrected Freemius GitHub Actions tag trigger patterns to support both
X.Y.ZandvX.Y.Zrelease tags. - Improvement: Completed Location Targeting country selector integration with Tom Select, including reliable state sync for save/edit/persistence flows.
- Improvement: Aligned Location Targeting country selector styling with wizard Tom Select visuals for consistent admin UI.
1.7.32
- New: Added checkout notice when country-targeted discounts are not eligible for the selected billing/shipping country.
- Improvement: Wired checkout country-change AJAX refresh so the ineligible-country notice updates reliably during order review recalculation.
- Improvement: Upgraded Location Targeting country selection to Tom Select for faster search and cleaner multi-select UX in the campaign wizard.
- Fix: Hardened location targeting data persistence and edit-mode population for country selections to ensure values save/load consistently.
- New: Added global Display setting to match product-page discount details styling with campaign badge colors.
- Improvement: Added contrast-safe color fallback for discount-details text when custom badge colors have low readability.
- Improvement: Completed bundle discount-details style parity so bundle detail blocks match the same color-sync behavior as other advanced discount types.
1.7.31
- Improvement: Added two new badge templates,
banner_topandbanner_bottom, for full-width top/bottom promotional badge layouts. - Fix: Extended badge template rendering and preview wiring so new templates apply consistently instead of falling back to default visuals.
- Improvement: Polished badge display styling and long-text handling for better readability across templates.
1.7.30
- Fix: Campaign edit mode now correctly preloads subscription discount fields (
subscription_discount_target,subscription_renewal_limit) instead of falling back to defaults. - Fix: Completed-step state key alignment in wizard localization improves edit-session progress restoration consistency.
- Fix: Review summary now reads campaign name from canonical
namefield with legacy fallback, preventing missing-name summaries. - Improvement: Additional edit-mode data hardening for recurring/schedule payload normalization and campaign ID resolution.
1.7.29
- Fix: Resolved badge-style fallback issue where some campaigns (notably BOGO) could render default red/white/default-template output despite custom badge settings.
- Improvement: Unified badge style source-of-truth by synchronizing campaign badge entity properties with
discount_rules.badgefor all discount types. - Improvement: Hardened frontend badge payload generation to prefer persisted
discount_rules.badgevalues (including legacy template/style compatibility), improving consistency across shop/product/cart badge contexts.
1.7.28
- Fix: Enforced runtime discount rules for percentage and fixed campaigns across shop/cart/checkout flows by merging persisted
discount_rulesfor all discount types. - Fix: Restored coupon-compatibility enforcement (
allow_coupons) in winning-campaign runtime data by including campaign rule payload in discount query responses. - Improvement: BOGO config compatibility hardened (key normalization + persistence handling) with validation guardrails for unsupported «different products» targeting mode.
1.7.27
- Improvement: Tiered discount
apply_tohandling was streamlined and aligned tocart_total/per_itembehavior for more reliable configuration and runtime application. - Improvement: Tiered validation and data handling were hardened for mixed payload formats to improve compatibility and reduce configuration edge cases.
- Fix: Spend Threshold wizard handling now correctly persists edited threshold amounts and consistently supports both camelCase and snake_case threshold payloads.
- Fix: Spend Threshold runtime validation now treats advisory checks as non-blocking so valid threshold configurations apply correctly on storefront and cart flows.
1.7.26
- Fix: Prevented cart line-item price resets when no Smart Cycle campaign discount applies, avoiding conflicts with third-party add-ons that set custom item prices (e.g., product add-ons/tiered pricing).
- Fix: Added safe per-line restore behavior so previously applied Smart Cycle discounts can be removed without overwriting external pricing adjustments.
1.7.25
- Fix (Pro Analytics): Corrected dashboard API field bindings to support camelCase response keys for top products and activity feed rendering.
- Fix (Pro Analytics): Aligned analytics export capability checks (
wsscd_export_analytics) across security mapping and export handler to prevent permission mismatches. - Improvement (Pro Analytics): Deep integration audit pass with endpoint wiring verification and runtime hardening for analytics page reliability.
1.7.24
- Fix: Removed forced gallery wrapper width (
width: 100%) from product badge CSS to resolve Blocksy single-product gallery layout conflicts. - Fix: Badge display settings persistence hardened by improving conditional field visibility resolution in step persistence (live DOM-first with correct radio handling).
- Fix: Campaign schedule «Run indefinitely» now persists correctly by preventing hidden
duration_secondsdefaults from overriding empty end-date saves. - Fix (Pro Analytics): Completed campaign filter wiring across dashboard endpoints (overview, revenue trend, top products, top campaigns, and export) with consistent request/response integration.
- Fix (Pro Analytics): Overview metric cards now update reliably using stable metric keys instead of order-based DOM mapping.
- Fix (Pro Analytics): Export flow fully aligned between UI and backend (
export_type,format,campaign_id) with normalized values and unsupported paths removed. - Improvement (Pro Analytics): Added centralized server-side normalization/validation for analytics date ranges and metric keys to reduce invalid-input regressions.
- Improvement (Pro Analytics): Single-campaign overview mode now returns normalized overview payload shape for consistent frontend rendering.
- Improvement (Pro Analytics): Campaign-aware filtering now applies consistently to campaign performance and top-product analytics endpoints.
- Maintenance (Pro Analytics): Removed unused/redundant dashboard analytics code paths and selector references.
1.7.23
- New: Added centralized
Display & Badgessettings tab for global badge visibility, behavior, overlap strategy, and cache controls. - New: Expanded badge templates with full wiring across settings, wizard, validation, and frontend rendering:
square,circle,tag, anddashed(plus existing templates). - Improvement: Badge template preview now updates in real time in the wizard, including enhanced-select change handling and clearer template-specific visuals.
- Fix: Badge colors and template styles are now consistently connected across WooCommerce rendering and frontend AJAX badge responses.
- Improvement: Added campaign badge-template support end-to-end (wizard state/mapping, compiler, repository hydration, and display resolution with global fallback).
- Maintenance: Migrated legacy badge settings into unified display settings storage.
- Breaking/Internal: Removed legacy display system and unified runtime badge rendering through WooCommerce display integration.
- Fix: Campaign overview now reads
badge_templatecorrectly, with legacybadge_stylefallback retained for older data. - Improvement: Centralized badge template definitions and validation in a shared helper to avoid drift across settings, validators, and renderers.
- Fix: Template-specific color behavior for
outlineanddashedis now consistent across WooCommerce, shortcode, and AJAX badge rendering paths. - Improvement: Badge preview now reflects phase-based auto text behavior (
Starts Soon/Ends Soon) using global phase settings.
1.7.22
- Fix: Object cache compatibility improved for Object Cache Pro prefetch by storing campaign cache payloads as arrays instead of class instances (with legacy cache migration on read).
- Fix: Reactivation flow now allows
expired -> activetransitions when activation validation passes, matching documented behavior. - Improvement: Campaign list and bulk activation actions no longer hard-block expired campaigns; campaigns with past end dates still show clear schedule validation errors.
1.7.21
- Fix: Campaigns Import button now opens the calculator import modal correctly (removed inline hidden styles that blocked the modal/error state from toggling).
1.7.20
- New: Added
Avoid same products in consecutive rotationsoption for Random Products campaigns. - Improvement: Random selection now supports excluding products used in the previous cycle while preserving requested per-category counts with safe fallback behavior.
- Improvement: Previous random selections are now stored in campaign metadata and reused on next compilation for recurring/random rotations.
- Improvement: Full end-to-end wiring for the new option across wizard UI, validation, mapping, compiler formatting, and edit-mode repopulation.
- Improvement: Refined styling for the new random-selection option in the Products step for clearer readability and interaction states.
- Fix: Random product count resolution now consistently uses the dedicated
random_product_countfield with backward-compatible fallback to legacy settings/metadata values. - Fix: Conflict checker and coverage preview now resolve products through a shared selection path for all selection types, including random/smart rules and conditions logic.
- Fix: Campaign repository hydration now normalizes settings/metadata payloads and keeps legacy
settings.random_countsynchronized for random campaigns. - Fix: Campaign repository criteria filtering/counting now supports
product_selection_typeand correctly preserves zero-value criteria such asenable_recurring = 0. - Improvement: Removed duplicated/dead product selection code from conflict and coverage handlers by centralizing logic in shared wizard helpers.
- Maintenance: Lightweight PHPUnit configuration now references existing unit test files so the lightweight suite executes valid targets.
1.7.11
- Improvement: Priority system refactored into a centralized utility for deterministic campaign ordering and conflict decisions (priority DESC, older campaign wins ties).
- Improvement: Unified priority constants and defaults across validation, import, wizard state, admin settings, summaries, and AI mapping to remove drift and duplicated rules.
- Fix: Coupon compatibility checks now align with winning-campaign resolution logic so coupon blocking follows the same campaign selection path as runtime pricing.
- Fix: Conflict preview/check handlers now use shared edit-aware tie logic for consistent behavior when creating and editing campaigns.
- Improvement: Campaign health messaging now explicitly explains equal-priority tie behavior (oldest campaign wins) to reduce ambiguity in overlap diagnostics.
- Fix: Campaign health now normalizes schedule fields consistently from both object and database sources (including UTC starts_at/ends_at conversion), preventing date/time drift in checks.
- Fix: Health overlap detection now uses proper interval math for open-ended campaigns, preventing false conflict positives when end dates are missing.
- Improvement: Health stock analysis now uses lightweight checks in standard mode and keeps predictive depletion analysis in comprehensive mode for better performance.
- Fix: Health review payload now includes complete wizard data mapping (product IDs, limits, conditions, and discount config structures) for accurate diagnostics.
- Improvement: Dashboard health mapping now preserves warning/issue codes and campaign metadata, with products category fully wired into status output and widget rendering.
- Improvement: Coverage integration now uses a dedicated handler API (reflection removed), with edit-aware coverage/conflict calculation consistency.
- Fix: Cross-step validator typo corrected so high-price condition logic evaluates the intended value field.
- Improvement: Priority-related query ordering normalized in repository/dashboard/performance/analytics paths for consistent outcomes.
- Improvement: Added focused unit tests for centralized priority logic and cleaned test bootstrap failure path for clearer local test diagnostics.
1.7.1
- Improvement: BOGO discount is now fully available in the Free version across UI, validation, runtime strategy registration, and packaging.
- Fix: Removed leftover Pro gating for BOGO in server-side discount type validation and discount details UI state handling.
- New: Added WooCommerce Native Discount Reset tool with safe Analyze + Execute flow to clear native sale metadata and restore original pricing.
- Fix: Native sale metadata detection and reset now correctly process both products and variations.
- Fix: Free Shipping and User Roles settings persistence stabilized in the campaign wizard.
- Improvement: Notifications settings UI restructured to match Tools section cards and improved field spacing/alignment.
1.7.0
- New (Pro): Bundle Discount type — define product bundles and offer discounts when customers buy all items together.
- New (Pro): Three bundle discount modes — percentage off each item, fixed amount off each item, or a flat bundle price.
- New (Pro): Rich product picker for bundle builder with images, stock badges, sale badges, type icons, price, SKU, and category tags.
- New: Shared ProductOptionRenderer — both Products step and Bundle Discount pickers now render identical rich product dropdowns.
- Improvement: Bundle product picker uses TomSelectBase shared class with pagination, caching, error handling, and crash protection.
- Improvement: Bundle picker aligned with Products step — preload on focus, SKU search, and consistent dropdown behavior.
- Improvement: Products step addProductOptions now preserves enhanced product data (stock status, sale info, type, category) for richer dropdown rendering.
- Fix: Missing notification-service dependency on Tools page caused notifications to render at page bottom instead of in the notification area.
- Fix: Bundle discount configuration fields (discount type cards, value input) now properly styled with CSS matching the wizard design system.
- Fix: Bundle discounts now apply correctly in cart totals, including flat bundle price calculations.
- Fix: Bundle configuration now persists and repopulates correctly when editing campaigns.
- Fix: Free shipping settings now persist reliably across wizard navigation (toggle and method selection).
- Fix: User role targeting save/validation/persistence corrected, with proper role collection and handler readiness.
- Fix: Contextual sidebar help now updates reliably for Free Shipping and User Roles at card level and element level.
- Code: Removed ~550 lines of dead CSS and duplicated render code through shared utility extraction.
1.6.2
- Fix: Corrected Freemius Pro code stripping for subscription sign-up fee hook registration.
- Fix: Use official __premium_only method suffix pattern for WordPress.org compliance.
1.6.0
- New: WooCommerce Subscriptions support — discount campaigns now work on subscription products automatically.
- New: Recurring subscription prices show strikethrough discounts on product pages, shop pages, and cart.
- New: Subscription and variable-subscription product types recognized in campaign product conditions.
- New (Pro): Subscription discount target selector — choose to discount recurring price, sign-up fee, or both.
- New (Pro): Renewal limit control — limit discounts to the first X renewal payments, then revert to full price.
- New (Pro): Automatic renewal tracking per subscription with campaign linkage at checkout.
- New (Pro): Subscription Discount Settings card in wizard discounts step with contextual help.
- Improvement: Graceful degradation when WooCommerce Subscriptions is deactivated — no errors, no UI clutter.
1.5.70
- New: WooCommerce block-based cart and checkout support — strikethrough pricing now displays correctly in block cart/checkout pages alongside classic templates.
- Improvement: Added Store API extension to expose discount metadata for block-based cart and checkout rendering.
- Improvement: Client-side currency formatting with full locale support, dark mode, and high contrast accessibility.
- Improvement: Declared cart_checkout_blocks compatibility for WooCommerce 8.3+ feature detection.
1.5.69
- Visual improvements.
1.5.68
- Small Bug Fixes.
1.5.67
- Small Bug Fixes.
1.5.66
- Small Bug Fixes.
1.5.65
- Improvement: New in-plugin Help & Support page with card-based layout that links directly to documentation, support center, and campaign ideas so users can get help without leaving the admin.
- Improvement: Floating help button added to all Smart Cycle Discounts admin screens (excluding the campaign wizard) for one-click access to the Help & Support hub.
- Improvement: Contextual help links added to the dashboard empty state and Tools page, plus a smart wizard sidebar docs footer that deep-links directly to per-topic documentation instead of a second generic Help Center link.
- Improvement: Wizard sidebar footer restyled to match the plugin’s card-based admin design and keep the “Open documentation for this topic” link visually prominent but unobtrusive.
- Fix: Admin notification documentation updated to use the correct
WSSCD.Shared.NotificationServicenamespace andwsscd:notifyevent name, eliminating confusion between docs and implementation.
1.5.64
- Bug fixes.
1.5.63
- Fix: Free shipping and Recurring schedule no longer appear as enabled in Campaign Overview and List when they were disabled or never enabled. Root cause: boolean field collection used :checked (checkbox-only); schedule uses a hidden input with value «0»/»1″. Shared field logic now reads/writes .val() for boolean fields on non-checkbox/radio elements so the schedule step value is saved and displayed correctly.
1.5.62
- Fix: PHP 8 TypeError in recurring campaigns – DateTime::__construct() no longer receives a DateTime object. Recurring handler now accepts campaign start/end as either DateTime or string (clone and set timezone when DateTime, parse string otherwise). Fixes critical error when loading frontend or AJAX with recurring campaigns active.
1.5.61
- Fix: AJAX handler method signatures aligned with abstract base (handle parameter type removed) so PHP no longer throws «Declaration must be compatible» fatal on Track Impression, Track Click, and Test Provider Connection handlers. Prevents critical error when updating or loading admin pages that use these handlers.
1.5.6
- Fix: Campaign overview no longer fails with «Failed to load campaign data» after creating a campaign. Schedule section now handles empty or invalid timezone and non-DateTime values safely; overview panel shows actual server error messages.
- Fix: Tools page (Clear cache, Health check, Generate report) now displays the real error message from the server instead of a generic «Please try again» when a request fails. Error callback reads response.error.message when present.
- Fix: Admin nonce (wsscdAdmin) is now registered when the user has manage_options OR manage_woocommerce, so Tools and other AJAX actions work on live free sites where the Administrator role may not have manage_woocommerce. Fixes «Error clearing cache / health check / report» only on live free version.
1.5.5
- Fix: Free version no longer returns 403 «Campaign stacking policy requires a PRO license» when creating or updating campaigns. Campaign data is normalized to free-tier defaults before PRO validation so compiled/session data from UI or loaded campaigns does not trigger false rejections.
1.5.4
- Fix: Migrations 002, 003, 004 now throw on ALTER/query failure so they are not marked as run when the schema change failed (fixes campaign save errors after timeout or lock)
- Fix: Schema drift repair – if migrations table says 002/003 ran but campaigns table is missing columns, those migration records are cleared so migrations run again on next load
- Ensures campaign creation works after plugin update even when earlier migrations had failed silently
1.5.3
- Fix: Run pending database migrations on every plugin load so schema stays up to date (fixes «Unknown column ‘user_roles’» when migrations had not run)
- Fix: Campaign save only persists columns that exist in the table (defensive when migrations are pending)
- Fix: Migration manager queries corrected for compatibility so pending migrations are detected reliably
- Fix: Removed redundant error-reporting band-aids from campaign save and save-step handler
- Improvement: Deploy script supports «local» mode for WordPress.org (deploy full version excluding only Cycle AI)
- Code: Cycle AI script and style registration is conditional so the plugin works when AI files are excluded from the package
1.5.2
- New: Discount badges now display on all product gallery images (main image + thumbnails)
- New: Compact badge text for thumbnails (e.g., «-20%», «BOGO», «DEAL») for better visual balance
- New: Dynamic spend threshold progress bar shows real-time progress toward next discount tier (Pro)
- New: AJAX-powered cart updates — progress bar refreshes automatically when items are added/removed (Pro)
- New: Filter hook
wsscd_show_gallery_thumbnail_badgesto disable thumbnail badges if needed - Improvement: Gallery thumbnail badges use smaller positioning offsets for cleaner appearance
- Improvement: Progress bar animates smoothly when cart total changes
- Improvement: Formatted price display in progress messages uses WooCommerce currency settings
- Code: New
WSSCD_Frontend_Ajax_Handlerclass for frontend AJAX operations (Pro)
1.5.1
- New: Redesigned Campaign Period section with modern horizontal date range layout
- New: Inline toggle buttons for «Immediately» vs «Scheduled» start type selection
- New: Visual date boxes with accent colors — green for start, primary for end
- New: «Indefinite» state styling with dashed border when no end date is set
- New: Compact duration bar showing campaign length with contextual hints
- Improvement: Timeline preview now shows infinity symbol (∞) for «forever» recurring campaigns
- Improvement: Timeline styling updated to match plugin design system with CSS variables
- Improvement: Timeline tooltips now show full date ranges on hover (e.g., «Feb 1-3, 2026»)
- Improvement: Recurrence end date picker disables invalid dates directly in calendar
- Improvement: Calendar minimum date updates dynamically based on campaign settings
- Improvement: Validation errors now persist until user fixes the issue
- Improvement: Clearer validation message «Campaign must end after it starts»
- Fix: Timeline tooltip z-index corrected to display above other elements
- Fix: Removed horizontal scrolling from timeline — uses centered flex layout
- Fix: Time field validation properly checks context (required only when applicable)
- Code: Removed 109 lines of legacy schedule selection card code
1.5.0
- New: Smart recurrence validation system — prevents invalid recurring schedule configurations
- New: Constrained day selection for weekly recurring campaigns — days that would cause overlap are automatically disabled
- New: Recurrence end date validation — warns when end date is in the past or before first recurrence would start
- New: Monthly pattern edge case detection — informs users about date shifting for campaigns ending on days 29-31
- New: Timeline preview shows date ranges for all occurrences (e.g., «15-18 Feb» instead of just «15 Feb»)
- New: Dynamic preview count — shows all occurrences for small counts, summarizes larger ones
- New: Initial validation on page load for editing existing campaigns with invalid settings
- Fix: Recurrence mode now properly loads when editing existing recurring campaigns
- Fix: Corrected recurrence logic — interval is gap between instances (end-to-start), any positive interval is valid
- Improvement: Weekly day selection shows informative message explaining spacing requirements
- Improvement: Disabled day chips visually indicate unavailable options with grayed-out appearance
- Improvement: All frontend validations mirrored in backend PHP for security
- Improvement: Smarter UX — impossible configurations prevented rather than error messages after the fact
1.4.0
- New: Continuous Recurring Mode — campaigns toggle active/inactive based on time schedule without creating database instances (Pro)
- New: Two operational modes for recurring campaigns: «Continuous» (time-window based) and «Instances» (materialized copies)
- New: Continuous mode ideal for daily happy hours, weekend specials, and weekly promotions
- New: Instances mode preserves per-occurrence analytics and individual campaign tracking
- New: Recurrence mode displayed in wizard review step configuration summary
- Improvement: Database migration adds recurrence_mode column with backwards compatibility
- Improvement: Campaign manager filters continuous recurring campaigns by active time window
- Improvement: Edit mode properly loads recurrence_mode from recurring settings table
1.3.0
- New: User role targeting — restrict discounts to specific WordPress user roles
- New: Include/exclude mode for role-based targeting (e.g., «wholesalers only» or «exclude subscribers»)
- New: Chip-style role selector UI in discounts step matching existing schedule day picker pattern
- New: User roles displayed in campaign overview panel and review step summary
- New: Contextual sidebar help for user role targeting with use cases and setup tips
- New: Contextual sidebar help for free shipping configuration
- New: Shipping truck icon added to icon library
- New: Optional badge added to Free Shipping card for clarity
- Improvement: Modern chip/pill design with animated checkmark, gradient background, and smooth hover effects
- Improvement: Free shipping UI now uses chip-style pattern matching user roles (mode selector and method checkboxes)
- Improvement: Role eligibility filtering runs per-request (post-cache) to support user-specific targeting
1.2.2
- Fix: Plugin name updated for WordPress.org trademark compliance
- Security: Added input sanitization to admin notice display logic
- Security: Added context-aware output escaping to email template variable replacement
- Improvement: Extended Freemius opt-in reminder delay from 7 to 14 days
1.2.1
- Improvement: Dashboard layout reordered — «Your Campaigns» now appears above «Campaign Planner» for faster access to active campaigns
- Improvement: Campaign Health widget now shows status breakdown (e.g., «2 campaigns analyzed • 1 active, 1 scheduled»)
- Improvement: Campaign Planner insights panel width now matches campaign cards section for visual consistency
- Fix: Removed non-functional «View Results» button from past campaign insights (card already has «Plan Next» action)
1.2.0
- New: Free shipping badge now visible in campaigns list table
- New: Free shipping status displayed in campaign overview panel with shipping method details
- New: Configuration summary card in wizard review step shows free shipping status
- Improvement: Badge helper now includes reusable free_shipping_badge() method for consistent UI
1.1.9
- Fix: Dashboard pause/resume buttons now functional with dedicated AJAX handler and security registration
- Fix: Dashboard campaign list not updating after campaign changes — added dashboard cache invalidation to cache manager
- Fix: Dashboard toggle using unavailable AJAX service — replaced with direct jQuery AJAX matching existing dashboard pattern
- Fix: Spend threshold discount type now displays correctly in dashboard cards, badge text, savings text, and discount descriptions
- Fix: Connected 6 missing event triggers for settings updates, license events, wizard session cleanup, and milestone monitoring
- Fix: Tools page expired campaign cleanup now properly invalidates caches after deletion
- Improvement: Removed non-functional cache warming system — 5 dead methods writing to cache keys never read by any code
- Improvement: Simplified cache tools — renamed «Clear & Rebuild Cache» to «Clear Cache» with accurate descriptions
- Improvement: Removed unused campaign management code from admin JavaScript
- Improvement: Reduced plugin footprint — removed 11 unused classes, 16 unused AJAX endpoints, and 21 unused functions
1.1.8
- Improvement: Rewritten plugin description for maximum WordPress.org search discoverability
- Improvement: Expanded FAQ from 17 to 24 keyword-rich entries matching common search queries
- Improvement: Optimized tags for higher search volume terms
- Improvement: Added testimonials, target audience, compatibility, and real-world scenario sections
1.1.7
- Fix: Critical bug in discount calculation — results now correctly use object methods instead of array access
- Fix: Discount preview in admin wizard now correctly extracts product price
- Improvement: Updated deploy script to support version number shorthand
1.1.6
- Fix: Variable product price handling now correctly uses minimum variation price
- Fix: AJAX action mapping for debug log handler
- Fix: Removed duplicate variable assignment in campaign manager
- Improvement: Added centralized price helper for consistent product pricing
1.1.5
- New: Auto-update notice — encourages users to enable automatic updates for seamless security fixes
- New: One-click auto-update enable button directly from the notice
- Improvement: Added user meta cleanup on plugin uninstall
1.1.4
- Fix: Translation file (.pot) now properly configured for WordPress.org translation system
- Fix: Added required X-Domain header for localization
- Fix: Removed duplicate file references causing translation import errors
1.1.3
- Fix: Badge display setting now properly hides badges when disabled
- Fix: Badge settings preserved when toggling badge display on/off
- Improvement: Simplified badge storage in Campaign model for consistency
1.1.2
- Fix: Calculator import now correctly displays prefilled campaign name and discount settings
1.1.1
- Fix: Calculator import now properly clears cached data to prevent stale campaign names
1.1.0
- New: Calculator Import — Import discount presets from external Profit Calculator
- New: Support for percentage, fixed, tiered, BOGO, and spend threshold preset codes
- New: One-click campaign creation from calculator presets on Campaign List page
1.0.10
- Updated plugin description for WP Admin consistency
- New WordPress.org banners
- SEO-optimized short description with high-value keywords
- Optimized plugin tags for better discoverability
1.0.4
- Completely rewritten plugin description for better clarity and discoverability
- Added Free vs Pro comparison table
- Added real-world scenario examples
- Improved short description for search results
- Fixed WordPress.org readme compliance issues
1.0.3
- Updated plugin banners
1.0.2
- Updated plugin banners for WordPress.org
- Simplified plugin name display in WP Admin
1.0.1
- Updated plugin name for better discoverability on WordPress.org
- Corrected plugin website URL
1.0.0
- Initial release
- 5-step campaign wizard for creating discount campaigns
- Product selection: All Products, Specific Products, Random Products
- Discount types: Percentage, Fixed Amount, and BOGO (Free), Tiered, Spend Threshold, Bundle (Pro)
- Scheduling with date, time, and timezone support
- Priority system for overlapping campaigns
- Campaign health monitoring
- Bulk campaign management
- Analytics dashboard (Pro)
- Email notifications
- WooCommerce HPOS compatibility
- WordPress 6.4+ and WooCommerce 8.0+ support
