Skip to content

Changelog

  • Add: Setup wizard — 3-step onboarding (Connect Store, Connect Stripe, Enable)
  • Add: Custom domain support with AJAX-based provisioning and status checking
  • Add: Checkout layout selector (minimal, split, express templates)
  • Add: Store policies URLs (returns, shipping, privacy) shown in checkout policies bar
  • Add: swft_session_extensions data written to WooCommerce order as _swft_ext_{key} meta fields
  • Add: Customer address lookup — returning customers’ addresses pre-filled from WooCommerce via REST API
  • Add: Order bump support (/sessions/:id/apply-bumps endpoint integration)
  • Fix: PaymentIntent reuse on retry (Stripe best practice — prevents duplicate charges)
  • Add: Stripe webhook handling for charge.refunded — marks WooCommerce order as refunded automatically
  • Add: Order confirmation email sent after successful payment (Resend API)
  • Fix: Mixed-currency order sync edge case
  • Add: 3DS redirect return handling — customers redirected back from bank auth land on payment step
  • Fix: Stripe Elements appearance tokens aligned with dark/light theme CSS variables
  • Add: Express checkout (Apple Pay, Google Pay) via Stripe Payment Request Button
  • Add: Template system (minimal, split, express) — TemplateWrapper component
  • Add: swftcheckout:ready, swftcheckout:details-complete, swftcheckout:payment-complete CustomEvents
  • Add: window.SwftCheckout API — addOrderRow, addCustomField, getExtension, on, off
  • Add: SwftOrderRow and SwftCustomField types with full TypeScript definitions
  • Add: Server-side tracking — AddPaymentInfo and Purchase events for Meta CAPI, GA4, TikTok Events API
  • Fix: Tracking events fire-and-forget — never blocks payment response
  • Add: Stripe Connect — OAuth flow, 2% platform fee via application_fee_amount, connection status in admin
  • Fix: PHP 7.4 compatibility — replaced str_contains() with strpos()
  • Fix: wp_safe_redirect() with allowed_redirect_hosts filter for checkout.swft.co.uk
  • Fix: $wpdb->prepare() for deactivation transient cleanup
  • Fix: REQUEST_URI sanitized with esc_url_raw() + parse_url() in debug output
  • Fix: API key masked more aggressively in debug logs
  • Fix: Text domain corrected to swft-checkout
  • Fix: WC()->cart existence check before accessing cart methods
  • Fix: Cron cleanup on deactivation
  • Fix: Deactivation now clears debug and fallback logs
  • Add: uninstall.php removes all plugin options cleanly
  • Add: Privacy policy content disclosure for external API usage
  • Add: Version tracking via swft_db_version option
  • Add: Fieldset/legend structure for tracking pixel fields (accessibility)
  • Add: Tested up to WordPress 6.7
  • Add: Meta CAPI, GA4, and TikTok server-side tracking settings in admin
  • Fix: Settings page moved to Settings → Swft Checkout (no WooCommerce JS dependency)
  • Add: Admin bar indicator — green “Swft Active” / grey “Swft Off”
  • Add: WooCommerce REST API credential fields for order sync
  • Add: Automatic credential sync to Swft API on settings save
  • Add: WC credentials status display in admin panel
  • Fix: Simple product attributes sent as {} (JSON object) not [] (array) — Zod validation passes
  • Fix: Settings page rewritten using WordPress native Settings API — eliminates JS save issues
  • Add: Admin bar indicator with link to settings
  • Add: Settings page at Settings → Swft Checkout
  • Add: Debug logging toggle with live log viewer in admin
  • Add: Status panel showing enabled state, API key, version
  • Fix: Increased API timeout to 10 seconds
  • Fix: swft_enabled guard strictly checks for "yes" value
  • Fix: Use Railway direct URL while api.swft.co.uk custom domain is configured
  • Add: HPOS (High-Performance Order Storage) compatibility declaration
  • Initial release: cart serialisation, session creation, checkout redirect, transient pre-caching

  • Initial release: 18 modules, 8 themes, window.SwftCart public API, PHP filter system