{"id":3122,"date":"2026-01-03T06:31:20","date_gmt":"2026-01-03T06:31:20","guid":{"rendered":"https:\/\/www.swiftcommerce.io\/help\/?post_type=docs&#038;p=3122"},"modified":"2026-08-03T13:19:24","modified_gmt":"2026-08-03T13:19:24","password":"","slug":"free","status":"publish","type":"docs","link":"https:\/\/www.swiftcommerce.io\/help\/changelog\/free\/","title":{"rendered":"Swift Commerce Free"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The latest updates to the Swift Commerce Free plugin<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.5.0 &#8211; 30 July, 2026<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[New Feature] Native Blocks \u2014 Added complete Free Currency Switcher, AJAX Product Search, Wishlist Page, product-aware Wishlist Button, Back In Stock Form, and Product Bundle purchase-form blocks with canonical server rendering, Dashboard design inheritance, conditional assets, and separate extension contracts for Pro customization<\/li>\n\n\n\n<li>[New Feature] Added To Cart Popup \u2014 Added success-icon visibility and color controls, plus size and corner-radius controls in Pro<\/li>\n\n\n\n<li>[Tweak] Back In Stock \u2014 Notification forms now use shared accessible controls, alerts, dialog, loading, and toast states with reduced-motion support<\/li>\n\n\n\n<li>[Tweak] Back In Stock \u2014 Replaced Compact Banner with a flexible Custom template, kept every template customizable, and added content-alignment, card, shadow, button-border, and input-border appearance controls (Pro)<\/li>\n\n\n\n<li>[Tweak] Storefront UI \u2014 Added a shared accessible design system, removed legacy styling aliases, and standardized public Free and Pro interfaces on the Swift Commerce namespace<\/li>\n\n\n\n<li>[Fix] Back In Stock \u2014 Stacked forms keep standard-height email fields, and live previews now match storefront Global Style colors, borders, spacing, and controls<\/li>\n\n\n\n<li>[Fix] Elementor compatibility &#8211; Removed stale widget loaders, restored Currency Switcher flags-only output, and made Wishlist grid and list removals target the correct rendered item<\/li>\n\n\n\n<li>[Tweak] Ajax Search \u2014 Storefront forms, results, loading, product states, and modal search now use the shared design system, while the dashboard preview accurately reflects saved colors, typography, dimensions, shadows, templates, and layouts<\/li>\n\n\n\n<li>[Tweak] Ajax Search &#8211; Widget requests now honor their configured minimum query length and receive structured sale prices from the shared search service<\/li>\n\n\n\n<li>[Fix] Ajax Search \u2014 Results now stay above page-builder content with an opaque, theme-safe layout; Elementor shortcodes initialize in the editor; prices remain compact; clear and modal-close icons, including the Elementor clear control, display correctly; and the live preview matches the storefront<\/li>\n\n\n\n<li>[Tweak] Currency Switcher &#8211; Added a normalized lowercase shortcode alias and corrected preset classes so saved storefront styles apply consistently<\/li>\n\n\n\n<li>[Tweak] Currency Switcher \u2014 Migrated every storefront layout and dashboard preview to the shared design system with consistent colors, flags, spacing, responsive behavior, and accessible keyboard controls<\/li>\n\n\n\n<li>[Fix] Currency Switcher \u2014 Corrected stretched flags, protected controls from theme and page-builder overrides, and kept narrow dropdown rows aligned without wrapping<\/li>\n\n\n\n<li>[Fix] Product Addons &#8211; Required fields and submitted choices are now validated against the saved product schema before cart insertion, including Store API requests and server-enforced conditional visibility<\/li>\n\n\n\n<li>[Fix] Product Addons &#8211; Add-on prices now use an immutable product base price with consistent flat, percentage, quantity, cart-quantity, tax-display, and variable-product calculations<\/li>\n\n\n\n<li>[Tweak] Product Addons &#8211; Added conditional storefront assets, a theme-overridable canonical template, accessible field output, bounded configuration data, working disable behavior, and accurate settings and upgrade descriptions<\/li>\n\n\n\n<li>[Tweak] Product Addons \u2014 Stacked, Grid, and Inline layouts now share the storefront design system, responsive controls, accessible states, Global Styles, and an accurate dashboard preview<\/li>\n\n\n\n<li>[Tweak] Product Bundles \u2014 Selected products, variations, quantities, prices, dimensions, and downloads now remain consistent from the product page through Cart, Checkout Blocks, orders, and recovered carts<\/li>\n\n\n\n<li>[Tweak] Product Bundles \u2014 Bundle prices now use WooCommerce&#8217;s native product data and refresh in bounded batches when component prices change, while storefront and editor assets use safer conditional behavior<\/li>\n\n\n\n<li>[Tweak] Product Bundles \u2014 Grid, List, and Compact layouts now use the shared responsive storefront design system with Global Styles and an exact dashboard preview<\/li>\n\n\n\n<li>[Tweak] Product Bundles \u2014 Pro-only settings and appearance sections now show consistent crown indicators in the Dashboard (Pro)<\/li>\n\n\n\n<li>[Tweak] Dashboard \u2014 Header upgrade links now identify the originating feature and placement for campaign reporting<\/li>\n\n\n\n<li>[Fix] Product Bundles \u2014 Repaired optional selections, variable products, quantity limits, coupon behavior, shortcodes, stock validation, order displays, and product editor controls across Free and Pro configurations<\/li>\n\n\n\n<li>[Fix] Product Bundles \u2014 Removed the competing legacy stylesheet, prevented themes from collapsing bundle content, kept Classic previews in a three-column layout, and tightened Minimal list spacing<\/li>\n\n\n\n<li>[Tweak] Wishlist \u2014 Product buttons, loop hearts, notifications, page templates, sharing, empty states, and Elementor layouts now use the shared responsive storefront design system with an accurate dashboard preview<\/li>\n\n\n\n<li>[Tweak] Wishlist \u2014 Standardized the Appearance preview, consolidated button and notification controls, and added configurable toast radius and shadow<\/li>\n\n\n\n<li>[Fix] Wishlist \u2014 Saved page templates and visibility controls now reach the storefront, theme button styles no longer override Wishlist controls, and notifications announce safely without rendering response text as markup<\/li>\n\n\n\n<li>[Fix] Wishlist \u2014 Restored clearly visible remove icons, made button, shop-loop, notification, and page-template previews use the storefront markup and saved styles, repaired After Add to Cart placement, and prevented Elementor grids from nesting products inside one narrow sub-column (Pro)<\/li>\n\n\n\n<li>[Fix] Wishlist \u2014 Modern Cards now uses a stable three-column desktop layout without unnecessarily increasing the dashboard preview height<\/li>\n\n\n\n<li>[Fix] Back In Stock \u2014 Repaired fresh-install database setup, repeat subscriptions, confirmation expiry, variation waitlists, public request validation, and dashboard reporting<\/li>\n\n\n\n<li>[Tweak] Back In Stock \u2014 Added claimed retryable email delivery, bounded retention cleanup, configurable sender headers, order-based removal, and WordPress privacy export and erasure<\/li>\n\n\n\n<li>[Tweak] Back In Stock \u2014 Applied saved display and appearance settings, added accessible storefront dialogs, safer archive behavior, subscription pagination, and focused regression checks<\/li>\n\n\n\n<li>[Tweak] Email Verification \u2014 Scoped account interception to supported registration forms, added rate-limited self-service resends, hashed tokens, UTC expiry, explicit link confirmation, and email-change re-verification<\/li>\n\n\n\n<li>[Tweak] Email Verification \u2014 Added versioned indexed storage, privacy export and erasure, server-side pending-user pagination and search, accurate dashboard counts, and working dashboard deep links<\/li>\n\n\n\n<li>[Fix] Email Verification \u2014 Closed duplicate registration processing and alternate-login bypasses, preserved valid tokens after mail failures, made the verification email mandatory, and separated premium settings, cleanup, approval, and checkout enforcement from Free<\/li>\n\n\n\n<li>[Tweak] CAPTCHA \u2014 Added Checkout Block protection, request-scoped verification, per-client rate limiting, trusted-proxy detection, and provider action and hostname validation<\/li>\n\n\n\n<li>[Tweak] CAPTCHA Settings \u2014 Secret keys are no longer returned by the REST API, configured keys can be preserved safely, and incomplete providers cannot be enabled<\/li>\n\n\n\n<li>[Fix] CAPTCHA \u2014 Prevented WooCommerce login collisions, duplicate product-review checks, expired checkout token retries, and registration forms accepting unverified token text<\/li>\n\n\n\n<li>[Tweak] Checkout Field Editor &#8211; Added bounded canonical settings migration, validated imports, supported Checkout Block order fields, and honest dashboard compatibility guidance<\/li>\n\n\n\n<li>[Fix] Checkout Field Editor &#8211; Preserved third-party fields, mapped additional fields into WooCommerce&#8217;s order section, hardened scalar and option validation, and removed password fields and inert controls<\/li>\n\n\n\n<li>[Fix] Checkout Field Editor &#8211; Namespaced custom order metadata with HPOS CRUD, retained historical field labels, added admin, customer, email, and privacy handling, and removed the public Free upload endpoint<\/li>\n\n\n\n<li>[Tweak] Cookie Consent \u2014 Optional categories now start unchecked, decline and granular settings remain equally accessible, Do Not Track is honored, and keyboard focus is managed throughout the dialog<\/li>\n\n\n\n<li>[Tweak] Cookie Consent \u2014 Added editable categories, a known-cookie inventory scanner, working structured appearance controls, early Google consent defaults, safer preference withdrawal, and a functional footer settings link<\/li>\n\n\n\n<li>[Tweak] Cookie Consent \u2014 Migrated every banner, preference panel, and reopen control to the shared storefront design system with responsive Default, Minimal, and Magazine templates<\/li>\n\n\n\n<li>[Fix] Cookie Consent \u2014 Live previews now use the exact storefront component and saved appearance settings, while canonical Cookie Consent assets replace the retired GDPR Notice filenames<\/li>\n\n\n\n<li>[Fix] Cookie Consent \u2014 Restored the Minimal preview and frontend card, prevented clipped or collapsed content and controls, and matched the Magazine preview layout to the storefront<\/li>\n\n\n\n<li>[Fix] Cookie Consent \u2014 Repaired malformed consent-cookie handling, dashboard navigation, bounded logging requests, uninstall cleanup, and misleading universal cookie-blocking claims<\/li>\n\n\n\n<li>[Fix] Cookie Consent Pro \u2014 Removed invalid self-hosted IAB TCF signaling; improved geo targeting, integration gating, privacy disclosures, indexed consent records, bounded exports and reports, and automatic retention cleanup<\/li>\n\n\n\n<li>[Tweak] Ajax Search \u2014 Storefront and Elementor searches now share one bounded REST service with ID-level caching, indexed SKU-prefix matching, anonymous popular suggestions, and automatic cache invalidation<\/li>\n\n\n\n<li>[Tweak] Ajax Search \u2014 Assets now load only where search renders, result interfaces use accessible keyboard and modal behavior, and customer content is built with safe DOM APIs<\/li>\n\n\n\n<li>[Fix] Ajax Search \u2014 Migrated legacy setting names into one canonical schema, repaired synonym editing and analytics period filtering, and bound click attribution to signed returned-product tokens<\/li>\n\n\n\n<li>[Tweak] Background processing \u2014 Stock notifications, subscription maintenance, account cleanup, and abandoned-cart cleanup now use bounded batches, backlog continuations, and overlap protection<\/li>\n\n\n\n<li>[Tweak] Database performance \u2014 Shipment statistics, Wishlist pages, subscription maintenance, and Cart Recovery administration now use cached counts, pagination, bulk loading, and indexed queries<\/li>\n\n\n\n<li>[Tweak] Ajax Search \u2014 Search analytics now use bounded indexed storage with automatic retention cleanup and rate-limited public tracking<\/li>\n\n\n\n<li>[Tweak] Frontend performance \u2014 Disabled Currency Switcher installations no longer attach price filters, while Currency Switcher and Wishlist assets load only where their interfaces render<\/li>\n\n\n\n<li>[Tweak] Currency Switcher \u2014 Expanded currency configuration to a uniform 100-currency safety limit for all stores<\/li>\n\n\n\n<li>[Fix] Frontend assets \u2014 Repaired corrupted CSS variables and JavaScript identifiers that could break styling and interactions across multiple features<\/li>\n\n\n\n<li>[Fix] Scheduled tasks \u2014 Corrected cron hook mismatches for subscription renewals, back-in-stock notifications, and email verification cleanup<\/li>\n\n\n\n<li>[Fix] Subscriptions \u2014 Restored My Account actions and stopped the admin from requesting a missing subscription script<\/li>\n\n\n\n<li>[Fix] Subscriptions \u2014 Initial checkout now charges the correct trial, sign-up fee, selected plan, and prorated amount while preserving an immutable recurring agreement snapshot<\/li>\n\n\n\n<li>[Fix] Subscriptions \u2014 Renewal orders now preserve purchased quantity, currency, coupons, scheduled shipping, billing anchors, and complete related-order history without duplicate schedule advancement<\/li>\n\n\n\n<li>[Fix] Subscriptions \u2014 Corrected manual renewals, finite terms, trial notices, purchase limits, lifecycle transitions, customer account requirements, mixed carts, and saved email settings<\/li>\n\n\n\n<li>[Tweak] Subscriptions \u2014 Added indexed relationship storage, privacy export and erasure, server-side administration search, conditional assets, bounded maintenance, and Cart and Checkout Blocks compatibility<\/li>\n\n\n\n<li>[Tweak] Subscriptions \u2014 Product purchase panels, shop buttons, plan selectors, My Account pages, and the dashboard preview now share one responsive design system that applies saved appearance controls consistently<\/li>\n\n\n\n<li>[Tweak] Subscriptions \u2014 Appearance previews now use the standard sub-navigation to switch between single-plan, multiple-plan, and Pro buy-once product states without styling theme-owned shop buttons<\/li>\n\n\n\n<li>[Fix] Subscriptions \u2014 Single-plan products no longer repeat their only plan, while multi-plan Buy Once flows show plan choices only when subscribing and preserve saved styling against theme overrides<\/li>\n\n\n\n<li>[Fix] REST APIs \u2014 Hardened storefront routes with signed links, request limits, ownership checks, bounded inputs, and catalogue visibility rules<\/li>\n\n\n\n<li>[Fix] Feature settings \u2014 Strengthened validation and sanitization for Ajax Search, Back in Stock, Currency Switcher, GDPR, Registration Forms, and Wishlist settings<\/li>\n\n\n\n<li>[Fix] Free and Pro compatibility \u2014 Moved premium Quantity Limits and variable Product Bundle request handlers to Pro while preserving fully functional Free behavior<\/li>\n\n\n\n<li>[Fix] Wishlist \u2014 Bulk cart additions now accept only products from the visitor&#8217;s wishlist, enforce a safe batch size, and respect WooCommerce validation<\/li>\n\n\n\n<li>[Fix] Cart Recovery \u2014 Guest email capture now verifies the active WooCommerce session and limits repeated requests<\/li>\n\n\n\n<li>[Fix] Cart Recovery \u2014 Recovery links now restore variations and supported cart-item data, while conversions and revenue are credited only after the exact attributed order is paid<\/li>\n\n\n\n<li>[Tweak] Cart Recovery \u2014 Added indexed email scheduling, bounded backlog processing, durable opt-outs, automatic stale-cart cleanup, and paginated privacy exports and erasure<\/li>\n\n\n\n<li>[Fix] Added To Cart Popup \u2014 Popup responses no longer expose unpublished or catalogue-hidden products<\/li>\n\n\n\n<li>[Tweak] Added To Cart Popup \u2014 Classic, Flyout, and Solid Bar templates now use a refreshed shared design with a clear success header, unified cart summary, responsive actions, loading states, and accessibility<\/li>\n\n\n\n<li>[Fix] Added To Cart Popup \u2014 Restored the dashboard live-preview stylesheet, removed the Loaded and Loading controls, and kept its markup, settings, and responsive behavior aligned with the storefront<\/li>\n\n\n\n<li>[Fix] Storefront branding \u2014 Standardized Swift Commerce defaults on #00226b and safely migrated exact retired brand colors without changing merchant-selected colors<\/li>\n\n\n\n<li>[Fix] Currency Switcher \u2014 Currency changes now verify feature state and use bounded, secure browser cookie settings<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.4.9 &#8211; 1 April, 2026<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[Tweak] reCAPTCHA \u2014 Client-side form blocking prevents submission until CAPTCHA is completed (v2 Checkbox)<\/li>\n\n\n\n<li>[Tweak] Dashboard \u2014 Cart Recovery now appears in the enabled features overview card<\/li>\n\n\n\n<li>[Tweak] WordPress Plugin Check (PCP) compliance \u2014 Proper escaping, sanitization, and phpcs annotations across all features<\/li>\n\n\n\n<li>[Fix] Pro compatibility \u2014 Added safety guards to prevent fatal errors when Pro classes are unavailable<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.4.8 &#8211; 17 March, 2026<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[New Feature] Registration Form \u2014 Email Customizer integration for welcome email templates<\/li>\n\n\n\n<li>[New Feature] Email Verification \u2014 Enable\/disable switches for admin approval notification emails<\/li>\n\n\n\n<li>[Tweak] Shipment Tracking \u2014 Redesigned Appearance tab with full form customization and live preview<\/li>\n\n\n\n<li>[Tweak] Dashboard \u2014 Updated brand color scheme across all features<\/li>\n\n\n\n<li>[Fix] Subscriptions \u2014 Variable subscription products not saving correctly<\/li>\n\n\n\n<li>[Fix] Wishlist \u2014 Incorrect shortcode displayed in the Sharing tab<\/li>\n\n\n\n<li>[Fix] Registration Form \u2014 Edit dialog not opening automatically after adding a new field<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.4.4 &#8211; 10 March, 2026<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[Tweak] Google Fonts \u2014 Centralized font loading across all features to eliminate duplicate requests<\/li>\n\n\n\n<li>[Tweak] Ajax Search \u2014 Analytics data now cached for improved dashboard performance<\/li>\n\n\n\n<li>[Fix] Cookie Consent \u2014 Banner reappearing after accepting or rejecting due to consent cookie not being read correctly<\/li>\n\n\n\n<li>[Fix] Subscriptions \u2014 Trial ending email now uses its own dedicated template instead of reusing the renewal reminder<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.4.3 &#8211; 3 March, 2026<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[Fix] Subscription My Account pages showing broken styling and incorrect background colors<\/li>\n\n\n\n<li>[Fix] Subscription list action buttons not aligned under the Actions column<\/li>\n\n\n\n<li>[Fix] Admin subscription detail page returning a permission error<\/li>\n\n\n\n<li>[Fix] Wishlist triggering &#8220;Cannot modify header information&#8221; warning in debug log<\/li>\n\n\n\n<li>[Fix] Cookie Consent banner width setting not applying on the frontend<\/li>\n\n\n\n<li>[Fix] Cookie Consent template grid displaying in two columns instead of three<\/li>\n\n\n\n<li>[Tweak] Input sanitization for Add to Cart Popup and Wishlist AJAX handlers<\/li>\n\n\n\n<li>[Tweak] WordPress Plugin Check compliance for coding standards across multiple features<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.4.2 &#8211; 28 February, 2026<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[New Feature] Added to Cart Popup \u2014 Custom heading text, product area background color, and button border radius controls<\/li>\n\n\n\n<li>[New Feature] Added to Cart Popup \u2014 Background and Animation customization sections (Pro)<\/li>\n\n\n\n<li>[New Feature] Wishlist \u2014 &#8220;Add All to Cart&#8221; bulk action on Wishlist page<\/li>\n\n\n\n<li>[New Feature] Wishlist \u2014 WhatsApp sharing and Copy Link sharing buttons<\/li>\n\n\n\n<li>[New Feature] Product Bundles \u2014 Background color customization and quantity alignment controls<\/li>\n\n\n\n<li>[New Feature] Product Bundles \u2014 Template action hooks for bundle item content and before add-to-cart button<\/li>\n\n\n\n<li>[New Feature] Ajax Search \u2014 Field weight controls for title, content, excerpt, and SKU relevance (Pro)<\/li>\n\n\n\n<li>[New Feature] reCAPTCHA\/hCaptcha \u2014 Widget mode selector (visible\/invisible) for hCaptcha<\/li>\n\n\n\n<li>[New Feature] Quantity Limits \u2014 Bulk category rule management with search, multi-select, and batch apply\/clear<\/li>\n\n\n\n<li>[Tweak] Added to Cart Popup \u2014 Flyout and Solid Bar previews pin to edges with proper positioning<\/li>\n\n\n\n<li>[Tweak] Added to Cart Popup \u2014 Popup Buttons section moved to Settings tab with visibility controls<\/li>\n\n\n\n<li>[Tweak] Added to Cart Popup \u2014 Close Button section uses GlobalColorPicker<\/li>\n\n\n\n<li>[Tweak] Product Bundles \u2014 Templates section uses 3-column layout, Border Color moved into Product Styling<\/li>\n\n\n\n<li>[Tweak] Quantity Limits \u2014 Category rules save in a single bulk request instead of individual calls<\/li>\n\n\n\n<li>[Fix] Wishlist \u2014 Removed unused Emails tab and orphaned priceTracking\/emailCampaigns settings<\/li>\n\n\n\n<li>[Fix] Wishlist page \u2014 Corrected double closing bracket typo in email share link<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.4.0 &#8211; 27 February, 2026<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">= 1.4.0 =<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[New Feature] Abandoned Cart Recovery \u2014 Automated email sequences with cart tracking, guest capture, and coupon incentives<\/li>\n\n\n\n<li>[New Feature] Conditional Logic for Checkout Field Editor \u2014 Show\/hide fields based on cart contents, totals, and field values<\/li>\n\n\n\n<li>[New Feature] Quick Add Fields drag-and-drop redesign for Checkout Field Editor<\/li>\n\n\n\n<li>[New Feature] CSV Export for Abandoned Cart Recovery (Carts and Analytics tabs)<\/li>\n\n\n\n<li>[Tweak] FeatureHeader upgrade button added consistently across all features<\/li>\n\n\n\n<li>[Tweak] Subscription frontend styles now applied on shop and archive pages<\/li>\n\n\n\n<li>[Tweak] Subscription price HTML uses proper CSS class selectors instead of fragile :first-of-type\/:last-of-type<\/li>\n\n\n\n<li>[Fix] Subscription styling not applied on shop\/archive pages<\/li>\n\n\n\n<li>[Fix:] Subscription CSS selectors breaking with theme variations<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.3.0 &#8211; 20 February, 2026<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[New Feature] Global Styles \u2014 Centralized color palette and typography system that applies across all features for consistent store-wide branding<\/li>\n\n\n\n<li>[New Feature] Global Color Picker and Global Typography Picker components available in every feature&#8217;s Customize Design tab<\/li>\n\n\n\n<li>[New Feature] Email Customizer \u2014 Now a standalone global component, moved out of Subscriptions and available for Back In Stock, Email Verification, and future features<\/li>\n\n\n\n<li>[New Feature] Email Customizer \u2014 Sender Settings section with From Name, From Email, Reply-To Name, and Reply-To Email fields<\/li>\n\n\n\n<li>[New Feature] Email Customizer \u2014 Product Display section with toggleable product card (image, title, price) and CTA button for Back In Stock emails<\/li>\n\n\n\n<li>[New Feature] Email Customizer \u2014 Placeholder system with categorized tags (Product, Customer, Site) and one-click insert<\/li>\n\n\n\n<li>[New Feature] Back In Stock \u2014 Full Email Customizer integration with visual email editor, live preview, and product card rendering for Notification and Confirmation emails<\/li>\n\n\n\n<li>[New Feature] Email Verification \u2014 Full Email Customizer integration with visual editor for verification emails<\/li>\n\n\n\n<li>[New Feature] Cloudflare Turnstile and hCaptcha support (Pro) \u2014 Three CAPTCHA provider options with provider selector UI and individual key management<\/li>\n\n\n\n<li>[Tweak] Unified Customize Design tab across all 12+ features \u2014 consistent TemplateGrid with 3 pre-made templates, Custom template with color controls, and Pro-gated advanced styling (Typography, Spacing, Borders, Custom CSS)<\/li>\n\n\n\n<li>[Tweak] Ajax Search \u2014 Consolidated Display, Style, and Shortcode tabs into single Customize Design tab with template presets<\/li>\n\n\n\n<li>[Tweak] Currency Switcher \u2014 Redesigned Customizations tab with template presets and unified styling controls<\/li>\n\n\n\n<li>[Tweak] Cookie Consent \u2014 Redesigned Appearance tab with template presets and accordion-based custom controls<\/li>\n\n\n\n<li>[Tweak] Wishlist \u2014 Redesigned Appearance tab with template presets and streamlined controls<\/li>\n\n\n\n<li>[Tweak] Back In Stock \u2014 Redesigned Customization tab with template presets and product card display settings<\/li>\n\n\n\n<li>[Tweak] Email Customizer \u2014 Improved typography section with Google Fonts search and font weight selector<\/li>\n\n\n\n<li>[Tweak] Email Customizer \u2014 Brand-colored &#8220;Customize Email&#8221; buttons (#345c72) across all features<\/li>\n\n\n\n<li>[Tweak] Email Customizer \u2014 Removed sidebar toggle for cleaner full-screen experience<\/li>\n\n\n\n<li>[Tweak] Back In Stock Notifications tab \u2014 Redesigned from inline form controls to clean list layout with two email template rows<\/li>\n\n\n\n<li>[Tweak] GDPR Notice \u2014 Enhanced frontend CSS with additional template styles and improved responsive behavior<\/li>\n\n\n\n<li>[Tweak] Product Addons \u2014 Enhanced frontend CSS with new template styles<\/li>\n\n\n\n<li>[Tweak] Added To Cart Popup \u2014 Improved autoclose timer JavaScript and enhanced CSS styling<\/li>\n\n\n\n<li>[Tweak] Config files updated across all features with template definitions and design system tokens<\/li>\n\n\n\n<li>[Tweak] Sidebar navigation \u2014 Added Globals entry point for centralized style management<\/li>\n\n\n\n<li>[Fix] Removed legacy subscription-specific Email Customizer class (replaced by global class-email-customizer.php)<\/li>\n\n\n\n<li>[Fix] Removed Elementor Product Bundles widget (redundant with WooCommerce block editor support)<\/li>\n\n\n\n<li>[Fix] PHP 8.1+ compatibility \u2014 Fixed strpos() null parameter deprecation warnings in admin asset enqueue callbacks<\/li>\n\n\n\n<li>[Fix] Fixed unregistered <code>swift-commerce-frontend<\/code> style dependency \u2014 base frontend CSS now registered unconditionally so Pro plugin&#8217;s dependency always resolves<\/li>\n\n\n\n<li>[Fix] Back In Stock \u2014 Product name display in emails now respects includeTitle toggle<\/li>\n\n\n\n<li>[Fix] Back In Stock \u2014 Test email preview now renders product card with image, title, and price based on saved toggle settings<\/li>\n\n\n\n<li>[Fix] Email Customizer \u2014 Proper sanitization for boolean email settings (includePrice, includeImage, includeTitle)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.2.7 &#8211; February 14, 2025<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[Tweak] WordPress.org compliance &#8211; Replaced <code>sc_<\/code> prefixes with <code>swift_commerce_<\/code>, removed all trialware\/locked-feature patterns, added proper &#8220;Upgrade to Pro&#8221; marketing tabs for all 15 features<\/li>\n\n\n\n<li>[Tweak] System Info page &#8211; Two-column layout, real feature activation status, separate Free\/Pro version display, brand color header icon<\/li>\n\n\n\n<li>[Tweak] Added ProIndicator crown icon to all Pro-gated cards, toggles, and options within feature tabs<\/li>\n\n\n\n<li>[Tweak] Brand consistency &#8211; All feature page header icons now use brand color (#345c72)<\/li>\n\n\n\n<li>[Tweak] Color picker inputs now use cohesive square swatches with slate borders across the dashboard<\/li>\n\n\n\n<li>[New Feature] Email Customizer &#8211; Google Fonts integration with 30 popular web fonts and searchable font picker<\/li>\n\n\n\n<li>[Tweak] License activation banner when Pro plugin is installed but license is not activated<\/li>\n\n\n\n<li>[Fix] Freemius license page fatal error &#8211; Added is_registered() check before rendering account page<\/li>\n\n\n\n<li>[Fix] License enforcement &#8211; Pro features now require valid Freemius license instead of auto-detecting local domains<\/li>\n\n\n\n<li>[Fix] Added Google Fonts to External Services documentation in readme.txt<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.2.4 &#8211; January 25, 2026<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[New Feature] Currency Switcher &#8211; Added 160+ new currencies support with country flags for global commerce<\/li>\n\n\n\n<li>[New Feature] Email Customizer &#8211; Now a reusable component available for all email features<\/li>\n\n\n\n<li>[Tweak] Quantity Limits &#8211; Merged Orders tab into Cart tab for simpler Pro feature organization<\/li>\n\n\n\n<li>[Tweak] Quantity Limits &#8211; Excluded Products now part of Cart Rules (Pro feature)<\/li>\n\n\n\n<li>[Tweak] Quantity Limits &#8211; Cart Spend Restrictions currency symbol no longer overlaps input text<\/li>\n\n\n\n<li>[Tweak] Email Customizer &#8211; Improved UI with device preview switcher (desktop\/tablet\/mobile)<\/li>\n\n\n\n<li>[Tweak] Email Customizer &#8211; Added typography, colors, branding, layout, and footer sections<\/li>\n\n\n\n<li>[Tweak] Subscriptions &#8211; Enhanced email configuration with new Email Customizer component<\/li>\n\n\n\n<li>[Tweak] Dialog component &#8211; Improved accessibility and positioning<\/li>\n\n\n\n<li>[Tweak] Field Editor &#8211; Better settings organization and layout<\/li>\n\n\n\n<li>[Tweak] Registration Form &#8211; Improved settings tab layout<\/li>\n\n\n\n<li>[Tweak] Product Bundles &#8211; Enhanced settings tab<\/li>\n\n\n\n<li>[Fix] Added to Cart Popup &#8211; Close button now properly respects the configured autoclose timer<\/li>\n\n\n\n<li>[Fix] Quantity Limits &#8211; Checkout buttons now properly disabled when cart limits are violated<\/li>\n\n\n\n<li>[Fix] Quantity Limits &#8211; Disabled checkout buttons retain their original styling<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.2.3 &#8211; January 22, 2026<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[Fix] WordPress 6.7+ translation loading &#8211; Moved all class initialization to &#8216;init&#8217; hook to prevent _load_textdomain_just_in_time notices<\/li>\n\n\n\n<li>[Fix] Freemius SDK initialization delayed to &#8216;after_setup_theme&#8217; hook for proper translation loading<\/li>\n\n\n\n<li>[Fix] WooCommerce HPOS compatibility declaration moved to standalone &#8216;before_woocommerce_init&#8217; hook<\/li>\n\n\n\n<li>[Fix] Generic function\/class\/namespace prefixes renamed from &#8216;synkfiniti&#8217; to &#8216;swiftCommerce&#8217; for WordPress.org compliance<\/li>\n\n\n\n<li>[Tweak] Improved WordPress.org plugin review compliance across all code<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.2.2 &#8211; January 18, 2026<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[New Feature] Quantity Limits &#8211; Category rules now display product categories correctly<\/li>\n\n\n\n<li>[Tweak] Email Verification &#8211; Password fields on WordPress registration form so users set their own password<\/li>\n\n\n\n<li>[New Feature] Email Verification &#8211; Status column in pending users table showing verified\/pending state<\/li>\n\n\n\n<li>[Tweak] Dashboard &#8211; Blog posts now fetched live from swiftcommerce.io<\/li>\n\n\n\n<li>[Tweak] Quantity Limits &#8211; Unified save behavior across all tabs (Settings, Orders, Categories, Cart)<\/li>\n\n\n\n<li>[Tweak] Quantity Limits &#8211; Cart tab uses compact two-column layout<\/li>\n\n\n\n<li>[Tweak] Quantity Limits &#8211; Pro badges on Categories and Cart tabs<\/li>\n\n\n\n<li>[Tweak] Quantity Limits &#8211; Product edit panel has proper padding<\/li>\n\n\n\n<li>[Tweak] Product Bundles &#8211; Search dropdown no longer cut off by panel overflow<\/li>\n\n\n\n<li>[Tweak] Subscriptions &#8211; Free Trial icon changed from gift to clock for clarity<\/li>\n\n\n\n<li>[Tweak] Registration Form &#8211; Core fields (username, email, password) no longer duplicated<\/li>\n\n\n\n<li>[Tweak] Wishlist &#8211; Uses Pro context instead of global variable<\/li>\n\n\n\n<li>[Fix] Product Bundles &#8211; 404 errors for quantity-limits-admin.js\/css removed<\/li>\n\n\n\n<li>[Fix] Product Bundles &#8211; Icon uses dashicons instead of missing SVG<\/li>\n\n\n\n<li>[Fix] Email Verification &#8211; Table name uses lowercase for MySQL compatibility<\/li>\n\n\n\n<li>[Fix] Email Verification &#8211; Admin notification indicates pending verification status<\/li>\n\n\n\n<li>[Fix] Admin menu icon CSS applied correctly without missing handle error<\/li>\n\n\n\n<li>[Fix] Favicon path corrected to use assets\/img\/favicon.png<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.2.1 &#8211; January 14, 2026<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[Tweak] Added proper output escaping using esc_html(), esc_attr(), esc_url(), and wp_kses() throughout the plugin<\/li>\n\n\n\n<li>[Tweak] Added nonce verification to all form submissions and AJAX handlers<\/li>\n\n\n\n<li>[Tweak] Added explicit permission_callback documentation for all public REST API endpoints<\/li>\n\n\n\n<li>[Tweak] Renamed WC_Product_* classes to SWIFT_COMMERCE_Product_* to avoid conflicts with WooCommerce core<\/li>\n\n\n\n<li>[Tweak] Converted all inline styles and scripts to properly enqueued assets using wp_enqueue_style() and wp_enqueue_script()<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.2.0 &#8211; January 6, 2026<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[New Feature] Email Customizer for Subscriptions &#8211; Full visual email editor with live preview, custom branding, header images, social links, and per-email styling<\/li>\n\n\n\n<li>[Tweak] Wishlist JavaScript error &#8220;Cannot read properties of undefined&#8221; &#8211; fixed variable name mismatch between PHP and JS<\/li>\n\n\n\n<li>[Tweak] Wishlist AJAX 400 Bad Request error &#8211; corrected action names to match PHP handlers<\/li>\n\n\n\n<li>[Fix] Ajax Search mobile responsiveness and touch interactions<\/li>\n\n\n\n<li>[Fix] Ajax Search keyboard navigation and accessibility improvements<\/li>\n\n\n\n<li>[Fix] Redundant Elementor widget files consolidated into placeholder system<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.1.2 &#8211; January 4, 2026<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[Fix] Cookie Consent logging now properly stores consent records in the database<\/li>\n\n\n\n<li>[Fix] REST API endpoints now work correctly on subdirectory WordPress installations<\/li>\n\n\n\n<li>[Fix] Improved authentication handling for admin REST API requests<\/li>\n\n\n\n<li>[Tweak] Renamed &#8220;GDPR Notice&#8221; to &#8220;Cookie Consent&#8221; in Enabled Features for clarity<\/li>\n\n\n\n<li>[Tweak] Cookie Consent architecture refactored for better extensibility<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.1.1 &#8211; January 4, 2026<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[Fix] Elementor Widget_Base class not found error on WordPress Playground and other environments<\/li>\n\n\n\n<li>[Tweak] Changed Elementor widget loading hook for better compatibility<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.1.0 &#8211; January 3, 2026<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[New Feature] Subscription email configuration now directly in Swift Commerce dashboard<\/li>\n\n\n\n<li>[New Feature] Inline email enable\/disable switches with expandable configuration panels<\/li>\n\n\n\n<li>[New Feature] Email preview functionality for subscription notifications<\/li>\n\n\n\n<li>[New Feature] Registration Form added to Enabled Features list on dashboard<\/li>\n\n\n\n<li>[Tweak] Pro badges now always visible on Pro features for better UX<\/li>\n\n\n\n<li>[Tweak] Better email architecture with proper Free\/Pro separation<\/li>\n\n\n\n<li>[Fix] Fixed critical error caused by Pro email class loading order<\/li>\n\n\n\n<li>[Fix] Fixed invalid shortcode names with spaces (now uses swift_commerce_search)<\/li>\n\n\n\n<li>[Fix] Fixed AJAX action name mismatch in Product Bundles admin<\/li>\n\n\n\n<li>[Fix] Dashboard now correctly shows 15 features instead of 14<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.0.0 &#8211; January 1, 2026<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Initial Release<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The latest updates to the Swift Commerce Free plugin 1.5.0 &#8211; 30 July, 2026 1.4.9 &#8211; 1 April, 2026 1.4.8 &#8211; 17 March, 2026 1.4.4 &#8211; 10 March, 2026 1.4.3 &#8211; 3 March, 2026 1.4.2 &#8211; 28 February, 2026 1.4.0 &#8211; 27 February, 2026 = 1.4.0 = 1.3.0 &#8211; 20 February, 2026 1.2.7 &#8211; February [&hellip;]<\/p>\n","protected":false},"author":101,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"doc_category":[80],"doc_tag":[],"class_list":["post-3122","docs","type-docs","status-publish","hentry","doc_category-changelog"],"year_month":"2026-09","word_count":3956,"total_views":"131","reactions":{"happy":"0","normal":"0","sad":"0"},"author_info":{"name":"Mansoor Ahmad","author_nicename":"helpadmin","author_url":"https:\/\/www.swiftcommerce.io\/help\/author\/helpadmin\/"},"doc_category_info":[{"term_name":"Changelog","term_url":"https:\/\/www.swiftcommerce.io\/help\/docs-category\/changelog\/"}],"doc_tag_info":[],"knowledge_base_info":[],"knowledge_base_slug":[],"_links":{"self":[{"href":"https:\/\/www.swiftcommerce.io\/help\/wp-json\/wp\/v2\/docs\/3122","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.swiftcommerce.io\/help\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/www.swiftcommerce.io\/help\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/www.swiftcommerce.io\/help\/wp-json\/wp\/v2\/users\/101"}],"replies":[{"embeddable":true,"href":"https:\/\/www.swiftcommerce.io\/help\/wp-json\/wp\/v2\/comments?post=3122"}],"version-history":[{"count":19,"href":"https:\/\/www.swiftcommerce.io\/help\/wp-json\/wp\/v2\/docs\/3122\/revisions"}],"predecessor-version":[{"id":3297,"href":"https:\/\/www.swiftcommerce.io\/help\/wp-json\/wp\/v2\/docs\/3122\/revisions\/3297"}],"wp:attachment":[{"href":"https:\/\/www.swiftcommerce.io\/help\/wp-json\/wp\/v2\/media?parent=3122"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/www.swiftcommerce.io\/help\/wp-json\/wp\/v2\/doc_category?post=3122"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/www.swiftcommerce.io\/help\/wp-json\/wp\/v2\/doc_tag?post=3122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}