=== SSF Chat Connect – Product Enquiry Basket ===
Contributors: ssfllc
Tags: enquiry basket, request a quote, woocommerce, whatsapp, contact button
Requires at least: 6.4
Tested up to: 7.1
Requires PHP: 8.1
Stable tag: 0.2.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Collect products, variations and quantities in a reviewed enquiry basket, then contact one WhatsApp business number. No account or licence key.

== Description ==

SSF Chat Connect helps catalogue visitors ask about several products in one conversation. Visitors add items, adjust quantities, review current product details, edit their message, then choose to open WhatsApp or copy the enquiry text.

This is an enquiry workflow, not an order, payment, stock reservation or confirmed quotation. One website uses one business destination. There is no licence-based visitor/enquiry quota, required SSF account, expiry or locked paid implementation in Free.

= Included in Free =

* One international WhatsApp or WhatsApp Business number.
* Multi-item basket with editable whole quantities and remove/clear actions.
* Optional WooCommerce simple products and variations, server-checked SKU, selected options and canonical links.
* Public WordPress page/post items through [ssf_chat_product id="123"], without WooCommerce.
* Message review/editing and copy fallback before explicit WhatsApp handoff.
* Optional weekly hours in the WordPress timezone, overnight intervals and away message during review.
* Floating button and [ssf_chat_connect] inline shortcode, label/colour/position and mobile/desktop visibility.
* Prepared message placeholders: {site_name}, {page_title}, {page_url}.
* Local assets, keyboard-accessible native dialog and reduced-motion button styles.

The basket and schedule start disabled on new installations and upgrades. Existing settings and shortcodes are retained. Without the basket, the original direct contact button continues to work.

= Limits and compatibility =

Up to 20 different item lines per enquiry and whole quantities from 1 to 9999 per line; public review requests are bounded to 16 KiB. These are technical bounds, not visitor or monthly licence quotas. Messages above 6000 characters or encoded links above 8000 characters must be shortened or copied manually. Basket messages are never silently truncated. Client/device link limits may be lower.

WooCommerce is optional. Simple and variable products are supported. Grouped, external, bundled, subscription-specific, custom product-option extensions and decimal quantities are not supported. Classic product templates get the button automatically. Block templates may need the shortcode in a supported Shortcode block; there is no dedicated block integration. Variable products require the standard WooCommerce variation form. Test your theme/extensions before live use.

Hidden catalogue products, private/unpublished items, disabled variations and all password-protected items are rejected. Enquiries do not confirm availability. No orders, email notifications, shared inbox, automatic WhatsApp sending, team routing or AI replies are included. Advanced team workflows belong in a separate add-on; the legacy Pro integration can replace the Free frontend.

One opening interval per day: an end time before the start continues overnight; equal start/end disables the day. This is a schedule, not live staff presence. Enquiries remain available when closed.

= Privacy and external service =

WordPress stores settings only. The optional basket keeps item IDs, variation options and quantities in this tab's site-scoped sessionStorage to survive navigation. Closing a tab normally clears its session, although browser restore features may restore it. Clear basket removes saved items. If storage is unavailable, the basket works in memory on the current page. No visitor tracking cookies or analytics are created by this plugin.

Item IDs, selected options and quantities are sent to this website's public read-only REST endpoint to check current public catalogue data. It makes no database writes, sends no email and makes no external calls. Server/hosting logs and other software remain under the site operator's control. Personal questions and edited messages stay in page memory; this plugin does not send them to WordPress or save them in browser storage.

Only clicking Open WhatsApp opens https://wa.me/ with the configured business number and reviewed text. WhatsApp/Meta receives those data. The visitor must press Send there; a click is not proof of sending, delivery or reading. Copy uses the local clipboard only after a visitor clicks Copy. If permission is denied, the text is selected for manual copying. Clipboard permission is not requested automatically.

WhatsApp terms: https://www.whatsapp.com/legal/terms-of-service
WhatsApp privacy: https://www.whatsapp.com/legal/privacy-policy

Public canonical WordPress links retain required plain-permalink routing, excluding visitor query parameters/fragments. Non-public and password-protected page context uses the site name/homepage, even after unlocking. Do not put confidential data in administrator templates.

No remote scripts, fonts, telemetry or account service is loaded. Assets and generic speech-bubble artwork are original/local. SSF Chat Connect is independent of WhatsApp/Meta and not endorsed by either.

Smart Solutions Framework (SSF) is a software brand operated by Murshid Farm Industries, Pakistan.
Product guide: https://ssfllc.com/ssf-chat-connect/
Support: https://ssfllc.com/support/

== Installation ==

1. Install and activate the ZIP through Plugins > Add New > Upload Plugin.
2. Open Settings > SSF Chat Connect. Enter/test an international number you control.
3. Enable the contact button. Enable the Free enquiry basket if wanted and save.
4. Classic WooCommerce simple/variable pages get an Add to enquiry basket button. For pages/posts or supported product placements, use [ssf_chat_product id="123"].
5. Optionally add [ssf_chat_connect label="Review enquiry"] in a Shortcode block.
6. Enable business hours, check Settings > General timezone, and select days/times/away text.

== Frequently Asked Questions ==

= Does one contact mean only one visitor? =

No. It means one business destination. Free has no customer or enquiry licence quota.

= Does Free require a paid WhatsApp API? =

No. It uses ordinary WhatsApp links. WhatsApp terms and connectivity costs still apply.

= What if an item becomes unavailable or the REST API is blocked? =

The basket is retained, review reports an error and no send link is prepared. Remove unavailable items or retry after REST access is restored. Prepared messages are a snapshot, not a stock confirmation. Editing items or your question invalidates the old review.

= What happens on deactivation or deletion? =

Deactivation keeps settings. WordPress deletion removes only the Free option, including basket/hours, on each multisite site in batches of 100. Pro records are retained. Browser storage is separate; use Clear basket or browser settings to clear it.

== Changelog ==

= 0.2.0 =
* Optional single-contact product enquiry basket with review, edit, copy and explicit WhatsApp handoff.
* Public-product checks, WooCommerce variations, SKU, quantities and canonical URLs.
* Page/post item shortcode, weekly/overnight hours and away message.
* Personal text stays in page memory; selections use site-scoped session storage.
* Preserve settings, direct mode, shortcode and Pro integration hooks.

= 0.1.1 =
* Protect non-public/password-protected context, canonical routing and literal preview placeholders.
* Remove Free settings in multisite batches and clarify Free features.

= 0.1.0 =
* Initial single-contact button, page messages, shortcode and preview.

== Upgrade Notice ==

= 0.2.0 =
Adds Free basket and business hours. Existing settings are retained; enable new features in Settings > SSF Chat Connect when ready.
