=== Swift Commerce — Wishlists, Subscriptions & Cart Recovery for WooCommerce ===
Contributors: swiftcommerce
Tags: woocommerce, wishlist, subscriptions, currency switcher, cart recovery
Requires at least: 6.0
Tested up to: 7.0
Stable tag: 1.5.0
Requires PHP: 7.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Replace 16 WooCommerce plugins with one — wishlists, subscriptions, currency switcher, checkout fields, bundles & more.

== Description ==

#### LAUNCH WOOCOMMERCE STORES FASTER, 10X AFFORDABLE AND WITH LESS TECHNICAL HEADACHE. 16 FEATURES. ONE BEAUTIFUL DASHBOARD.

Swift Commerce is everything your WooCommerce store needs — wishlists, subscriptions, product bundles, cart recovery, currency switching, checkout customization, cookie consent controls, and more — managed from one sleek, centralized dashboard.

No juggling 15+ separate plugins. No debugging conflicts. No paying hundreds in stacked subscription fees. One install, one interface, and you're ready to sell.

**And every single feature is acessible for free.** Subscriptions, bundles, shipment tracking, cart recovery — all of it.

= 🌟 All 16 Features — Included Free =

**🛒 Sell More**

* **[Wishlist](https://swiftcommerce.io/features/wishlist/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)** — Customers save products and come back to buy. Supports guests and logged-in users.
* **[Ajax Live Search](https://swiftcommerce.io/features/ajax-search/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)** — Real-time product search with instant suggestions. Fewer bounces, more sales.
* **[Currency Switcher](https://swiftcommerce.io/features/currency-switcher/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)** — Display prices in 160+ currencies with automatic exchange rates and geolocation.
* **[Add to Cart Popup](https://swiftcommerce.io/features/add-to-cart-popup/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)** — Cross-sell suggestions the moment a customer adds a product to cart.
* **[Product Bundles](https://swiftcommerce.io/features/product-bundles/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)** — Create discounted product packages to increase average order value.
* **[Product Addons](https://swiftcommerce.io/features/product-addons/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)** — Add custom fields, gift wrapping, engraving, and upgrades to any product.

**💰 Grow Revenue**

* **[Subscriptions](https://swiftcommerce.io/features/subscriptions/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)** — Recurring billing with flexible plans, free trials, and automated renewal emails.
* **[Cart Recovery](https://swiftcommerce.io/features/cart-recovery/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)** — Automated abandoned cart emails with secure one-click recovery links.
* **[Back in Stock Notifications](https://swiftcommerce.io/features/back-in-stock/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)** — Customers subscribe to out-of-stock products and get notified when inventory returns.

**⚙️ Customize & Control**

* **[Checkout Field Editor](https://swiftcommerce.io/features/checkout-field-editor/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)** — Add, remove, and reorder fields on classic checkout, with supported custom order fields also registered through the WooCommerce Checkout Block API.
* **[Custom Registration Forms](https://swiftcommerce.io/features/registration-form/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)** — Collect the right customer data from day one with custom fields and validation.
* **[Quantity Limits](https://swiftcommerce.io/features/quantity-limits/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)** — Set min/max purchase rules and cart spend limits per product or category.
* **[Shipment Tracking](https://swiftcommerce.io/features/shipment-tracking/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)** — Add tracking numbers and auto-notify customers. Supports FedEx, UPS, DHL, USPS, and more.

**🔒 Trust & Compliance**

* **[Cookie Consent](https://swiftcommerce.io/features/gdpr-cookie-consent/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)** — Configurable cookie banners with granular category controls and optional consent records (Pro).
* **[Email Verification](https://swiftcommerce.io/features/email-verification/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)** — Require email verification on registration. Eliminate fake accounts.
* **[reCAPTCHA & CAPTCHA](https://swiftcommerce.io/features/recaptcha/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)** — Protect login, registration, and checkout forms from bots and spam.

**🎨 Design Tools** (built into every feature)

* **[Email Customizer](https://swiftcommerce.io/features/email-customizer/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)** — Visual email editor with live preview, Google Fonts, product cards, and placeholder tags.

= 🔑 What Does Pro Add? =

Every feature above works fully for free. [Swift Commerce Pro](https://swiftcommerce.io/pricing/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme) enhances each feature with advanced capabilities:

* **Wishlist** → Social sharing, multiple named wishlists, and email reminders for saved products
* **Ajax Live Search** → Search by SKU, weighted results, and advanced category/attribute filtering
* **Currency Switcher** → Geolocation auto-switch, checkout currency lock, and custom rounding rules
* **Add to Cart Popup** → Advanced cross-sell rules, conditional recommendations, and popup design templates
* **Product Bundles** → Dynamic pricing, variable product support, and advanced discount rules
* **Product Addons** → Protected file uploads, server-enforced conditional visibility, date/time fields, color swatches, and add-on quantities
* **Subscriptions** → Advanced billing intervals, subscriber management, and email customization
* **Cart Recovery** → Analytics dashboard, coupon generation, and CSV export
* **Back in Stock** → Subscriber analytics, priority queue, and custom notification scheduling
* **Checkout Field Editor** → Conditional logic rules (show/hide fields based on cart, user, or other field values)
* **Registration Forms** → Conditional fields, multi-step forms, and advanced field types
* **Quantity Limits** → Per-category rules, cart spend restrictions, and role-based limits
* **Shipment Tracking** → Bulk import, custom carriers, and automated status emails
* **Cookie Consent** → Advanced consent categories, geo-targeting, and analytics integration
* **Email Verification** → Custom verification page styling and admin notification controls
* **reCAPTCHA** → Adds Cloudflare Turnstile and hCaptcha as alternative CAPTCHA providers
* **All features** → Global Styles (centralized brand colors and typography) plus full design customization (spacing, borders, shadows, custom CSS)

Pro doesn't unlock features — it supercharges the ones you already have.

= ⚡ Built for Performance =

* **Conditional loading** — Disabled features add zero overhead to your site
* **One codebase** — No plugin conflicts, no duplicated libraries, no redundant database queries
* **Modern stack** — PHP 7.4+, WooCommerce HPOS compatible, block checkout ready

= 🎯 Who Is This For? =

* **Store owners** replacing a bloated stack of 10+ individual WooCommerce plugins
* **Agencies** setting up client stores faster with one plugin instead of a dozen
* **Subscription businesses** needing recurring billing, wishlists, and cookie consent controls in one package
* **International sellers** requiring multi-currency + geolocation + localized checkout fields

= 📚 Documentation & Support =

* [Documentation & Guides](https://swiftcommerce.io/help/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)
* [Contact Support](https://swiftcommerce.io/contact/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)
* [Feature Requests](https://swiftcommerce.io/contact/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme)

== Installation ==

= Quick Start (60 seconds) =

1. Search for "Swift Commerce" in **Plugins → Add New**, or upload the ZIP file
2. Activate through the Plugins menu
3. Go to **Swift Commerce** in your admin sidebar to configure features
4. Enable only the features you need — everything else stays dormant

= Requirements =

* WordPress 6.0+
* WooCommerce 7.0+
* PHP 7.4+

= Source Code =

This plugin includes full uncompressed source code in the `src/` directory for WordPress.org compliance:

* `src/` — React/TypeScript source (components, hooks, features)
* `assets/js/` — Unminified frontend JavaScript
* `assets/css/` — Unminified frontend CSS
* `build/` — Compiled admin dashboard output

= Build Instructions =

1. Install Node.js (v18+)
2. Run `npm install` in the plugin directory
3. Run `npm run build`

Build tools: [Vite](https://vitejs.dev/), [TypeScript](https://www.typescriptlang.org/), [Tailwind CSS](https://tailwindcss.com/), [PostCSS](https://postcss.org/)

== Frequently Asked Questions ==

= Will this slow down my site? =

No. Features load conditionally — if a feature is disabled, it adds zero overhead. Replacing multiple plugins with Swift Commerce typically improves performance.

= Can I replace my existing plugins with this? =

Yes. Every feature is a full replacement for its standalone equivalent. We recommend testing on a staging site first.

= What if I only need a few features? =

Enable what you need, disable the rest. Disabled features don't load any code, CSS, or JavaScript.

= Is there a free version? =

Yes — and unlike most WooCommerce plugins, all 16 features work fully in the free version. Subscriptions, bundles, cart recovery, shipment tracking — everything. Pro adds advanced enhancements but nothing is locked.

= What does Pro add if everything is free? =

Pro enhances each feature with advanced capabilities — things like Cloudflare Turnstile for reCAPTCHA, conditional logic for checkout fields, analytics for cart recovery, and full design customization across all features. Think of it as going from great to exceptional.

= Does the wishlist work for guests? =

Yes. Guest wishlists use browser cookies and automatically transfer to the user's account when they register.

= Is the cookie consent GDPR compliant? =

It provides configurable consent controls, granular categories, and customizable banners. It gates integrations managed by Swift Commerce; scripts added by themes or other plugins require separate review. Privacy laws vary, so we recommend consulting a qualified legal professional for your store's requirements.

= How do exchange rates work? =

Set rates manually or enable automatic updates from ExchangeRate-API (free tier available). Rates are cached to minimize requests.

= What's your refund policy? =

30-day money-back guarantee on Pro. No questions asked.

= Where can I get help? =

Visit our [documentation](https://swiftcommerce.io/help/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme) or [contact support](https://swiftcommerce.io/contact/?utm_source=wp-repo&utm_medium=link&utm_campaign=readme).

== Screenshots ==

1. All-in-one dashboard — Enable, disable, and configure all 15+ features from one clean interface
2. Wishlist settings — Customize button placement, guest support, and design with live preview templates
3. Ajax Live Search — Configure real-time product search with instant results and category filtering
4. Currency Switcher — Set up 160+ currencies with automatic exchange rates and geolocation detection
5. Checkout Field Editor — Drag-and-drop field management for billing, shipping, and additional sections
6. Cookie Consent — Design configurable privacy banners with multiple templates and category controls
7. Back in Stock — Configure automated restock notifications with visual email editor
8. reCAPTCHA — Protect forms with Google reCAPTCHA; Pro adds Cloudflare Turnstile and hCaptcha

== Changelog ==

= 1.5.0 =

* [New Feature] Native Blocks — 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
* [New Feature] Added To Cart Popup — Added success-icon visibility and color controls, plus size and corner-radius controls in Pro
* [Tweak] Back In Stock — Notification forms now use shared accessible controls, alerts, dialog, loading, and toast states with reduced-motion support
* [Tweak] Back In Stock — 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)
* [Tweak] Storefront UI — Added a shared accessible design system, removed legacy styling aliases, and standardized public Free and Pro interfaces on the Swift Commerce namespace
* [Fix] Back In Stock — Stacked forms keep standard-height email fields, and live previews now match storefront Global Style colors, borders, spacing, and controls
* [Fix] Elementor compatibility - Removed stale widget loaders, restored Currency Switcher flags-only output, and made Wishlist grid and list removals target the correct rendered item
* [Tweak] Ajax Search — 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
* [Tweak] Ajax Search - Widget requests now honor their configured minimum query length and receive structured sale prices from the shared search service
* [Fix] Ajax Search — 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
* [Tweak] Currency Switcher - Added a normalized lowercase shortcode alias and corrected preset classes so saved storefront styles apply consistently
* [Tweak] Currency Switcher — Migrated every storefront layout and dashboard preview to the shared design system with consistent colors, flags, spacing, responsive behavior, and accessible keyboard controls
* [Fix] Currency Switcher — Corrected stretched flags, protected controls from theme and page-builder overrides, and kept narrow dropdown rows aligned without wrapping
* [Fix] Product Addons - 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
* [Fix] Product Addons - Add-on prices now use an immutable product base price with consistent flat, percentage, quantity, cart-quantity, tax-display, and variable-product calculations
* [Tweak] Product Addons - Added conditional storefront assets, a theme-overridable canonical template, accessible field output, bounded configuration data, working disable behavior, and accurate settings and upgrade descriptions
* [Tweak] Product Addons — Stacked, Grid, and Inline layouts now share the storefront design system, responsive controls, accessible states, Global Styles, and an accurate dashboard preview
* [Tweak] Product Bundles — Selected products, variations, quantities, prices, dimensions, and downloads now remain consistent from the product page through Cart, Checkout Blocks, orders, and recovered carts
* [Tweak] Product Bundles — Bundle prices now use WooCommerce's native product data and refresh in bounded batches when component prices change, while storefront and editor assets use safer conditional behavior
* [Tweak] Product Bundles — Grid, List, and Compact layouts now use the shared responsive storefront design system with Global Styles and an exact dashboard preview
* [Tweak] Product Bundles — Pro-only settings and appearance sections now show consistent crown indicators in the Dashboard (Pro)
* [Tweak] Dashboard — Header upgrade links now identify the originating feature and placement for campaign reporting
* [Fix] Product Bundles — Repaired optional selections, variable products, quantity limits, coupon behavior, shortcodes, stock validation, order displays, and product editor controls across Free and Pro configurations
* [Fix] Product Bundles — Removed the competing legacy stylesheet, prevented themes from collapsing bundle content, kept Classic previews in a three-column layout, and tightened Minimal list spacing
* [Tweak] Wishlist — 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
* [Tweak] Wishlist — Standardized the Appearance preview, consolidated button and notification controls, and added configurable toast radius and shadow
* [Fix] Wishlist — 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
* [Fix] Wishlist — 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)
* [Fix] Wishlist — Modern Cards now uses a stable three-column desktop layout without unnecessarily increasing the dashboard preview height
* [Fix] Back In Stock — Repaired fresh-install database setup, repeat subscriptions, confirmation expiry, variation waitlists, public request validation, and dashboard reporting
* [Tweak] Back In Stock — Added claimed retryable email delivery, bounded retention cleanup, configurable sender headers, order-based removal, and WordPress privacy export and erasure
* [Tweak] Back In Stock — Applied saved display and appearance settings, added accessible storefront dialogs, safer archive behavior, subscription pagination, and focused regression checks
* [Tweak] Email Verification — 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
* [Tweak] Email Verification — Added versioned indexed storage, privacy export and erasure, server-side pending-user pagination and search, accurate dashboard counts, and working dashboard deep links
* [Fix] Email Verification — 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
* [Tweak] CAPTCHA — Added Checkout Block protection, request-scoped verification, per-client rate limiting, trusted-proxy detection, and provider action and hostname validation
* [Tweak] CAPTCHA Settings — Secret keys are no longer returned by the REST API, configured keys can be preserved safely, and incomplete providers cannot be enabled
* [Fix] CAPTCHA — Prevented WooCommerce login collisions, duplicate product-review checks, expired checkout token retries, and registration forms accepting unverified token text
* [Tweak] Checkout Field Editor - Added bounded canonical settings migration, validated imports, supported Checkout Block order fields, and honest dashboard compatibility guidance
* [Fix] Checkout Field Editor - Preserved third-party fields, mapped additional fields into WooCommerce's order section, hardened scalar and option validation, and removed password fields and inert controls
* [Fix] Checkout Field Editor - 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
* [Tweak] Cookie Consent — 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
* [Tweak] Cookie Consent — 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
* [Tweak] Cookie Consent — Migrated every banner, preference panel, and reopen control to the shared storefront design system with responsive Default, Minimal, and Magazine templates
* [Fix] Cookie Consent — Live previews now use the exact storefront component and saved appearance settings, while canonical Cookie Consent assets replace the retired GDPR Notice filenames
* [Fix] Cookie Consent — Restored the Minimal preview and frontend card, prevented clipped or collapsed content and controls, and matched the Magazine preview layout to the storefront
* [Fix] Cookie Consent — Repaired malformed consent-cookie handling, dashboard navigation, bounded logging requests, uninstall cleanup, and misleading universal cookie-blocking claims
* [Fix] Cookie Consent Pro — 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
* [Tweak] Ajax Search — 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
* [Tweak] Ajax Search — Assets now load only where search renders, result interfaces use accessible keyboard and modal behavior, and customer content is built with safe DOM APIs
* [Fix] Ajax Search — Migrated legacy setting names into one canonical schema, repaired synonym editing and analytics period filtering, and bound click attribution to signed returned-product tokens
* [Tweak] Background processing — Stock notifications, subscription maintenance, account cleanup, and abandoned-cart cleanup now use bounded batches, backlog continuations, and overlap protection
* [Tweak] Database performance — Shipment statistics, Wishlist pages, subscription maintenance, and Cart Recovery administration now use cached counts, pagination, bulk loading, and indexed queries
* [Tweak] Ajax Search — Search analytics now use bounded indexed storage with automatic retention cleanup and rate-limited public tracking
* [Tweak] Frontend performance — Disabled Currency Switcher installations no longer attach price filters, while Currency Switcher and Wishlist assets load only where their interfaces render
* [Tweak] Currency Switcher — Expanded currency configuration to a uniform 100-currency safety limit for all stores
* [Fix] Frontend assets — Repaired corrupted CSS variables and JavaScript identifiers that could break styling and interactions across multiple features
* [Fix] Scheduled tasks — Corrected cron hook mismatches for subscription renewals, back-in-stock notifications, and email verification cleanup
* [Fix] Subscriptions — Restored My Account actions and stopped the admin from requesting a missing subscription script
* [Fix] Subscriptions — Initial checkout now charges the correct trial, sign-up fee, selected plan, and prorated amount while preserving an immutable recurring agreement snapshot
* [Fix] Subscriptions — Renewal orders now preserve purchased quantity, currency, coupons, scheduled shipping, billing anchors, and complete related-order history without duplicate schedule advancement
* [Fix] Subscriptions — Corrected manual renewals, finite terms, trial notices, purchase limits, lifecycle transitions, customer account requirements, mixed carts, and saved email settings
* [Tweak] Subscriptions — Added indexed relationship storage, privacy export and erasure, server-side administration search, conditional assets, bounded maintenance, and Cart and Checkout Blocks compatibility
* [Tweak] Subscriptions — 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
* [Tweak] Subscriptions — 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
* [Fix] Subscriptions — 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
* [Fix] REST APIs — Hardened storefront routes with signed links, request limits, ownership checks, bounded inputs, and catalogue visibility rules
* [Fix] Feature settings — Strengthened validation and sanitization for Ajax Search, Back in Stock, Currency Switcher, GDPR, Registration Forms, and Wishlist settings
* [Fix] Free and Pro compatibility — Moved premium Quantity Limits and variable Product Bundle request handlers to Pro while preserving fully functional Free behavior
* [Fix] Wishlist — Bulk cart additions now accept only products from the visitor's wishlist, enforce a safe batch size, and respect WooCommerce validation
* [Fix] Cart Recovery — Guest email capture now verifies the active WooCommerce session and limits repeated requests
* [Fix] Cart Recovery — Recovery links now restore variations and supported cart-item data, while conversions and revenue are credited only after the exact attributed order is paid
* [Tweak] Cart Recovery — Added indexed email scheduling, bounded backlog processing, durable opt-outs, automatic stale-cart cleanup, and paginated privacy exports and erasure
* [Fix] Added To Cart Popup — Popup responses no longer expose unpublished or catalogue-hidden products
* [Tweak] Added To Cart Popup — 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
* [Fix] Added To Cart Popup — Restored the dashboard live-preview stylesheet, removed the Loaded and Loading controls, and kept its markup, settings, and responsive behavior aligned with the storefront
* [Fix] Storefront branding — Standardized Swift Commerce defaults on #00226b and safely migrated exact retired brand colors without changing merchant-selected colors
* [Fix] Currency Switcher — Currency changes now verify feature state and use bounded, secure browser cookie settings

= 1.4.20 =
* [Tweak] WordPress 7.0 compatibility - Updated tested compatibility for WordPress 7.0 "Armstrong"
* [Tweak] Registration Form - Detects enabled registration CAPTCHA and exposes it as a movable system field in the field editor
* [Tweak] Registration Form - Add Field dialog now marks Pro-only field types with the crown indicator
* [Tweak] Registration Form - Added Quick Add Fields and simplified Add Field cards for faster field creation
* [Tweak] Registration Form - New custom field keys now use readable names with numbered duplicates
* [Tweak] Registration Form - Field dragging now keeps a solid card preview with smoother reordering
* [Tweak] Registration Form - Custom fields now follow the global form context settings instead of per-field display context controls
* [Tweak] Checkout Field Editor - Premium field types now show the crown indicator in the Add Field dialog (Pro)
* [Tweak] Subscriptions - Overview now includes the subscriptions table and Pro-only sections show crown indicators (Pro)
* [Tweak] Product Addons - Removed hardcoded emoji title prefixes and the Dashboard emoji display control
* [Tweak] Product Addons - Added bottom spacing below the Add field control in the WooCommerce Product Data panel
* [Tweak] Added To Cart Popup - Product rows now render without an extra padded box by default
* [Tweak] Added To Cart Popup - Related products now match the selected product count and include spacing controls for the related grid and action buttons (Pro)
* [Tweak] Added To Cart Popup - Frontend popup now uses a smoother delayed loading state with skeleton placeholders instead of showing empty content
* [Tweak] Added To Cart Popup - Improved action hierarchy, focus handling, keyboard navigation, reduced-motion support, and live preview loading states
* [Tweak] Cookie Consent - Privacy Policy Link now supports choosing an existing WordPress page or entering a custom URL
* [Tweak] Cookie Consent - Removed redundant guidance cards from the Integrations and Advanced tabs
* [Fix] Added To Cart Popup - Close button now keeps a consistent square size across themes
* [Fix] Registration Form - File Upload fields now use per-field file type and size limits (Pro)
* [Fix] Cookie Consent - Pro integration defaults now merge correctly when loading Cookie Consent settings
* [Fix] Checkout Field Editor - Prevented debug warnings when WooCommerce or third-party checkout fields do not define a field type
* [Fix] Checkout Field Editor - Disabled state now fully stops checkout field changes, validation, saving, frontend assets, and upload handling
* [Fix] Feature toggles - Saved disabled values now act consistently as kill switches across feature runtime checks
* [Fix] Product edit screen - Product Bundles, Product Addons, and Quantity Limits panels now only appear when enabled

= 1.4.9 =
* [New Feature] reCAPTCHA — Client-side form blocking prevents submission until CAPTCHA is completed (v2 Checkbox)
* [Tweak] Dashboard — Cart Recovery now appears in the enabled features overview card
* [Tweak] WordPress Plugin Check (PCP) compliance — Proper escaping, sanitization, and phpcs annotations across all features
* [Fix] Pro compatibility — Added safety guards to prevent fatal errors when Pro classes are unavailable

= 1.4.8 =
* [New Feature] Product Addons — Color Swatch field type for visual product option selection (Pro)
* [New Feature] Wishlist — Multiple wishlists per user with create, rename, and delete support (Pro)
* [New Feature] Wishlist — Tabular front-end view for managing multiple wishlists (Pro)
* [New Feature] Wishlist — Enhanced analytics with detailed product and user statistics
* [New Feature] Cookie Consent — Consent-based script blocking with per-category integration support
* [New Feature] Registration Form — User role assignment based on form field data
* [New Feature] Registration Form — Email Customizer integration for welcome email templates
* [New Feature] Email Verification — Enable/disable switches for admin approval notification emails
* [Tweak] Shipment Tracking — Redesigned Appearance tab with full form customization and live preview
* [Tweak] Dashboard — Updated brand color scheme across all features
* [Fix] Subscriptions — Variable subscription products not saving correctly
* [Fix] Wishlist — Incorrect shortcode displayed in the Sharing tab
* [Fix] Registration Form — Edit dialog not opening automatically after adding a new field

= 1.4.4 =
* [New Feature] Product Addons — Conditional logic rules for showing/hiding addons based on other addon selections (Pro)
* [New Feature] Product Addons — Date and Time picker field types (Pro)
* [New Feature] Subscriptions — Buy Now option to skip cart and go directly to checkout (Pro)
* [New Feature] Cookie Consent — IAB TCF v2.2 framework with CMP stub, TC String encoder, and purpose-to-category mapping (Pro)
* [Tweak] Google Fonts — Centralized font loading across all features to eliminate duplicate requests
* [Tweak] Ajax Search — Analytics data now cached for improved dashboard performance
* [Fix] Cookie Consent — Banner reappearing after accepting or rejecting due to consent cookie not being read correctly
* [Fix] Subscriptions — Trial ending email now uses its own dedicated template instead of reusing the renewal reminder

= 1.4.3 =
* Fixed: Subscription My Account pages showing broken styling and incorrect background colors
* Fixed: Subscription list action buttons not aligned under the Actions column
* Fixed: Admin subscription detail page returning a permission error
* Fixed: Wishlist triggering "Cannot modify header information" warning in debug log
* Fixed: Cookie Consent banner width setting not applying on the frontend
* Fixed: Cookie Consent template grid displaying in two columns instead of three
* Improved: Input sanitization for Add to Cart Popup and Wishlist AJAX handlers
* Improved: WordPress Plugin Check compliance for coding standards across multiple features

= 1.4.2 =
* New: Added to Cart Popup — Custom heading text, product area background color, and button border radius controls
* New: Added to Cart Popup — Background and Animation customization sections (Pro)
* New: Wishlist — "Add All to Cart" bulk action on Wishlist page
* New: Wishlist — WhatsApp sharing and Copy Link sharing buttons
* New: Product Bundles — Background color customization and quantity alignment controls
* New: Product Bundles — Template action hooks for bundle item content and before add-to-cart button
* New: Ajax Search — Field weight controls for title, content, excerpt, and SKU relevance (Pro)
* New: reCAPTCHA/hCaptcha — Widget mode selector (visible/invisible) for hCaptcha
* New: Quantity Limits — Bulk category rule management with search, multi-select, and batch apply/clear
* Improved: Added to Cart Popup — Flyout and Solid Bar previews pin to edges with proper positioning
* Improved: Added to Cart Popup — Popup Buttons section moved to Settings tab with visibility controls
* Improved: Added to Cart Popup — NumberStepper uses stacked vertical layout for consistency
* Improved: Added to Cart Popup — Close Button section uses GlobalColorPicker
* Improved: Product Bundles — Templates section uses 3-column layout, Border Color moved into Product Styling
* Improved: Quantity Limits — Category rules save in a single bulk request instead of individual calls
* Fixed: Wishlist — Removed unused Emails tab and orphaned priceTracking/emailCampaigns settings
* Fixed: Wishlist page — Corrected double closing bracket typo in email share link

= 1.4.1 =
* Fix: Removed custom CSS insertion feature to comply with WordPress.org plugin guidelines
* Fix: Corrected plugin name format for WordPress.org directory compliance
* Fix: Removed invalid GitHub URL from changelog
* Fix: Included composer.json in SVN distribution for WordPress.org compliance

= 1.4.0 =
* New: Abandoned Cart Recovery — Automated email sequences with cart tracking, guest capture, and coupon incentives
* New: Conditional Logic for Checkout Field Editor — Show/hide fields based on cart contents, totals, and field values
* New: Quick Add Fields drag-and-drop redesign for Checkout Field Editor
* New: CSV Export for Abandoned Cart Recovery (Carts and Analytics tabs)
* Tweak: FeatureHeader upgrade button added consistently across all features
* Tweak: Brand color consistency across all UI elements
* Tweak: Subscription frontend styles now applied on shop and archive pages
* Tweak: Subscription price HTML uses proper CSS class selectors
* Tweak: Removed misleading placeholder image from Subscription admin preview
* Tweak: Removed unused LicensePage dead code
* Tweak: GitHub Actions deployment pipeline for WordPress.org SVN
* Fix: Subscription styling not applied on shop/archive pages
* Fix: Subscription CSS selectors breaking with theme variations

= 1.3.0 =
* New: Global Styles — Centralized color palette and typography applied across all features
* New: Email Customizer — Standalone visual email editor with Google Fonts, product cards, and placeholder tags
* New: Back in Stock and Email Verification now use the full Email Customizer
* New: Cloudflare Turnstile and hCaptcha support (Pro) — Three CAPTCHA providers
* Improved: Unified Customize Design tab across all features with template presets
* Improved: Ajax Search, Currency Switcher, Wishlist, Cookie Consent, and Back in Stock all redesigned with template-based styling
* Improved: Email Customizer typography with Google Fonts search and font weight selector
* Fixed: PHP 8.1+ compatibility for strpos() deprecation warnings
* Fixed: Frontend CSS dependency registration for Pro plugin compatibility
* Fixed: Back in Stock email product card respects display toggles

= 1.2.7 =
* Improved: Full WordPress.org compliance — proper prefixes, no trialware patterns
* Improved: Brand consistency across all feature pages
* New: Email Customizer Google Fonts integration with 30 popular web fonts
* Fixed: Freemius license page error and license enforcement

= 1.2.6 =
* Improved: Freemius SDK managed via Composer for WordPress.org compliance

== Upgrade Notice ==

= 1.4.1 =
Hotfix: WordPress.org compliance — removed custom CSS insertion, corrected plugin name, and distribution fixes.

= 1.4.0 =
Major update: Abandoned Cart Recovery with automated email sequences, Conditional Logic for Checkout Fields, and Quick Add Fields drag-and-drop redesign.

= 1.3.0 =
Major update: Global Styles system, standalone Email Customizer, template presets for all features, and Cloudflare Turnstile / hCaptcha support.

= 1.0.0 =
Initial release — replace 15+ WooCommerce plugins with one unified toolkit.

== External Services ==

This plugin connects to third-party services when their respective features are enabled. No data is sent unless you activate the feature.

= Google reCAPTCHA =

Protects selected login, registration, password reset, comment, and WooCommerce forms from automated abuse.

**What data is sent:** The configured public site key, the visitor's IP address, browser/device information collected by Google's script, the generated response token, and a fixed action name for reCAPTCHA v3.

**When data is sent:** Google's script is loaded only on a page containing a protected form. The response token and visitor IP are sent to Google's verification API when that form is submitted. The feature is disabled by default and requires the store administrator to provide Google API keys.

**Service provider:** Google LLC
* [Terms of Service](https://policies.google.com/terms) | [Privacy Policy](https://policies.google.com/privacy)

= Google Fonts =

Optional typography for supported Swift Commerce features. Font files are loaded from Google's servers when a Google Font is selected by the store administrator.
* [Privacy FAQ](https://developers.google.com/fonts/faq/privacy)

= ip-api.com =

Optional geolocation for Currency Switcher auto-detection. Sends visitor IP address. Result cached per session.
* [Terms & Privacy](https://ip-api.com/docs/legal)

= ExchangeRate-API =

Fetches real-time currency exchange rates. Only the base currency code is sent. Rates are cached.
* [Terms of Use](https://www.exchangerate-api.com/terms)

= Shipping Carriers (Pro) =

Tracking links redirect customers to carrier websites (FedEx, UPS, DHL, USPS, Royal Mail, etc.) with the tracking number in the URL. No data is sent from your server.
* [FedEx Privacy](https://www.fedex.com/en-us/privacy-policy.html) | [UPS Privacy](https://www.ups.com/us/en/support/shipping-support/legal-terms-conditions/privacy-notice.page) | [DHL Privacy](https://www.dhl.com/global-en/home/footer/privacy-notice.html) | [USPS Privacy](https://www.usps.com/privacypolicy)

= Freemius =

License management, plugin updates, and optional anonymous usage analytics.
* [Terms of Service](https://freemius.com/terms/) | [Privacy Policy](https://freemius.com/privacy/)

== Privacy Policy ==

Optional Pro CAPTCHA analytics are disabled by default. When enabled, they store a one-way client IP fingerprint, provider, protected form location, result, failure code, score where available, and timestamp for the administrator-selected retention period. Raw IP addresses and browser user-agent strings are not stored in CAPTCHA analytics.

Swift Commerce stores data locally on your server: wishlist product IDs (database for users, cookies for guests), back-in-stock email subscriptions, pending email-verification records and verification status, pseudonymous cookie consent records when Pro logging is enabled, CAPTCHA settings, aggregate Ajax Search terms and click counts, and Cart Recovery records when those features are enabled. Verification records contain the user ID, email address, a one-way token hash, creation and expiry times, verification type, and resend count; they are removed after verification or through the WordPress erasure tool. Consent records contain a one-way IP hash, timestamp, policy version, and category choices; browser user-agent strings are not stored. Cart Recovery records can include a WooCommerce session identifier, customer email, cart products, quantities, totals, currency, email delivery/open/click timestamps, recovery attribution, and a one-way email hash used to honor opt-outs. Cart records follow the retention period configured by the store administrator; opt-out hashes are retained so customers are not contacted again. WordPress privacy export and erasure tools support these records. Search analytics are retained for up to 365 days by default and can be cleared or exported by a store administrator. External services are contacted only when their features are enabled — see "External Services" above for details.

For more information, see our [Privacy Policy](https://swiftcommerce.io/privacy-policy/).
