=== IPS Cart&Checkout for WooCommerce ===

Tags: woocommerce, cart, sidecart, checkout, local-pickup
Contributors: schmitzp, ipsonorder
Requires at least: 6.8
Tested up to: 7.1
Requires PHP: 7.4
Requires Plugins: woocommerce
Stable tag: 1.3.25
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Add a WooCommerce sidecart and modern checkout so shoppers can review their cart, choose delivery and complete their order.

== Description ==

IPS Cart&Checkout for WooCommerce is a WooCommerce side cart and checkout plugin for shops that want a clearer path from adding a product to placing an order. It combines a slide-out cart, a responsive cart page, a modern checkout and a thank-you page.

Customers should be able to check their cart without losing their place in your shop. The sidecart lets them change quantities, remove items and continue shopping on the same page. The checkout organizes contact details, delivery choices, payment and order review in a clean layout for desktop and mobile.

The free plugin includes the complete cart and checkout flow, local pickup and basic cart rules. Enable the modules your shop needs. WooCommerce continues to manage products, cart totals, shipping, payments and orders.

Network activation is supported. Each site keeps its own settings, pickup locations and plugin tables. New sites are initialized when the plugin is network-active. Uninstall retains data unless deletion was explicitly enabled on that individual site.

= Documentation =

[Read the documentation](https://docs.ipsorder.com/ips-order-cart/) for setup, everyday use, troubleshooting and clearly marked Free and Pro guidance.

= What you can do with the free plugin =

* Let customers review and edit their cart in a slide-out sidecart without opening a separate cart page.
* Guide shoppers through a responsive checkout with contact details, payment and order review.
* Offer dedicated cart and thank-you pages that fit the same shopping flow.
* Provide supported payment methods and eligible express wallets through compatible WooCommerce payment plugins.
* Manage local pickup locations and let customers select an available pickup option.
* Apply basic cart rules to all products, selected products or product categories, without an edition-based rule limit.
* Enable cart and checkout modules individually, and use the built-in diagnostics to investigate checkout issues.

= Optional Pro features =

IPS Cart&Checkout Pro for WooCommerce adds Order Bumps, Checkout Gate, advanced cart conditions and optional Cart Recovery. It is a separate, standalone package that includes the free functionality. [Learn about Pro](https://ipsorder.com/plugins/plugin-cart-checkout/).

== Frequently Asked Questions ==

= What does this WooCommerce cart and checkout plugin do? =

It adds a slide-out sidecart, a cart page, a guided checkout and a thank-you page. Customers can edit their cart while browsing, then enter their details and review the order in a responsive checkout. WooCommerce remains responsible for cart calculations and order creation.

= Are the sidecart and checkout free? =

Yes. The free version includes the complete sidecart and checkout flow, cart and thank-you pages, supported payment integrations, local pickup and basic cart rules. Pro adds optional sales and recovery tools; it is not required to complete a purchase.

= Can I use the sidecart without replacing my checkout? =

Yes. The modules can be enabled individually. You can use the sidecart while keeping the native WooCommerce checkout, or enable the IPS checkout as part of the same flow.

= Does it work on mobile devices? =

The sidecart and checkout use responsive layouts for desktop and mobile screens. Test your shop's theme, payment methods and shipping options on the devices your customers use before going live.

= Which payment methods and express wallets are supported? =

The plugin includes integrations for supported Stripe, WooPayments, Mollie, PayPal and Amazon Pay configurations. The corresponding WooCommerce payment plugin and a configured provider account are required. Available methods and wallets depend on the provider, plugin version, currency, country, cart and customer's device. Not every WooCommerce gateway or payment mode is supported; check the payment coverage in the plugin and documentation.

= Can customers choose local pickup? =

Yes. The free local pickup module lets you manage pickup locations and offer eligible locations during checkout. The free edition does not impose a limit on the number of locations.

= What does Pro add? =

IPS Cart&Checkout Pro for WooCommerce adds Order Bumps, Checkout Gate, advanced cart conditions and optional Cart Recovery. Pro is a standalone package that includes the free functionality. Activate one edition at a time. Cart Recovery and reminder emails are not included in the free package.

= Can I run the IPS checkout together with CheckoutWC? =

The IPS checkout is its own checkout interface. CheckoutWC is not a supported checkout runtime. Use the checkout implementation appropriate for your shop and check payment compatibility before enabling it.

== Privacy and external services ==

Cart contents, checkout addresses, shipping choices and orders are handled by WooCommerce and stored in the shop database. The Sidecart shares the WooCommerce cart session and its cookies; it does not create a separate customer cart service. Pickup selections and instructions can be stored with the order.

Optional checkout tracing is disabled by default. When enabled, technical events (time, step, status, gateway/provider identifiers and sanitized context) are stored locally. Known address, contact, payment and authentication fields are redacted. The default buffer retains the latest 150 events; older entries are pruned as new events arrive. This is a count limit, not a timed deletion policy. Managers can clear the buffer under Diagnostics. IPS does not receive these traces automatically. WooCommerce controls retention of customer/order data independently.

Payment services require the corresponding WooCommerce payment plugin and a configured provider account. When an enabled, eligible payment method or express slot is rendered, its provider SDK may be loaded before a customer clicks the payment button. Loading remote scripts sends connection data such as the browser IP address and user agent to the provider. During payment or wallet shipping calculations, the integration may also send the amount, currency, order references, contact and address information, and payment tokens needed to complete the transaction. Hosted card fields transmit card details through the payment provider's SDK. Availability depends on the installed payment plugin, merchant settings, currency, country and cart.

* Stripe: loads Stripe.js from js.stripe.com for supported card, redirect and express flows. [Terms](https://stripe.com/legal/ssa), [Privacy](https://stripe.com/privacy).
* WooPayments: uses the configured WooPayments/Stripe services and Stripe.js for supported payment and wallet flows. [WooPayments policies](https://woocommerce.com/document/woopayments/our-policies/), [Privacy](https://automattic.com/privacy/).
* Mollie: loads Mollie.js from js.mollie.com for hosted card fields; other supported methods use the Mollie plugin's payment or wallet handoff. [Terms](https://www.mollie.com/gb/legal/user-agreement), [Privacy](https://www.mollie.com/legal/privacy).
* PayPal: supported PayPal plugins and Mollie PayPal Express load the configured PayPal SDK or redirect to PayPal for approval and payment. [Terms](https://www.paypal.com/us/legalhub/paypal/useragreement-full), [Privacy](https://www.paypal.com/us/legalhub/paypal/privacy-full).
* Amazon Pay: the configured Amazon Pay plugin supplies the regional SDK and checkout session used for wallet approval. [Agreements](https://pay.amazon.com/help/201754600), [Privacy](https://pay.amazon.com/help/201212490).

Apple Pay and Google Pay availability follows the selected payment provider and the customer's browser/device. Other WooCommerce gateways may redirect to their own service; their plugin documentation describes the applicable data handling. If a manager uses an externally hosted image or icon, the browser also contacts that image host. Review the services actually enabled in your shop when preparing your shop's privacy information.

This WordPress.org package contains no IPS update checks or license service integration. Plugin updates are provided through WordPress.org.

= Find Us =

https://ipsorder.com

== Source and Build Tools ==

Readable source, locked npm dependencies and build configuration are included in this ZIP. No private repository or paid plugin is needed to inspect or rebuild the free features.

* Frontend JavaScript and CSS in `ips-react/build/assets/` are built from `ips-react/src/` using `ips-react/vite.config.ts`. The entry is `src/entries/core.tsx`. This includes `AppSideCart.tsx`, `AppCartPage.tsx`, `AppThankyou.tsx`, `frontend/checkout-portal/components/form/CheckoutActionButton.tsx` and `frontend/shared/portalStyle.ts` under that source directory.
* Admin JavaScript and CSS in `ips-admin-react/build/assets/` are built from `ips-admin-react/src/` using `ips-admin-react/vite.config.ts`. The entries are `src/modules/cart/entries/core.tsx` and `src/modules/system-status/entry.tsx`; the shared API client is `src/wp-adapter/api/wpClient.ts`.
* JavaScript and CSS in `dist/frontend/` are built with the root `webpack.config.js` from `assets/js/` and `assets/css/`. In particular, `ips-compatibility-js.min.*.js` comes from `assets/js/compatibility/ips-front-compatibility-script.js`. The Bootstrap JavaScript entry comes from the locked `bootstrap` npm package; its bundled Popper dependency is covered in `THIRD-PARTY-NOTICES.txt`.
* Readable originals for the supplied minified Bootstrap styles are in `assets/css/bootstrap/`. Project-owned icon font files are in `fonts/` and `assets/css/fonts/` and use the plugin's GPL-2.0-or-later license.

Build in a separate working copy of the extracted plugin, using Node.js 22.14.0 and npm 10.9.2 (Node.js 22.12 or newer is required). From the plugin root run:

1. `npm ci --legacy-peer-deps`
2. `npm ci --prefix ips-react --legacy-peer-deps`
3. `npm ci --prefix ips-admin-react --legacy-peer-deps`
4. `npm run build`

The root build runs webpack for `dist/frontend/` and Vite for both React build directories. The respective `package-lock.json` files pin the tools and dependencies. npm downloads these build dependencies from the npm registry; `node_modules` is not distributed in the plugin ZIP. Vite, webpack, Babel, TypeScript and the CSS/minification plugins are development tools, not additional WordPress plugins.

Production releases build Core and Pro entries together and retain only the Core asset graph for this package. The included source builds Core alone, so generated chunk boundaries, filenames and hashes can differ from the distributed multi-entry build. The `.vite/manifest.json` files map the React outputs; `dist/frontend/manifest.json` maps the webpack outputs. `package-manifest.json` records the original distributed file checksums; a local rebuild does not update that release inventory.

Third-party component versions, upstream source links, copyright notices and complete license texts are in `THIRD-PARTY-NOTICES.txt`. The file distinguishes shared components from components shipped only in the IPS or Pro packages. React and ReactDOM are supplied by WordPress through script dependencies. Payment SDK loading is described under Privacy and external services above.

== Screenshots ==

1. Sidecart with quantity controls, cart totals and direct access to checkout.
2. Checkout with contact details, billing address and order summary on desktop.
3. Responsive checkout on a mobile screen.
4. Module overview for the free plugin, with individual controls for cart, checkout and local pickup.

== Changelog ==

= 1.3.25 - 2026-10-16 =
* Improve: Refine plugin presentation and documentation for clearer feature guidance.


= 1.3.24 - 2026-10-16 =
* Improve: Refine plugin presentation and documentation for clearer feature guidance.


= 1.3.23 - 2026-10-14 =
* Improve: Maintenance update for ongoing plugin reliability.


= 1.3.22 - 2026-10-05 =
* Improve: The admin interface keeps the displayed plugin state more consistent.


= 1.3.21 - 2026-10-01 =
* Fix (2026-10-05): Bind checkout login and payment-method handoff tokens to the customer session and intended action.
* Improve (2026-10-05): Standardize Cart-owned runtime names and migrate existing settings without overwriting saved values.
* Improve: Maintenance update for continued compatibility and reliable plugin updates.


= 1.3.20 - 2026-10-01 =
* Improve: Maintenance update for ongoing plugin reliability.


= 1.3.19 - 2026-10-01 =
* Improve: The admin interface keeps the displayed plugin state more consistent.


= 1.3.18 - 2026-10-01 =
* Fix: Isolate stored settings and pickup records with plugin-specific names while retaining existing configuration.
* Fix: Sanitize subscription messages and remove unused legacy files from release packages.
* Improve: Support network activation and site-specific lifecycle operations.
* Improve: Keep admin notice styling confined to Cart screens.


= 1.3.17 - 2026-09-27 =
* Improve: The admin interface keeps the displayed plugin state more consistent.


= 1.3.16 - 2026-09-27 =
* Improve: The admin interface keeps the displayed plugin state more consistent.


= 1.3.15 - 2026-09-27 =
* Improve: The admin interface keeps the displayed plugin state more consistent.


= 1.3.14 - 2026-09-27 =
* Improve: The admin interface keeps the displayed plugin state more consistent.


= 1.3.13 - 2026-09-27 =
* Improve: The admin interface keeps the displayed plugin state more consistent.


= 1.3.12 - 2026-09-27 =
* Standardize Cart-owned hooks and AJAX endpoints with the ipscmi_order_cart prefix.
* Reject malformed request values and preserve third-party filters after failed cart additions.
* Exclude retired Dashboard and checkout PHP components from release packages.
* Remove unused helper wrappers and retain existing stored settings and payment-provider contracts.

= 1.3.11 - 2026-09-27 =
* Improve: Maintenance update for ongoing plugin reliability.


= 1.3.10 - 2026-09-27 =
* Improve: The admin interface keeps the displayed plugin state more consistent.


= 1.3.9 - 2026-09-26 =
* Fix: Retire unused legacy form settings writes and use WordPress asset APIs for frontend runtime data and the express shell.
* Fix: Resolve WooPayments AJAX callbacks through WordPress and prepare Cart Gate metadata identifiers.
* Improve: Correct plugin licensing notices and WordPress.org package metadata.
* Improve: Document the project-owned icon font under the plugin license and remove generator metadata without changing its symbols.
* Improve: The admin interface keeps the displayed plugin state more consistent.


= 1.3.8 - 2026-09-26 =
* Improve: The admin interface keeps the displayed plugin state more consistent.


= 1.3.7 - 2026-09-20 =
* Fix (2026-09-24): Require authorized POST requests, a valid POST nonce and complete field structure for legacy settings saves.
* Fix (2026-09-24): Reject malformed standalone Amazon return session IDs while preserving valid session changes.
* Fix (2026-09-24): Preserve native quantity/coupon form submissions and save cart-page shipping choices through the existing Woo Store API client.
* Fix (2026-09-23): Prevent horizontal overflow on the Thank-you portal while retaining the desktop sticky order summary.
* Improve: Validate Sidecart quantities and stock, refresh expired session nonces safely, and use WooCommerce shipping rates for free-shipping progress.
* Improve: Keep pickup selections with orders and show saved pickup details on the thank-you page.
* Improve: Group checkout settings, add optional question-mark field help, and extend the admin sidebar background.
* Improve: Show the IPS module overview without edition badges.
* Remove: CheckoutWC compatibility settings, hooks and cart-history access. Existing saved settings and foreign data are retained.
* Improve: The admin interface keeps the displayed plugin state more consistent.


= 1.3.6 - 2026-09-13 =
* Improve: Maintenance update for ongoing plugin reliability.


= 1.3.5 - 2026-09-13 =
* Improve: Maintenance update for ongoing plugin reliability.


= 1.3.4 - 2026-09-12 =
* Improve: Maintenance update for ongoing plugin reliability.


= 1.3.3 - 2026-09-12 =
* Improve: Maintenance update for ongoing plugin reliability.


= 1.3.2 - 2026-09-12 =
* Improve: Maintenance update for ongoing plugin reliability.


= 1.3.1 - 2026-09-12 =
* Improve: Maintenance update for ongoing plugin reliability.


= 1.3.0 =
* Made all existing shop modules available without edition-based rule quotas.
* Improved inactive-module configuration and checkout status clarity.
* Reduced initial frontend loading through separate surface bundles.
* Consolidated order-bump settings behind canonical metadata while preserving non-destructive legacy reads and migration.
* Kept the historical unsupported order-bump modal location readable for compatibility while excluding it from selection, saves and storefront runtime.
* Added a fail-closed WooCommerce Germanized Store API legal-consent integration with native WooCommerce fallback for unsupported contexts.
* Standardized new customer-facing and administrative source copy as English-first and translatable.

= 1.2.9 =
* Current customer-readiness development baseline.

== Package ==

Complete free sidecart, portal checkout, payments, local pickup and basic Cart Gate conditions. No edition-based rule quota.
