smart-cycle-discounts

plugin

1.6.2 • public • Published 4 hours ago

Schedule WooCommerce sale campaigns - BOGO, bulk discounts, tiered pricing & discount rules. Set dates, let them run. Dynamic pricing made easy.

BOGObulk discountdiscount rulessale schedulertiered pricing

Description

The WooCommerce discount rules plugin that runs your sales on autopilot.

Stop manually editing sale prices. Smart Cycle Discounts automates your WooCommerce discounts so you can schedule bulk discounts, BOGO deals, tiered pricing, and flash sales - then forget about them. Sale prices activate and deactivate automatically on schedule.

Tired of midnight price edits on Black Friday?

You know the drill. It's 11:58 PM on Black Friday eve. You're clicking through hundreds of products, setting sale prices one by one. Tomorrow morning, you'll do it all again to remove them. Next week, you'll repeat the process for Cyber Monday.

Smart Cycle Discounts eliminates this completely.

Create a discount campaign, set your schedule, walk away. Your WooCommerce sale prices activate automatically, deactivate when the promotion ends, and you never touch a single product page again.

Discount rules made simple: Percentage off, fixed amount, quantity-based bulk discounts, BOGO offers, spend thresholds, and tiered pricing - all managed from one intuitive campaign wizard.

How It Works: The 5-Step Campaign Wizard

No documentation needed. No settings buried in submenus. Just answer five simple questions and your WooCommerce discount campaign is ready to go:

  1. What's it called? Name your campaign and set its priority level
  2. Which products? Pick all products, specific ones, or let us choose randomly
  3. What discount? Percentage off, fixed amount, or advanced discount types like BOGO and tiered pricing (Pro)
  4. When does it run? Set exact start and end dates with timezone support
  5. Ready to launch? Review everything, check smart recommendations, and go live

Your first discount campaign takes under 2 minutes. Your hundredth takes the same.

See how it works

The Problem With Managing WooCommerce Sale Prices Manually

Manually updating sale prices takes hours, forgetting to remove them costs money, and WooCommerce's built-in per-product sale dates make campaign management nearly impossible. Smart Cycle Discounts solves this with automated campaign-based discount management.

What You Get For Free

Unlimited discount campaigns - No artificial limits. Create 5 campaigns or 500. Run them simultaneously.

Three ways to select products for your discount:

  • All Products - Store-wide sale in one click. Perfect for Black Friday, clearance events, or seasonal promotions
  • Specific Products - Hand-pick items by name, SKU, or product ID. Great for targeted promotions on select inventory
  • Random Products - Automatically rotate which products go on sale each day. Creates a "deal of the day" experience that drives repeat visits

Two core discount types:

  • Percentage Off - "25% off everything this weekend" - The most popular WooCommerce discount type, scales proportionally with product price
  • Fixed Amount Off - "$10 off every item" - Clear, tangible savings that work best on higher-priced products

Automatic scheduling with precision:

  • Set exact start and end dates down to the minute
  • Automatic activation and deactivation - no manual intervention required
  • Draft mode to prepare campaigns days or weeks in advance
  • Full timezone support so your sale starts when your customers expect it

Free shipping campaigns:

  • Enable free shipping for any discount campaign with a single toggle
  • Apply to all shipping methods or select specific methods
  • Stack free shipping with any discount type for powerful promotions

User role targeting:

  • Restrict discounts to specific WordPress user roles (wholesalers, subscribers, members)
  • Include mode: "Only these roles get the discount"
  • Exclude mode: "Everyone except these roles gets the discount"
  • Perfect for B2B pricing, membership sites, and wholesale stores

Campaign health monitoring:

  • Real-time validation catches mistakes before discounts go live
  • Priority system (1-5) prevents conflicts when multiple campaigns overlap on the same product
  • Bulk actions to pause, activate, duplicate, or delete multiple campaigns at once
  • Health score dashboard widget shows all campaign statuses at a glance

Campaign intelligence:

  • Smart recommendations in the wizard suggest improvements before you launch
  • Seasonal campaign suggestions for upcoming holidays and events
  • Built-in campaign planner helps you prepare promotions ahead of time

Calculator Import:

  • Import discount presets from the WooCommerce Discount Calculator directly into the plugin
  • One-click campaign creation from imported presets - no manual setup needed
  • Supports percentage, fixed, tiered, BOGO, and spend threshold presets

Pro: Advanced WooCommerce Discount Types

Tiered Quantity Discounts (Dynamic Pricing)

Set quantity-based pricing breaks that encourage larger orders:

  • Buy 5+ get 10% off
  • Buy 10+ get 20% off
  • Buy 25+ get 30% off

