Skip to content
- 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