描述
Video Tutorial
Smart Cycle Discounts is a campaign-first promotion operations plugin for WooCommerce designed for stores that need reliable, scheduled, and high-performing discount campaigns.
It combines the capabilities of a WooCommerce discount plugin and dynamic pricing engine within a single structured workflow.
Instead of managing scattered sale prices and disconnected discount rules, you run organized promotion campaigns that help you plan, launch, monitor, and optimize promotions with tighter control over timing, conflicts, and performance.
Many stores still run scheduled sales and automated promotions through manual edits and isolated rules. This often leads to overlapping discounts, margin leakage, late launches, early endings, and constant troubleshooting.
Smart Cycle Discounts replaces that fragmented process with four connected systems designed to bring visibility, operational discipline, and safer promotion execution to WooCommerce stores.
Key Features
Smart Cycle Discounts helps WooCommerce stores run reliable, automated promotions with operational control.
- Automated WooCommerce discount campaigns
- Percentage and fixed discounts
- BOGO (Buy One Get One) promotions
- Scheduled and recurring sales campaigns
- Campaign-first promotion workflow (plan schedule launch monitor)
- Priority-based overlap and conflict handling
- Campaign Health checks before launch
- Campaign Intelligence guidance for “what to do right now”
- Campaign lifecycle management (draft scheduled active expired)
- Campaign-level performance tracking (Pro analytics depth)
Perfect For WooCommerce Stores That
- Run seasonal, flash, or recurring sales campaigns
- Need to schedule WooCommerce discounts automatically
- Manage multiple promotions and want safer overlap control
- Want promotion risk checks before launching campaigns
- Need campaign-based decision support instead of simple discount rules
WooCommerce Discount Types and Dynamic Pricing Features
Free version includes:
- Percentage discounts
- Fixed amount discounts
- BOGO (Buy One Get One) deals
- Free shipping toggle inside campaign setup
- User role targeting (include/exclude roles)
- Location targeting by billing or shipping country
- Recurring campaign scheduling (continuous or instances)
Pro version adds:
- Tiered quantity discounts (volume pricing)
- Spend threshold discounts (cart-based conditions)
- Bundle deals (percentage, fixed, flat bundle pricing)
- Advanced discount-rule controls for deeper eligibility and margin protection
- Advanced subscription discount controls (when WooCommerce Subscriptions is active)
- Full analytics dashboard and advanced exports
Advanced WooCommerce Promotion Engine
Smart Cycle Discounts is built as a campaign system, not a one-off rule editor.
- Campaign lifecycle management (draft scheduled active expired)
- Smart product targeting (all products, specific products, random products, categories, advanced filters)
- Timezone-aware scheduling automation
- Priority resolution when campaigns overlap
- Optimized caching and operations for larger WooCommerce catalogs
WooCommerce Promotion Conflict Detection
Before launch, Campaign Health and Campaign Intelligence evaluate operational risks including:
- Promotion conflicts and overlapping discounts
- Priority ties across concurrent campaigns
- Stock exposure and product readiness
- Schedule and timing consistency
- Discount integrity and risk indicators
This shifts teams from reactive troubleshooting to proactive promotion control.
WooCommerce Campaign Analytics and Intelligence
Smart Cycle Discounts includes campaign-level operational insight so you can evaluate:
- Which campaigns are driving meaningful revenue
- Which discounted products perform best
- Which promotions should be scaled, paused, or redesigned
The analytics dashboard helps stores optimize promotions instead of guessing which discounts work best.
Advanced analytics depth and exports are available in Pro, while base Campaign Intelligence guidance is included in the free version.
Popular WooCommerce Promotion Use Cases (BOGO, Bulk Discounts, Bundle Discounts, Sale Scheduler)
Smart Cycle Discounts can be used to run:
- WooCommerce BOGO campaigns
- WooCommerce bulk discount and tiered pricing campaigns
- WooCommerce scheduled sales and recurring promotions
- WooCommerce bundle discount campaigns and product packages
- WooCommerce flash sales and seasonal campaigns
- WooCommerce customer-segment discounts (roles and locations)
- WooCommerce promotion cycles with planned campaign scheduling
Why This WooCommerce Discount Plugin Is Different
Most WooCommerce discount plugins are rule engines.
Smart Cycle Discounts is a promotion operations system for WooCommerce: plan campaigns, launch promotions on schedule, detect risks before revenue loss, and run promotions with controlled execution.
Useful Links
- Product page: Smart Cycle Discounts
- Free plugin listing: WordPress.org Plugin Page
- Documentation hub: Smart Cycle Discounts Docs
- Changelog: Version History
- Use cases: Campaign Use Cases
- Discount calculator: WooCommerce Discount Calculator
- Blog: WooCommerce Tips & Tutorials
- Support: Support Center
- Contact: Contact Webstepper
- Privacy policy: Privacy Policy
- Terms: Terms of Service
Get Started
Install Smart Cycle Discounts, launch your first campaign in minutes, and move from manual discount edits to repeatable, automated WooCommerce promotions.
Need 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 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 
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 
Main dashboard – Performance summary with campaign cards sorted by urgency 
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 (Pro) – Track revenue, conversions, click-through rates, and performance trends
区块
该插件提供了 1 个区块.
- Discount Showcase Display active discounts and campaigns in an attractive showcase format.
常见问题
-
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.
-
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 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?
-
Smart Cycle Discounts is designed for performance with optimized database queries, efficient caching, and admin-scoped asset loading. In most stores, frontend impact is minimal while campaign operations remain reliable at scale.
-
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?
-
Yes. Recurring campaigns are available in the free version with two 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.
-
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.
评价
贡献者及开发者
「Scheduled Sales & Automatic Discounts for WooCommerce – Smart Cycle Discounts」是开源软件。 以下人员对此插件做出了贡献。
贡献者更新日志
1.8.11
- Improvement: Replaced the old additive Campaign Intelligence confidence heuristic with an evidence-weighted model based on signal completeness, data freshness, and cross-signal consistency.
- Improvement: Added confidence reasons to the Intelligence reliability payload so confidence bands are explainable across dashboard, overview, and wizard surfaces.
- Improvement: Added builder-side recommendation quality guards so weak generic primary actions are replaced before output in low-evidence contexts.
- Improvement: Added evidence-backed action
whyexplanations and wired them through the shared Intelligence payload, view model, and dashboard next-step block. - Improvement: Expanded Campaign Intelligence decision telemetry across dashboard, overview, wizard, planner, and campaigns list contexts with fallback and
whycoverage tracking. - Improvement: Added an internal telemetry review summary to the Intelligence advanced/governance payload so weak contexts and underperforming reason buckets are easier to inspect.
- Improvement: Updated dashboard Upcoming Opportunities routing so linked campaign actions use Intelligence deep-linking and telemetry-aware campaign URLs instead of raw edit links when recommendation metadata is available.
- Improvement: Consolidated plugin debugging onto a single logging backend with one canonical
plugin.logfile for PHP, browser, AJAX, and Tools-page log viewing flows. - Improvement: Added centralized log configuration resolution so effective debug mode, log level, retention, and mirroring behavior are shared consistently across PHP services and localized JavaScript.
- Improvement: Promoted
log_managerto a shared container-managed service so the Tools page and log viewer use the same log-management path and configuration source. - Fix: Tightened low-reliability confidence behavior for stale, estimated, sparse, or contradictory campaign contexts to reduce overconfident recommendations.
- Fix: Repaired browser-to-server debug logging by aligning AJAX action names, nonce handling, and logger routing so wizard and admin-side browser logs are written reliably.
- Fix: Updated the Tools page log viewer/reporting flow to reflect effective logging state correctly, explain historical lower-severity entries, and keep plain-text log downloads unaltered during output sanitization.
- Improvement: Consolidated persistent plugin caching under one cache-manager source of truth with normalized key namespaces for campaigns, products, analytics, reference data, settings, and dashboard data.
- Improvement: Integrated WooCommerce badge payload and badge HTML caching into the shared cache manager so badge rendering follows the same versioning and invalidation flow as the rest of the plugin cache.
- Improvement: Hardened automatic cache invalidation for campaign, product, settings, license, dashboard, and currency-change events with safer persistent-object-cache fallback behavior.
- Fix: Corrected grouped object-cache invalidation and eliminated stale mixed cache paths that could leave outdated campaign or badge data behind on sites using persistent object cache.
- Maintenance: Removed redundant cache layers, duplicate invalidation hooks, broken ad hoc cache-manager construction paths, and unused cache helpers after the cache-system consolidation.
- Maintenance: Removed the final legacy PHP logging facade along with redundant debug logger, console logger, duplicate AJAX handlers, and unused log-viewer branches after consolidating the logging architecture.
- Maintenance: Added regression coverage for confidence calibration, recommendation quality gating, action explanation wiring, cross-context telemetry tracking, cache-manager namespace enforcement, grouped invalidation, and product badge cache clearing.
1.8.1
- Fix: Tightened free/pro packaging so free builds exclude Pro implementation files while keeping upgrade/promo UI surfaces.
- Fix: Updated WordPress.org readme short-description structure to avoid importer warning and improve listing consistency.
- Maintenance: Release packaging and metadata alignment for 1.8.1.
1.8.0
- Major release: Campaign Intelligence 1.8.0 introduces a full operational decision layer for WooCommerce promotions. This version shifts the dashboard from scattered metrics to action-oriented guidance so teams can quickly answer: “What should I do right now?” with clearer risk signals, next-step recommendations, reliability context, and disciplined execution boundaries.
- New: Introduced a unified Campaign Intelligence engine with normalized contract outputs (
risk_now,next_step,performance,advanced) and shared view-model shaping across dashboard, overview, and wizard surfaces. - New: Added dashboard-first Intelligence UX with 3 default blocks (Risk Now, Next Step, Performance), plus expandable details for evidence, diagnostics, and recommendation context.
- New: Added first-class Intelligence metrics for
override_intensity_percent,campaign_revenue_contribution_percent, andpromotion_stability_score(structural health). - New: Added profile-driven Promotion Guardrails (Conservative, Balanced, Aggressive) with optional custom boundaries for max discount load %, max override intensity %, max concurrent campaigns, and minimum stability score.
- New: Added soft-enforcement confirmation gates when actions exceed guardrail boundaries (safety confirmation, not hard blocking).
- New: Added guardrail evaluation across launch and activation paths, including wizard launch, schedule-driven activation, dashboard/manual activation, and bulk activation.
- New: Added override telemetry with temporary stability penalties after confirmed overrides, including dashboard visibility of active penalty state.
- New: Added daily Intelligence snapshots with trust diffs (“Since yesterday…”) for trend-aware risk/performance context.
- New: Added a compact Discipline status and 30-day Discipline Report with overrides in window, most breached boundary, average stability, and days within bounds.
- Improvement: Updated terminology clarity (
Decision Strength,Evidence Strength) and reduced default exposure of governance/internal wording in user-facing views. - Improvement: Added recommendation lifecycle visibility in Next Step states (still open, in progress, resolved).
- Improvement: Added block-level detail expanders (Risk details, Why this recommendation, Performance details) to keep default UI focused and actionable.
- Fix: Resolved risk-panel detail truncation by scoping bullet-limiting styles to summary bullets only.
- Maintenance: Removed and reduced legacy Intelligence fields and UI paths no longer used by the 3-block decision contract.
1.7.66
- Fix: Random-products campaigns now preserve compiled product selection on resume/reactivation flows (including plugin deactivate/reactivate recovery) instead of rotating unexpectedly.
- Improvement: Activation-context handling was added to product compilation so resume activations and rotation-style activations are treated differently.
- Maintenance: Cleaned and aligned campaign activation hook wiring/documentation for the activation-context flow.
1.7.65
- New (Pro): Added campaign-level “Add-on Discount Application” control to choose whether discounts apply to configured total (base + add-ons) or base product only.
- Improvement: Wired add-on application mode end-to-end across wizard UI, state persistence, compiler, validation, and runtime WooCommerce pricing integration.
- Fix: Base Product Only mode now preserves add-on charges while discounting only the product base amount in cart/checkout calculations.
- Improvement: Single-product live add-on preview now respects campaign mode and avoids configured-total preview output when base-only mode is selected.
- Maintenance: Hardened free-version normalization defaults for add-on preview/application settings and completed cleanup of related integration paths.
1.7.64
- Fix: Added atomic WCPA single-product total guard that temporarily hides the final total row during add-on recalculation and reveals it after discounted total render to prevent visible base-price flicker.
- Maintenance: Kept WCPA add-on preview flow clean by retaining a single post-recalculation render path with guarded fallback release.
1.7.63
- Fix: Removed early single-product add-on preview refresh on WCPA input/change events to prevent pre-recalculation base-total flashes.
- Improvement: WCPA pages now prioritize post-recalculation refresh paths (
wcpa_fields_updatedhook + mutation fallback) for stable final configured-total discount rendering. - Maintenance: Cleaned redundant WCPA refresh path logic in frontend add-on preview integration.
1.7.62
- Fix: Replaced non-existent WCPA frontend event bindings with integration to WCPA’s actual
wcpa_fields_updatedhook to refresh discounted configured totals after add-on recalculation. - Fix: Hardened single-product configured-total target detection for plain-text/class-based WCPA total rows so localized final totals (for example
Cena) remain discounted after option changes.
1.7.61
- Fix: Reduced single-product add-on total flicker by replacing delayed refresh-only behavior with immediate + next-paint + settle refresh passes.
- Improvement: Keeps live discounted configured total synchronized through rapid add-on input/change and mutation-driven updates without transient base-price flash.
1.7.60
- Improvement: Consolidated add-on live preview hardening for single product pages with a stable event-driven refresh flow that avoids duplicate/injected stale total rows.
- Fix: Plain-text add-on summary totals now resolve and replace only the active final total line (for example localized
Cena/Total) while preserving labels and rendering one clean discounted value. - Improvement: Added fallback-safe total parsing and row targeting for mixed add-on summary markups so option/subtotal rows are excluded more reliably.
- Fix: Improved shop/archive discount badge anchoring for Blocksy-like card media wrappers to keep badge placement consistent across broader theme structures.
- Maintenance: Release cleanup that folds prior test iterations into one production-ready release note set.
1.7.46
- Fix: Improved add-on pricing compatibility by deferring misleading base-only percentage/fixed discount display on single product pages when add-on fields are detected.
- Fix: Cart/checkout discount application now runs after add-on/custom option pricing hooks so discounts apply to finalized line prices more reliably.
- Improvement: Added a single-product notice clarifying that discount is applied to the final configured price (including selected add-ons) in cart/checkout.
1.7.45
- Improvement: Added
Update Campaignquick-action button to wizard navigation on edit-mode steps for faster in-place campaign updates. - Improvement: Added confirmation prompt when updating campaigns that are currently Active or Scheduled to prevent unintended immediate live changes.
- Improvement: Refined wizard navigation button labeling and shared button config wiring for clearer UX and cleaner maintainability.
- Improvement: Hardened wizard edit-mode detection so campaign status loads reliably even when edit intent is inferred from URL campaign ID.
- Improvement: Localized canonical campaign status into wizard edit sessions for safer live/scheduled update confirmations.
- Improvement: Added log analytics summary in Tools -> Log Viewer with Top Error Codes (last 24 hours), including count, last-seen time, and status distribution.
- Improvement: Improved logging signal quality by classifying routine audit events (for example
campaign_created) asINFOwhile preservingWARNINGfor security-sensitive audit events. - Improvement: Reduced repetitive log noise by throttling duplicate client-side validation error entries in AJAX flows.
- Fix: Stabilized Acowebs Custom Product Addons compatibility across cart and checkout recalculations by restoring pre-discount line base price before reapplying percentage/fixed discounts.
- Maintenance: Removed redundant wizard-navigation template variables and aligned related readme wording with the final UI label (
Update Campaign). - Maintenance: Removed redundant AJAX error logging paths by centralizing severity mapping and client-error throttling in the shared AJAX handler.
1.7.44
- Fix: Improved cart discount compatibility with Acowebs Custom Product Addons by applying percentage/fixed discounts to live addon-adjusted line-item prices in cart/checkout flows.
1.7.43
- Improvement: Added an embedded video tutorial section in the plugin description with the official setup walkthrough link.
1.7.42
- Adjustment: Recurring scheduling is now available again in the Free version after access-rule refinements.
1.7.41
- Maintenance: Version and release metadata updates for 1.7.41 packaging.
- Improvement: Updated plugin naming alignment across plugin header and WordPress.org readme title.
- Improvement: Readme feature descriptions clarified for current recurrence and scheduling behavior.
1.7.40
- Improvement: Hardened advanced product conditions normalization across validation and campaign compile paths (legacy payload compatibility included).
- Improvement: Improved shop-loop badge anchoring for broader theme compatibility (Kadence/native themes and similar structures).
- Maintenance: Removed legacy shortcode implementation and related runtime wiring to simplify frontend display architecture.
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 frontend badge 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 and AJAX 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.
