=== WebSync Checkout for Elementor ===
Contributors: websynctech
Tags: woocommerce, elementor, checkout, cart, thank you page
Requires at least: 6.0
Tested up to: 7.1
Stable tag: 1.1.0
Requires PHP: 7.4
License: GPLv3 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Build responsive WooCommerce menu cart, cart, checkout, and order confirmation experiences directly in Elementor.

== Description ==

WebSync Checkout for Elementor adds dedicated WooCommerce Menu Cart, Cart, Checkout, and Order Confirmation widgets to the Elementor editor. It lets store owners design the complete purchase journey visually while retaining standard WooCommerce cart, checkout, payment, shipping, order verification, and customer workflows.

Elementor Pro is not required. WooCommerce and the free Elementor plugin are required.

= Menu Cart widget =

* Header-friendly cart icon with live item count and optional subtotal
* Side Cart or Mini Cart Dropdown presentation
* Click or hover opening, with left or right placement
* Native WooCommerce product, variation, price, subtotal, remove, View Cart, and Checkout output
* Automatic updates through WooCommerce cart fragments
* Optional automatic opening after an AJAX add-to-cart action
* Keyboard Escape support, drawer focus management, and accessible labels
* Visibility and detailed styling controls for every main cart area
* An anonymized Elementor sample item that never changes the administrator's cart

= Checkout widget =

* One-column or two-column responsive layouts
* Optional sticky order summary with responsive offset controls
* Editable billing, shipping, additional information, order, coupon, terms, and purchase-button text
* Billing and shipping field labels, placeholders, and default values
* Coupon and additional-information visibility controls
* Section, typography, form, order-summary, button, and individual-area styling
* WooCommerce AJAX checkout refresh compatibility

= Cart widget =

* One-column or two-column responsive layouts
* Optional sticky cart totals with responsive offset controls
* Editable update-cart, coupon, shipping, checkout-button, and totals text
* Optional coupon form, continue-shopping button, and cross-sells
* Automatic AJAX quantity and totals updates
* Custom empty-cart Elementor template support
* Section, typography, form, order-summary, totals, button, and individual-area styling

= Order Confirmation widget =

* Styles the native WooCommerce order-received and Thank You experience
* Editable confirmation message, payment-detail labels, and section titles
* Visibility controls for payment details, order summary, downloads, and customer addresses
* Optional Continue Shopping and logged-in My Account actions
* Detailed styling for messages, payment details, sections, tables, addresses, and buttons
* An anonymized Elementor preview that never queries or stores a real customer order
* Preserves WooCommerce order-key checks, guest email verification, gateway instructions, downloads, and extension hooks

= Built for practical WooCommerce use =

* Uses WooCommerce hooks, nonces, cart fragments, totals, shipping, coupons, and checkout processing
* Loads widget assets only when the corresponding Elementor widget is used
* Includes responsive controls for desktop, tablet, and mobile layouts
* Keeps existing WebSync widget settings compatible when upgrading
* Includes a versioned, validated Core API for compatible free and Pro widget skins
* Places the WebSync WooCommerce widget group first when editing WooCommerce content
* Does not load frontend scripts, styles, fonts, or executable code from third-party services

== Installation ==

1. Install and activate WooCommerce and Elementor.
2. Upload the plugin to `/wp-content/plugins/websync-checkout-for-elementor`, or install it through **Plugins > Add New**.
3. Activate **WebSync Checkout for Elementor**.
4. Edit the WooCommerce Cart or Checkout page with Elementor.
5. Remove the existing Cart or Checkout block/shortcode if it would duplicate the page output.
6. Add the **WebSync Cart** widget to the Cart page.
7. Add both **WebSync Checkout** and **WebSync Order Confirmation** to the Checkout page. The Order Confirmation widget remains hidden during checkout and appears on WooCommerce's order-received endpoint.
8. Customize the widgets and test a complete order.
9. Confirm the Cart and Checkout pages are assigned under **WooCommerce > Settings > Advanced**.

The **WebSync Menu Cart** can be placed in any Elementor page, template, or header area supported by your theme.

Always test checkout changes with the payment and shipping methods used by your store before publishing.

== Frequently Asked Questions ==

= Does this plugin require Elementor Pro? =

No. It works with the free Elementor plugin. WooCommerce is also required.

= Does it replace WooCommerce payment or order processing? =

No. The widgets customize presentation and content while WooCommerce continues to process the cart, checkout, validation, shipping, taxes, coupons, payments, and orders.

= Where should I add the Order Confirmation widget? =

Add it to the same page as the WebSync Checkout widget. On normal checkout requests it produces no frontend output. After a successful order, it renders WooCommerce's verified order-received flow while the Checkout widget stays hidden. Existing Checkout-only pages retain the standard WooCommerce confirmation output for backward compatibility.

= Does the Order Confirmation editor preview show a real order? =

No. The Elementor editor uses fixed, anonymized sample data. On the frontend WooCommerce validates the order key, customer session, login, or guest email before any real order information is displayed.

= Is the Menu Cart a fast checkout? =

It is a quick-access mini cart, not a replacement checkout. Customers can review products, remove items, and continue to the Cart or Checkout page. WooCommerce remains responsible for cart changes and payment processing.

= Does the Menu Cart update after AJAX add to cart? =

Yes. It uses WooCommerce's native cart fragments and add-to-cart events to update the item count, subtotal, products, and buttons without reloading the page.

= Does it edit the WooCommerce Cart and Checkout Blocks? =

The widgets provide an Elementor-based cart and checkout experience using the standard WooCommerce PHP templates and hooks. They do not customize the internal controls of the Cart or Checkout Blocks.

= Will payment, shipping, and checkout-field extensions work? =

