=== BazaarKit – Multivendor Shipping for WooCommerce ===
Contributors: bazaarkit
Tags: dokan, woocommerce, multivendor, shipping, marketplace
Requires at least: 6.4
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 0.3.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Per-vendor flat-rate shipping for Dokan Lite — the feature Dokan makes you buy Pro for — plus a modular suite of marketplace add-ons.

== Description ==

**BazaarKit** is a modular marketplace toolkit for Dokan and WooCommerce. The free core adds the feature Dokan Lite vendors miss most: **per-vendor flat-rate shipping**. Each vendor sets their own shipping price per listing, and buyers pay one bundled rate per shop at checkout — no Dokan Pro required, no live-rate API keys, no monthly fee.

Built theme-agnostic: it works on any WordPress theme (Storefront, your own, anything) because it uses only documented WooCommerce and Dokan hooks — no theme markup is hardcoded.

= Free core (this plugin) =

* **Per-vendor flat-rate shipping** — vendors set a flat shipping price per listing from their Dokan vendor dashboard (or you set it per product in wp-admin).
* **Smart bundles** — when a buyer adds several items from the same shop, they pay the highest per-item rate (Depop-style), or the sum — your choice.
* **Free-shipping support** — set 0 for free shipping; it reads as "Free shipping" everywhere.
* **A store-wide default** for any listing a vendor hasn't priced yet.
* **Self-healing** — keeps WooCommerce treating carts as needing shipping so vendors never silently lose postage income.

= Add-ons (sold separately from bazaarkit.online — £5–7/$5–7 per month, cancel anytime) =

* International Shipping — vendors offer cross-border delivery with their own per-listing international rate (domestic shipping stays free in the core)
* Stripe Connect Escrow & Buyer Protection
* Buyer–Seller Messaging & Offers (£7/$7 — inbox plus make-an-offer price negotiation, which can be switched off)
* Disputes & Resolution
* Mutual Reviews & Ratings
* Notifications & Email Preferences

= Full custom build =

Want your whole marketplace built and customised for you? We do done-for-you builds priced on your brief — see the Add-ons screen inside the plugin.

== Installation ==

1. Install and activate **WooCommerce** and (recommended) **Dokan**.
2. Upload BazaarKit to `/wp-content/plugins/` and activate it, or install it from Plugins → Add New.
3. Vendors set a shipping price when adding/editing a product; buyers see the per-vendor rate at checkout. Defaults and bundle behaviour live under **BazaarKit → Settings**.

== Frequently Asked Questions ==

= Does this require Dokan Pro? =
No. It adds the per-vendor shipping that Dokan Lite leaves to Pro. It also works with plain WooCommerce (the product author is treated as the vendor).

= Does it work with my theme? =
Yes — it uses only documented WooCommerce/Dokan hooks and hardcodes no theme markup.

== External services ==

BazaarKit uses **Freemius** (Freemius, Inc.) to manage the optional paid add-ons — license validation, add-on discovery, and add-on delivery — and, only if you choose to opt in, to collect anonymous usage diagnostics that help improve the plugin.

What this means for the free core:

* **The per-vendor shipping feature works fully offline** — it needs no licence key and adds no charge.
* On activation you are shown a Freemius **opt-in screen. It is optional: you can click "Skip", and then no data about your site is sent.** Diagnostic data (your site URL, admin email, and WordPress/PHP/plugin versions) is transmitted to Freemius *only if you explicitly opt in*, and you can disconnect at any time from **BazaarKit → Account**.
* When you open the **BazaarKit → Add-ons** screen, the plugin asks the Freemius API for the current list of available add-ons so it can display them.
* That same screen also fetches **https://bazaarkit.online/api/founder.php** — a public JSON file saying whether the launch discount is still running and how many licences remain, so the price shown to you is the price the checkout will actually bill. It is a plain GET that sends **no data about your site**: no site URL, no email, no licence key, no identifier of any kind. The only thing our server necessarily sees is the IP address that any HTTP request reveals. The answer is cached for twelve hours, and if it cannot be reached the plugin simply shows the regular price. This service is operated by us; see https://bazaarkit.online/privacy.html.

Those two are the only network requests the free core initiates on its own, and both happen only on that screen.

This data is sent to Freemius. By opting in, or by using a paid add-on, you agree to Freemius's Terms of Service (https://freemius.com/terms/) and Privacy Policy (https://freemius.com/privacy/).

Each optional **paid add-on** is a separate plugin (installed on its own) that connects to Freemius to validate its licence and deliver its own updates; each discloses exactly what it sends, and when, in its own readme.

== Changelog ==

= 0.3.1 =
* The add-ons screen now shows the price the checkout will actually bill. The launch discount retires itself after 100 licences, and a price compiled into a release would have gone on promising it afterwards; the screen now reads the current state and falls back to the regular price if it cannot.
* Fixed: the add-ons screen could fail to load, because a link on it pointed at a constant that had been removed.
* New external request, disclosed in full under External services above: a public JSON file on bazaarkit.online, read only on the add-ons screen, sending nothing about your site.

= 0.3.0 =
* **Per-continent international shipping** (Intl Shipping add-on). A listing can charge a different price to Europe and to Oceania, instead of one flat worldwide figure — or leave a region blank and simply not post there. Existing listings keep their single price with nothing to migrate.
* **Holiday mode.** Sellers can pause their shop with one switch: their listings are hidden everywhere and can't be bought, without unpublishing anything. Turning it off restores everything exactly as it was.
* **Departed sellers no longer leave live listings behind.** WordPress reassigns a deleted user's posts to the site owner, leaving orders nobody can fulfil. Their listings are now moved to the trash instead — recoverable for 30 days, and order history is untouched.
* Fixed: an unset `author__not_in` could pick up an empty value and produce a query excluding author 0.

= 0.2.0 =
* Licence enforcement: paid add-ons must now be entitled, not merely installed (new `BazaarKit\Licence`, `ModuleState::is_usable()`).
* Admins can no longer switch on an unlicensed add-on, and are told when one is installed but inactive.

= 0.1.0 =
* Initial release. Free core: the module framework + Per-Vendor Shipping module.
