=== BoxCart ===
Contributors: norwichwebsitedesign
Tags: click and collect, ordering, time slots, farm shop, bakery
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Click & collect ordering for WordPress with time slots and a modern admin. For farm shops, bakeries, butchers, and delis.

== Description ==

BoxCart is a standalone click & collect ordering plugin for WordPress. Give your customers a polished pickup-ordering experience with configurable time slots, a modern card-view storefront, customer accounts, and a built-in admin dashboard - all without WooCommerce.

**Built for:** farm shops, bakeries, butchers, delis, greengrocers, fishmongers, florists, coffee roasters, pizza shops, meal-prep kitchens, and any business where customers order ahead and collect.

= What you get in the free build =

* **Click & collect ordering** with configurable time slots on your pickup schedule.
* **One pickup location** with its own address, collection instructions, opening hours, and per-slot capacity.
* **Card-view storefront** with category filters, search, and mini-basket.
* **Customer accounts** with order history.
* **Admin order management** with a status lifecycle (pending, confirmed, ready, collected, cancelled).
* **Seven transactional email templates** (order confirmation, status updates, cancellations, modifications, customer messaging) with branding controls and a live preview editor. Plus three admin notifications.
* **Cash on collection** and **bank transfer** payment methods.
* **5 Gutenberg blocks and 5 shortcodes** for embedding BoxCart anywhere - products, basket, checkout, account, mini basket.
* **Developer-friendly** - 20 action hooks, 11 filter hooks, CSS custom properties throughout, zero external PHP dependencies.
* **Cache-resilient** - pages render as empty shells that hydrate via AJAX, with a bypass cookie for customer sessions. Compatible with Cloudflare, WP Rocket, LiteSpeed, and similar.
* **Translation-ready** with a `.pot` file included.
* **GDPR-aware** - self-hosted fonts, optional full data cleanup on uninstall.

= Why BoxCart? =

* **Standalone - no WooCommerce required.** A single, focused plugin with its own data model.
* **Time-slot ordering baked in.** Configure your schedule, slot length, and capacity. Customers see live availability.
* **Developer extensible** - documented hooks, filters, and CSS custom properties.
* **Not a stripped-down demo** - the free build is a complete, working click & collect store.

= Paid Pro upgrade (optional) =