Perfect for wholesale, B2B stores, consumable products, and any store that wants to increase average order value through volume-based dynamic pricing.

Buy One Get One (BOGO Deals)

Create flexible BOGO offers with custom quantities and discount percentages:

  • Buy 1 Get 1 Free (classic BOGO)
  • Buy 2 Get 1 at 50% off
  • Buy 3 Get 1 Free

BOGO deals are psychologically powerful - the word "free" drives action faster than any percentage discount.

Spend Threshold Discounts

Unlock discounts when customers reach a minimum cart value:

  • Spend $50 get 10% off
  • Spend $100 get 15% off
  • Spend $200 get 25% off

Proven to increase average order value by 20-45%. Customers add more to their cart to unlock the next discount tier.

WooCommerce Subscriptions Support

Subscription products work with campaigns out of the box - recurring prices are discounted automatically on the free tier. Pro unlocks advanced subscription controls:

  • Discount target selection - Choose to discount the recurring price, the sign-up fee, or both independently
  • Renewal limits - Limit discounts to the first X renewal payments (e.g., "20% off for 3 months, then full price")
  • Automatic tracking - Renewal count tracked per subscription, discount removed automatically when limit is reached

No other discount plugin offers automated campaign-based subscription discounts with renewal tracking.

Also included in Pro:

  • Per-customer usage limits (prevent abuse)
  • Auto-select best-selling products for promotions
  • Auto-select low-stock items for clearance
  • Performance analytics and revenue tracking
  • Email notifications when campaigns start, end, or hit milestones
  • CSV and JSON export for reporting
  • Application rules: minimum quantity, minimum order value, exclude sale items
  • Combination policies: control how discounts stack with WooCommerce coupons

Upgrade to Pro

Real-World Discount Scenarios

"I need a Black Friday sale across my entire WooCommerce store"
Use: All Products + 25% Percentage Off + Schedule Nov 29 12:00 AM to Dec 2 11:59 PM. Create the campaign in October, forget about it. It activates automatically on Black Friday and removes all sale prices on Cyber Monday night.

"I want daily deals that rotate automatically"
Use: Random Products (5 items) + Fixed $15 off + Daily schedule. Every day, 5 different products go on sale. Customers come back daily to see what's new. Creates a treasure hunt shopping experience.

"Buy 3 get 10% off, buy 5 get 20% off"
Use: Tiered pricing with quantity breaks (Pro). Set up once and it applies automatically to every qualifying order. Ideal for encouraging bulk purchases.

"Flash sale for the next 4 hours only"
Use: Specific products + 30% off + End time 4 hours from now. Create urgency with time-limited discounts. Works great with email campaigns and social media announcements.

"Clear out slow-moving inventory before new stock arrives"
Use: Auto-select Low Stock items + 40% off (Pro). The plugin identifies products with fewer than 10 units in stock and automatically discounts them. Set it and forget it.

"Spend $50, get 10% off + free shipping"
Use: Spend threshold (Pro) + Free Shipping toggle. Combine a minimum spend discount with free shipping to reduce cart abandonment and increase average order value. Customers see the discount and shipping savings at checkout.

"I run a wholesale store and need quantity-based pricing"
Use: Tiered Quantity Discounts (Pro). Create volume breaks that reward larger orders. Perfect for B2B WooCommerce stores, distributors, and any business selling in bulk.

"Weekend flash sale every Saturday and Sunday"
Use: All Products + 15% off + Schedule Saturday 12:00 AM to Sunday 11:59 PM. Create a single campaign that handles every weekend automatically.

"Wholesale pricing for registered dealers only"
Use: User Role Targeting (include "Wholesale Customer" role) + Tiered Bulk Discounts. Only users with the wholesale role see the discounted prices. Perfect for B2B stores that serve both retail and wholesale customers from the same WooCommerce store.

"Valentine's Day promotion on specific gift items"
Use: Specific Products + 20% off + Schedule Feb 7 to Feb 14. Select your gift-worthy products, set the dates, and the promotion runs itself while you focus on marketing.

"20% off subscription boxes for the first 3 months"
Use: Subscription products + 20% percentage off + Renewal limit 3 (Pro). New subscribers get a discounted recurring price for their first 3 billing cycles, then automatically return to full price. Great for acquisition campaigns.

"Waive the sign-up fee during a launch promotion"
Use: Subscription products + Sign-up fee discount target + 100% percentage off (Pro). The one-time sign-up fee is removed during your campaign period while the recurring price stays unchanged. Perfect for reducing friction on new subscriptions.

Want to know how discounts affect your margins? Use our free WooCommerce Discount Calculator to calculate profit before running a campaign.