The plugin preserves standard WooCommerce hooks for compatibility. Because extensions can replace templates or checkout behavior, test the complete purchase flow on a staging site before using it in production.

= Can I hide the coupon form or additional information? =

Yes. Both widgets include relevant visibility controls in the Elementor Content tab.

= Can the cart update automatically? =

Yes. Enable **Update Cart Automatically** to refresh cart totals after quantity changes without a full page reload.

= Can I create a custom empty-cart design? =

Yes. Create and publish an Elementor template, then select it in the Cart widget's **Additional Options** section.

= Why is the widget preview empty in Elementor? =

Make sure WooCommerce has at least one published purchasable product. Also verify that Cart and Checkout pages are assigned in WooCommerce settings.

= What should I check before launching? =

Test product quantities, coupons, taxes, shipping calculations, account creation, validation messages, every enabled payment method, mobile layouts, and order confirmation on a staging site.

== External services ==

The plugin works without connecting to WebSync or another external service.

An optional deactivation survey is displayed when an authorized administrator deactivates the plugin. Data is sent only when the administrator explicitly clicks **Submit & Deactivate**. The survey sends the plugin name, plugin slug, plugin version, selected reason, and any comments entered to `https://api.websync.tech/`. It does not send the site URL, administrator email address, customer information, cart contents, or order data. Clicking **Skip & Deactivate** sends no survey data.

The survey is used to improve the plugin. See the [WebSync privacy policy](https://websync.tech/privacy-policy/).

== Privacy ==

The frontend Menu Cart, Cart, Checkout, and Order Confirmation widgets do not collect or transmit personal data beyond the normal processing performed by WooCommerce and the store's configured payment, shipping, analytics, and marketing extensions. Menu Cart and Order Confirmation editor previews use fixed sample information and do not query customer orders or modify the administrator's cart.

The optional deactivation survey is described in the External services section above.

== Changelog ==

= 1.1.0 =

* Added a Free Menu Cart widget with Side Cart and Dropdown modes, native WooCommerce mini-cart output, live fragments, AJAX add-to-cart opening, accessibility behavior, and detailed Elementor controls.
* Added an extension-ready Menu Cart skin API with validated assets and a permanent Free fallback.
* Added a Free Order Confirmation widget with native WooCommerce order verification, editable content, responsive styles, optional navigation actions, and an anonymized Elementor preview.
* Added a backward-compatible Order Confirmation skin API so future extensions can register isolated skins and assets without changing saved Free widget settings.
* Added the Multi-Step Checkout skin to the editor-only Pro preview selector.
* Added the Accordion Checkout skin to the editor-only Pro preview selector.
* Updated the Conversion Split preview artwork to match its one-page checkout structure without a false progress indicator.
* Added a safe editor-only Pro skin selector with an accessible Conversion Split preview and upgrade action.
* Added Elementor-style Checkout content controls for section text, fields, coupons, terms, and the purchase button.
* Added Elementor-style Cart content controls for layouts, editable text, alignment, sticky totals, automatic updates, and custom empty-cart templates.
* Added comprehensive Checkout and Cart style controls for sections, typography, forms, summaries, totals, buttons, and individual areas.
* Added automatic AJAX cart quantity and totals updates.
* Added conditional Elementor panel ordering that places WebSync WooCommerce widgets first on WooCommerce content.
* Added a versioned Core/Skin API with compatibility helpers and reliable extension bootstrap hooks for future Pro add-ons.
* Added backward-compatible Cart and Checkout skin registries with safe default fallback, validated per-skin asset dependencies, and control-registration hooks.
* Added scoped render-setting and before/after-render hooks so Pro features can safely enhance the Default skin without duplicating Core templates.
* Added consistent public widget and settings accessors to the Cart and Checkout base skin contracts.
* Added an extensible Checkout wrapper-class contract so child skins can reuse the complete Core rendering lifecycle.
* Added skin-aware Elementor control visibility so Default-only controls stay hidden for extension skins.
* Clarified the shared checkout terms and place-order control group for extension skins.
* Improved compatibility with existing saved widget settings and generated Elementor CSS.
* Improved cart and checkout preview initialization without leaving temporary products in the administrator's cart.
* Improved translations by using the plugin text domain consistently.
* Improved security with capability checks, nonces, input validation, sanitization, contextual escaping, and safer AJAX HTML handling.
* Removed automatic activation tracking and made deactivation feedback explicitly optional.
* Fixed WooCommerce order-attribution inputs creating empty editor layout space.
* Fixed Checkout-only pages treating the order-received endpoint as an empty cart instead of rendering WooCommerce's verified confirmation fallback.
* Fixed Elementor preview asset loading for settings-less widget type instances.
* Fixed repeated cart totals calculations, unsafe missing-setting access, and customer shipping-session mutation.
* Fixed Checkout filters and render hooks leaking into other WooCommerce output.
* Fixed dynamic purchase-button and terms text after WooCommerce AJAX refreshes.

= 1.0.4 =

* Improved deactivation feedback handling.

= 1.0.3 =

* Added optional deactivation feedback.

= 1.0.2 =

* Added the WooCommerce Cart widget, layout controls, coupon options, cross-sells, and responsive styling.

= 1.0.1 =

* Initial release with the WooCommerce Checkout widget.

== Upgrade Notice ==

= 1.1.0 =

Adds Menu Cart, Cart, Checkout, and Order Confirmation controls and improves WooCommerce compatibility. Test AJAX cart updates, checkout, and order confirmation on a staging site before deploying to production.

== Support ==

For support, visit https://websync.tech/contact/ and include your WordPress, WooCommerce, Elementor, and PHP versions together with any relevant error messages.