A paid Pro build is available from [boxcart.dev](https://boxcart.dev) with additional features:

* Multiple pickup locations
* Stripe card payments (with Apple Pay, Google Pay, Link, Klarna, PayPal, Afterpay)
* Table-view storefront
* Customer favourites and one-click reorder
* Multi-quantity products (e.g. per-100g / per-kilo on one product)
* Two-way order messaging
* Customer-side order modification
* Holiday closures and per-date capacity overrides
* Printable pick lists & packing slips
* Sales reports
* CSV product import/export
* 195+ customisation settings

Pro is optional - the free build will continue to receive updates and is genuinely useful on its own.

= Live demo =

Three demo stores at [demo.boxcart.dev](https://demo.boxcart.dev) - a greengrocer, a bakery, and a butcher - each configured differently to show the range of what BoxCart can do.

= Documentation =

Full documentation at [docs.boxcart.dev](https://docs.boxcart.dev) covering every admin workflow and the developer API.

== Installation ==

1. In your WordPress admin, go to **Plugins &rarr; Add New**.
2. Search for **BoxCart**, then click **Install Now** and **Activate**.
3. Open **BoxCart &rarr; Settings** and work through the General tab to set currency, tax, and page assignments.
4. Create three pages - **Products**, **Basket**, and **Checkout** - and add the matching BoxCart shortcode or Gutenberg block to each. Optionally add a fourth **Account** page if you want customers to be able to sign in and view past orders (BoxCart works as guest-checkout-only without it). Assign them all in **BoxCart &rarr; Settings &rarr; General &rarr; Page Setup**.
5. Go to **BoxCart &rarr; Locations** and add your pickup location, opening hours, and time slots.
6. Add your products under **BoxCart &rarr; Products**.
7. Place a test order end-to-end to verify everything is wired up.

Full step-by-step walkthrough at [docs.boxcart.dev/getting-started](https://docs.boxcart.dev/getting-started.html).

== Frequently Asked Questions ==

= Do I need WooCommerce? =

No. BoxCart is fully standalone with its own products, orders, payments, and customer accounts. You can run it alongside WooCommerce if you want, but it does not depend on it.

= What payment methods are supported in the free build? =

Cash on collection and bank transfer. Stripe card payments (Cards, Apple Pay, Google Pay, Link, Klarna, PayPal, Afterpay) are available in the optional Pro upgrade.

= Can I run multiple collection locations? =

The free build is built around a single pickup location, which suits most farm shops, bakeries, and delis. The Pro upgrade adds multi-location management with a list view, per-location schedules, holiday closures, and per-date capacity overrides — useful if you run several sites or pop-ups.

= Does BoxCart work with caching plugins and Cloudflare? =

Yes. BoxCart uses a cache-resilient architecture - pages render as empty shells that hydrate via AJAX, plus a bypass cookie that most caching layers honour to skip full-page caching on customer sessions.

= Is it translation-ready? =

Yes. Text domain is `boxcart`. A `.pot` file is included at `languages/boxcart.pot`.

= Where can I get support? =

For the free build, use the [WordPress.org support forum](https://wordpress.org/support/plugin/boxcart/). For Pro customers, email us at hello@boxcart.dev.

= Does uninstalling remove all my data? =

Only if you opt in. **BoxCart &rarr; Settings &rarr; Misc** has a "Delete all BoxCart data on uninstall" checkbox. Off by default, so deactivating the plugin is safe and reversible.

= Can I customise the look and feel? =

Extensively. Settings cover colours, fonts, button styles, card layouts, sidecart behaviour, email branding, and more. Developers can also use CSS custom properties, 20 action hooks, and 11 filter hooks.

= Does BoxCart send any data to external services? =

BoxCart itself does not send shopper data anywhere. It uses the Freemius plugin framework to handle optional opt-in diagnostics and to deliver the paid Pro upgrade. See the "External Services" section below for full detail.

== External Services ==

This plugin uses the **Freemius** plugin framework (https://freemius.com/) for optional anonymous usage tracking, licence handling for the paid Pro upgrade, and update delivery for Pro customers. Freemius is a well-known WordPress plugin distribution platform and the integration is entirely standard.

**What data is sent, and when:**

* When you activate BoxCart, you are shown an opt-in prompt asking whether to share anonymous usage diagnostics. You can skip the prompt - the plugin works either way.
* If you opt in, Freemius receives: your site URL, admin email, WordPress version, PHP version, plugin version, activation/deactivation events, and non-personal environment data (e.g. active theme, locale). You can opt out at any time from **BoxCart &rarr; Account**.
* If you purchase the Pro upgrade, Freemius also handles your licence key, renewal state, and update delivery for the Pro build.
* BoxCart never sends your customers' data, your orders, your products, or the contents of your store to Freemius or anywhere else.

**Endpoints contacted:** `api.freemius.com`, `wp.freemius.com`.

**Freemius's own privacy policy and terms:**

* https://freemius.com/privacy/
* https://freemius.com/terms/

== Screenshots ==

1. Card-view storefront with category filters, search, and a push mini basket.
2. Sidecart with basket items, collection-slot prompt, and clear total.
3. Time-slot picker showing live availability on the customer's chosen day.
4. Customer account with order history.
5. Admin dashboard with today's orders, pending queue, and ready-for-collection.
6. Orders list with status tabs, date filter, and quick search.
7. Product editor - name, price, image, category, SKU, stock, and quantity type.
8. Pickup-location editor with opening hours, slot length, and capacity.
9. Gutenberg block inserter showing the five BoxCart blocks.

== Changelog ==

= 1.0.0 =

Initial public release.

* Click & collect ordering with configurable time slots.
* Pickup location with opening hours, slot capacity, and per-slot availability.
* Guest checkout by default - customers can place an order without creating an account, and view their order any time via a per-order magic link emailed to them.
* Optional customer accounts with order history. Sign-in, lost-password, and password-reset all use WordPress's native authentication flow, styled to match the storefront.
* Admin order management with a status lifecycle (pending, confirmed, ready, collected, cancelled).
* Cash on collection and bank transfer payment methods.
* Seven transactional email templates with branding controls and live preview.
* Card-view storefront with category filters, search, and mini basket.
* 5 Gutenberg blocks and 5 shortcodes.
* Cache-resilient architecture with AJAX hydration and bypass cookie.
* Developer API - 20 action hooks, 11 filter hooks, CSS custom properties.
* WordPress 6.0+ / PHP 7.4+.

== Upgrade Notice ==

= 1.0.0 =
Initial release.