Who Is Smart Cycle Discounts For?

Perfect for WooCommerce store owners, e-commerce managers, agencies, wholesale/B2B stores, and seasonal businesses who want automated discount management without manual price updates. Take the Capability Score Calculator to find out if Free or Pro is right for you.

Works With Your Existing Setup

  • Any WordPress theme - Backend plugin that uses WooCommerce's native sale price system. Your theme's sale styling works automatically.
  • WooCommerce 8.0+ - Built for modern WooCommerce with full HPOS (High-Performance Order Storage) compatibility
  • Block-based cart and checkout - Full support for WooCommerce block cart/checkout pages (WooCommerce 8.3+). Strikethrough pricing displays correctly in both classic and block-based templates.
  • Variable products - All product variations receive discounts automatically
  • WooCommerce Subscriptions - Discount campaigns work on subscription products. Recurring prices show strikethrough discounts automatically. Pro users can target sign-up fees separately and limit discounts to a set number of renewals.
  • WooCommerce coupons - Works independently alongside existing coupons. Customers can use both campaign discounts and coupon codes together.
  • Large catalogs - Optimized database queries handle thousands of products without slowing down your store
  • Multisite compatible - Works on WordPress multisite installations

Technical Details For Developers

  • WooCommerce HPOS Compatible - Full support for High-Performance Order Storage
  • WooCommerce Blocks Integration - Store API extension and checkout filters for block-based cart/checkout
  • Developer Friendly - Actions and filters for custom integrations, clean code following WordPress standards

Installation

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

  1. Log in to your WordPress dashboard
  2. Navigate to Plugins > Add New
  3. Search for "Smart Cycle Discounts"
  4. Click Install Now and then Activate
  5. You'll see a new Campaigns menu item in your WordPress admin sidebar
  6. Click Campaigns > Create Campaign to launch the wizard and create your first discount campaign

Manual Installation

  1. Download the plugin zip file
  2. Log in to your WordPress dashboard
  3. Navigate to Plugins > Add New > Upload Plugin
  4. Choose the downloaded zip file and click Install Now
  5. Click Activate Plugin
  6. Navigate to Campaigns > Create Campaign to get started

Frequently Asked Questions

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.

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.

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.

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 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.

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 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.

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.

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.

Can I set up BOGO deals in WooCommerce with this plugin?

Yes. The Pro version includes flexible BOGO (Buy One Get One) configurations. 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.

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.

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.

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.

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.

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.

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 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.

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.

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.

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.

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.

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.

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.

Is this a WooCommerce dynamic pricing plugin?

Yes. Smart Cycle Discounts supports dynamic pricing through multiple discount types. The free version includes percentage and fixed amount discounts. The Pro version adds tiered quantity pricing (buy more, save more), BOGO deals, and spend threshold discounts - all the dynamic pricing options you need for a WooCommerce store.

What WooCommerce discount types are supported?

The free version supports percentage discounts and fixed amount discounts on any WooCommerce product. The Pro version adds tiered quantity discounts (volume-based dynamic pricing), BOGO deals (Buy One Get One), and spend threshold discounts (minimum cart value offers). All discount types work with the automated scheduling system.

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.

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.

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.

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)

