GT Extensions for FluentCart 2.0.0 replaces the old per-variation currency label with a complete multi-currency checkout system.
Read full notes7 changes
Highlights:
Multi-currency checkout requires FluentCart 1.5.5 or newer. Version 2.0.0 is designed for two-decimal currencies; test zero-decimal currencies separately before production use.
One authoritative currency per cart, order, transaction, and subscription.
Exact per-variation price books with manual or Frankfurter exchange-rate fallback.
Currency-to-payment-gateway routing with preferred gateways and server-side validation.
Server-side cart repricing for items, fixed coupons, shipping, fees, and signup amounts.
Storefront currency selector and [gtfc_currency_selector] shortcode.
FluentCart product-editor controls for exact local prices.
Redesigned responsive settings, diagnostics, rate markup, rounding, and missing-price behavior.
Added automatic compatibility detection and JavaScript exclusions for Independent Analytics, Burst Statistics, Koko Analytics, Matomo Analytics, WP Statistics, Site Kit by Google, MonsterInsights, ExactMetrics, and PixelYourSite.
Treated an empty or whitespace-only Authorization server variable as absent so compatible hosts can still cache anonymous requests, while preserving the cache bypass for real credentials.
Read full notes7 changes
Fixed
Treated an empty or whitespace-only Authorization server variable as absent so compatible hosts can still cache anonymous requests, while preserving the cache bypass for real credentials.
Normalized panel, field, action, report, and responsive spacing across the settings interface and removed typographic shifts from active navigation states.
Added
Added a separate origin-pull CDN module that rewrites same-site static URLs to an HTTPS CDN base only for explicitly selected file extensions; third-party URLs, HTML/API routes, data URLs, and unselected types remain untouched.
Added cache invalidation when CDN settings change, plus controls for images, styles, scripts, fonts, media, and downloadable files.
Added direct links to Cloudflare's official scoped-token, Global API Key, and Zone ID documentation next to the relevant fields.
Deferred the public Cache-Control header until after response validation, so a Set-Cookie, a non-200 status, or DONOTCACHEPAGE introduced during rendering can no longer instruct a shared or edge cache to store a private page.
Read full notes24 changes
Fixed
Deferred the public Cache-Control header until after response validation, so a Set-Cookie, a non-200 status, or DONOTCACHEPAGE introduced during rendering can no longer instruct a shared or edge cache to store a private page.
Stopped deselected scheduled database-cleanup tasks (and other list settings such as bypass paths) from being silently restored on save; list settings are now replaced wholesale instead of merged index by index.
Fixed commerce bypass-path matching so the canonical /checkout on no-trailing-slash permalink sites is protected exactly like /checkout/, at both the origin and in the compiled Cloudflare edge rule.
Preserved inline <script> and JSON-LD content and removed the stray <?xml> node that the DOM-based CSS, font, and embed optimizers could ship — and cache — on every optimized page.
Corrected root-relative url(/…) rebasing in collected stylesheets so background and font references resolve against the site origin.
Accepted CSS.escape()d utility-class selectors (for example Tailwind md:flex, w-1/2) in CSS Training Mode so utility-class themes no longer publish empty safelists.
Canonicalized the Cloudflare managed-rule fingerprint so key-order differences in Cloudflare's response are no longer misread as drift and no longer trigger a redundant sync on every run.
Anchored the Cloudflare bypass query-parameter rule to a parameter boundary so a short parameter such as s no longer excludes unrelated parameters like utms.
Sent Vary: User-Agent when a separate mobile cache variant is active, and honored the "stale if error" duration in the emitted Cache-Control.
Bounded queue-table growth by pruning terminal jobs on the queue cron, and web-hardened the cache and log directories.
Stamped the advanced-cache drop-in with the plugin version and regenerated it automatically after an update.
Removed the non-functional "Cache logged-in users" control.
Invalidated affected post, homepage, and archive caches when comments are inserted through the front end, REST API, WP-CLI, or lower-level WordPress APIs, and when they are edited, moderated, or deleted.
Batched related URL purges into one edge notification and removed both desktop and mobile origin variants.
Prevented the deferred cache-safety header from rejecting the plugin's own otherwise cacheable response.
Renamed the WP-CLI target option to --page-url so it no longer collides with WP-CLI's reserved --url site selector.
Preserved explicit URL ports in diagnostic and purge cache keys so local Studio sites target the same artifact as live requests.
Applied the configured Cloudflare edge lifetime to the managed Cache Rule instead of always respecting the origin value.
Restricted sitemap warming to same-origin, cache-eligible URLs and bounded sitemap response sizes.
Discarded obsolete and foreign settings keys during merges, and removed non-functional Gravatar self-hosting and font-preload controls.
Added
Sitemap-driven cache warming: after a full purge, eligible URLs discovered from the WordPress sitemap are queued for background preloading (controlled by the new cache.preload toggle and bounded by cache.preload_max_urls), with a matching wp gt-performance cache warm command.
Accessible brief tooltips and clearer labels for cache lifetimes, exceptions, Cloudflare, optimization, Akismet, and Redis controls.
Fixed the Gutenberg Core Form block preview taking about 60 seconds to load on busy editor screens by replacing the generic WordPress server-render request with a focused Core Forms preview endpoint, a summary-only form selector, and shared…
Read full notes2 changes
Fixed
Fixed the Gutenberg Core Form block preview taking about 60 seconds to load on busy editor screens by replacing the generic WordPress server-render request with a focused Core Forms preview endpoint, a summary-only form selector, and shared request caching.
Core Forms 4.4.0 includes the complete feature set originally planned for roadmap versions 4.4 and 4.5.
Read full notes37 changes
Added
Added inline Stripe Payment Element checkout with server-owned product pricing, idempotent PaymentIntent creation, and signed webhook confirmation.
Added first-class Razorpay hosted checkout with payment-link, captured-payment, failure, cancellation, and refund handling.
Added one-click importers for Ninja Forms and Formidable Forms alongside the existing CF7, Gravity Forms, WPForms, and Fluent Forms migration tools.
Added WP-CLI commands for form import/export/listing, submission maintenance, product and plan administration, license reporting, order reporting, and expiry maintenance.
Added native actions for WooCommerce, Easy Digital Downloads, SureCart, WP Simple Pay, MemberPress, LearnDash, Paid Memberships Pro, Groundhogg, Jetpack CRM, WP-CRM System, and SureContact.
Added AutomatorWP, Uncanny Automator, and OttoKit triggers and actions with form and submission payloads.
Added signed inbound WhatsApp webhooks for Meta Cloud API and Twilio, including reply correlation and delivery-state history in submission conversations.
Added a multi-product licensing and lightweight ecommerce system with products, plans, orders, subscriptions, customer accounts, activation limits, refunds, renewals, and audited signed downloads.
Added a dedicated customer dashboard for orders, masked/revealable keys, product downloads, activated sites, and subscription controls.
Added free, Stripe, Razorpay, and renewal license-form templates with complete payment and fulfillment actions.
Added a default Sample Product with free, USD annual, and INR annual plans on new and upgraded sites.
Added native Bricks and Elementor integrations plus a per-form WCAG 2.2 audit and conservative one-click repairs.
Changed
The form editor now renders only the active tab instead of executing every tab's PHP, JavaScript, analytics, and REST requests on every page load.
The visual builder now boots from server-rendered form and schema data, removing its two blocking initial REST requests.
Builder saves now persist markup and schema atomically through one endpoint with a bounded timeout and a standard form-post fallback.
Tab-specific saves merge with existing form settings, preserving payment and action configuration when saving Fields, Messages, or other individual tabs.
Licensing actions are always visible under a dedicated Commerce & Licensing category instead of disappearing when the public activation API is disabled.
Product and plan slugs are generated automatically, normalized, and made unique; manually entered slugs remain supported.
Plan prices are entered in customer-facing major units such as 49.00 instead of minor units such as 4900.
Product packages use the WordPress Media Library picker and uploader instead of requiring an attachment ID.
The licensing backend now includes catalog statistics, quick-start guidance, direct Add plan/Add package links, and file names instead of raw attachment IDs.
The existing core-forms.com CF Licenser client, option keys, 32-character key format, six-hour heartbeat, and update hooks remain separate from and compatible with the new merchant licensing subsystem.
Fixed
Fixed the Fields builder remaining on an indefinite loading spinner when either initial REST request stalled.
Fixed inactive Analytics requests and form-builder assets loading on unrelated form tabs.
Fixed paid plans being fulfillable from a non-payment form or before verified payment confirmation.
Fixed payment fulfillment accepting a mismatched paid amount or currency when validation is enabled.
Fixed free plans being incorrectly coupled to a payment requirement.
Fixed action-variable references showing a permanent Loading message when the Fields builder was not present.
Fixed stale admin asset caches by versioning the main admin stylesheet and licensing script from their file modification times while keeping the plugin version at 4.4.0.
Security
License fulfillment is idempotent per submission and product selection, preventing duplicate orders or keys during webhook retries.
Signed package links expire, verify the stored SHA-256 digest before streaming, and record downloads in an audit table.
Verified refunds disable issued licenses and cancel related subscriptions.
Inbound messaging and payment webhooks require provider signatures before they can change submission, payment, or fulfillment state.