Pro Version:

  • Tiered: Quantity-based dynamic pricing (e.g., Buy 5 get 10% off, Buy 10 get 20% off)
  • BOGO: Buy One Get One offers with flexible configurations
  • Spend Threshold: Discount based on cart total (e.g., Spend $100 get 15% 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.

Screenshots

Campaigns list - Manage all campaigns with status, schedule, health scores, and quick actions

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 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 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 2 - Product selection with category tree and filtering options

Campaign wizard Step 3 - Discount configuration with live badge preview and positioning

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 4 - Schedule configuration with date/time picker and duration calculator

Campaign wizard Step 5 - Review with smart recommendations and campaign summary sidebar

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

Dashboard health widget - Monitor all campaigns with 6 health indicators at a glance

Campaign planner - Smart suggestions for upcoming events and seasonal promotions

Campaign planner - Smart suggestions for upcoming events and seasonal promotions

Analytics dashboard - Track revenue, conversions, click-through rates, and performance trends

Analytics dashboard - Track revenue, conversions, click-through rates, and performance trends

Main dashboard - Performance summary with campaign cards sorted by urgency

Main dashboard - Performance summary with campaign cards sorted by urgency

Changelog

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.NotificationService namespace and wsscd:notify event 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_badges to 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_Handler class 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 and Fixed Amount (Free), Tiered, BOGO, Spend Threshold (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

Upgrade Notice

1.0.0

Initial release of Smart Cycle Discounts. Create intelligent WooCommerce discount campaigns with advanced scheduling, priority management, and flexible product selection.

1.0.1

Minor update with improved plugin naming for better WordPress.org search visibility.

1.0.10

Updated plugin description and new banners.

1.0.2

Updated plugin banners and cleaner plugin name in WP Admin.

1.0.3

Updated plugin banners.

1.0.4

Improved WordPress.org listing with rewritten description, comparison tables, and real-world examples.

1.1.0

New Calculator Import feature - import discount presets directly from the Profit Calculator tool.

1.1.1

Bugfix for Calculator Import feature.

1.1.2

Fixes prefilled data display for Calculator Import feature.

1.1.3

Fixes badge display toggle - badges now properly hide when disabled.

1.1.4

Fixes WordPress.org translation system compatibility - plugin can now be translated by the community.

1.1.5

New auto-update notice helps users stay current with the latest features and security fixes.

1.1.6

Fixes variable product discount handling and improves code quality.

1.1.7

Critical fix for discount calculations. Recommended update for all users.

1.1.8

Improved WordPress.org listing with expanded description, new FAQ entries, and optimized search tags.

1.1.9

Fixes dashboard campaign list caching, cache invalidation on expired cleanup, pause/resume controls, spend threshold display, and 6 missing event triggers. Removes dead cache warming code and reduces plugin footprint. Recommended update.

1.2.0

Free shipping visibility now integrated across admin areas - campaigns list, overview panel, and wizard review step all display free shipping status.

1.2.1

Dashboard UX improvements - Your Campaigns section now prioritized above Campaign Planner, plus visual alignment fixes.

1.2.2

Security hardening and WordPress.org compliance update. Plugin name corrected for trademark guidelines.

1.3.0

New user role targeting feature - restrict discounts to specific user roles like wholesalers, subscribers, or custom roles. Perfect for B2B pricing and member-only promotions.

1.4.0

New Continuous Recurring Mode for Pro users - run daily happy hours, weekend specials, and weekly promotions without creating hundreds of database entries. Campaigns toggle active/inactive based on time schedule.

1.5.0

Smart recurring schedule validation. Fixed recurrence mode loading when editing campaigns. Timeline preview now shows date ranges for all occurrences. Invalid weekly days are automatically disabled to prevent overlap.

1.5.1

Redesigned Campaign Period section with modern horizontal date layout, toggle buttons, and visual date boxes. Timeline preview improvements. Better validation UX with persistent errors.

1.5.2

Discount badges now display on all product gallery images. Pro users get real-time spend threshold progress bar that updates dynamically as cart changes.

1.5.3

Database migrations now run automatically on plugin load. Fixes campaign save errors when schema was out of date. Cleaner error handling and deploy script improvements.

1.5.4

Migration reliability fix: migrations now throw on failure so they are not marked as run when ALTER failed. Schema drift repair automatically retries missing columns. Fixes campaign save errors after update.

1.5.5

Fixes 403 error on free version when creating or updating campaigns. Campaign data is normalized to free defaults before validation.

1.5.6

Fixes campaign overview load after create, Tools page errors on live free (clear cache, health check, report), and admin nonce so AJAX works when user has manage_options. Update recommended for free version on live sites.

1.5.61

Fixes PHP fatal "Declaration must be compatible" on AJAX handlers (track impression, track click, test provider connection). Recommended update to avoid critical error after upgrading.

1.5.62

Fixes PHP 8 critical error (DateTime::__construct type error) when recurring campaigns are active. Recommended update for sites using recurring campaigns.

1.5.63

Fixes Free shipping and Recurring schedule incorrectly showing as enabled in campaign overview and list when they were off. Recommended update for accurate campaign badges.

1.5.64

Bug fixes. Recommended update.

1.5.65

Improves onboarding with an in-plugin Help & Support hub, floating help button, and contextual help links, plus notification docs alignment. Recommended update for all sites.

1.5.66

Small Bug Fixes.

1.5.67

Small Bug Fixes.

1.5.68

Small Bug Fixes.

1.5.69

Visual improvements.

1.5.70

Adds full support for WooCommerce block-based cart and checkout. Discounted pricing now displays correctly with strikethrough in both classic and block cart/checkout pages. Recommended update for stores using WooCommerce 8.3+.

1.6.0

WooCommerce Subscriptions support. Discount campaigns now apply to subscription recurring prices automatically. Pro users get sign-up fee targeting and renewal limits. Recommended update for stores selling subscriptions.

1.6.2

Freemius Pro code gating fix for WordPress.org compliance.

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

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: