=== WPSwings Wishlist for WooCommerce ===
Contributors: wpswings
Donate link: https://wpswings.com/
Tags: wishlist, woocommerce, wish list, product wishlist, save for later
Requires at least: 6.4
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html


Let customers save products to multiple wishlists, share them, and receive price-drop and back-in-stock email alerts.

== Description ==

**WPSwings Wishlist for WooCommerce** adds an "Add to wishlist" button to your WooCommerce products. Customers can save products, organize them into multiple named wishlists, share a list through a public link, and receive an email when a saved product's price drops or it comes back in stock.

On activation the plugin creates a "My Wishlist" page containing the `[wpwishfw]` shortcode, where customers view and manage their lists. Store owners configure the button, the wishlist page, sharing, emails and alerts from **WPSwings Wishlist → Settings**, and can review wishlist activity under **WPSwings Wishlist → Dashboard** and **WPSwings Wishlist → Wishlists**.

= KEY FEATURES =

**🎯 Core Wishlist Functionality**

* **Multiple Wishlists** - Create unlimited wishlists with custom names
* **Guest Wishlists** - Anonymous visitors can save items without an account
* **Persistent Wishlists** - Saved across devices and sessions for registered users
* **Quick Add/Remove** - One-click buttons everywhere
* **Bulk Actions** - Add all wishlist items to cart at once

**🔔 Smart Alerts**

* **Price Drop Notifications** - Email alerts when items go on sale
* **Back-in-Stock Alerts** - Get notified when products return
* **Ask for an Estimate** - Signed-in shoppers can email their list to the store for a quote
* **Customizable Templates** - Personalize email designs

**🔗 Social Sharing**

* **Public Wishlists** - Share via unique URLs
* **Privacy Controls** - Private or Public
* **Share Buttons** - Facebook, X, WhatsApp, and more
* **Gift Registry** - Share a public list for weddings, birthdays and other occasions

**📊 Analytics Dashboard**

* **Real-time Metrics** - Track wishlists, conversions, and alerts
* **Visual Charts** - Activity over 7d/30d/90d periods
* **Purchase Funnel** - See customer journey
* **Top Products** - Most wishlisted items

**🎨 Customization Options**

* **Button Styles** - Icon, icon+text, or text only
* **Custom Labels** - Match your brand voice
* **Table Columns** - Configure wishlist page display
* **Flexible Positioning** - Control button placement

**🎯 Marketing Tools**

* **Promotional Targeting** - Export customer emails by product
* **CSV Export** - Download customer lists
* **Customer Insights** - Understand purchase intent

**🔧 Compatibility**

* HPOS Compatible (High-Performance Order Storage)
* Gutenberg Blocks Included
* WPML/Polylang Compatible (including the custom button label)
* Cache-friendly: button state refreshes after the page loads
* GDPR: works with WordPress's personal data export and erase tools
* Read-only REST endpoint for a customer's own lists

= HOW TO CONFIGURE =

All settings are under **WPSwings Wishlist → Settings**, split into tabs:

* **General** - Remove items from the wishlist after they are added to the cart or purchased, turn price-drop and back-in-stock alerts on or off, and set how many days a guest wishlist is kept.
* **Button** - Choose the button style (icon, icon + text, or text), the button label, icon size, color and spacing, and where the button appears (product page and/or shop loop).
* **Wishlist Page** - Choose which table columns customers see on the wishlist page and whether to show the "Add all to cart" button.
* **Sharing** - Choose which share buttons (Facebook, X, WhatsApp, Pinterest, Telegram, Email) appear on public wishlists.
* **Emails** - Turn the price-drop, back-in-stock, ask-for-estimate and guest-merge emails on or off. Use each email's "Preview Template" link to edit its subject and content in WooCommerce → Settings → Emails.
* **Advanced** - Cache-safe button loading, GDPR export/erase support, debug logging, and whether to delete all plugin data when the plugin is deleted.

= HOW TO USE =

* **Customers** click the heart / "Add to wishlist" button on a product to save it. They manage their lists on the "My Wishlist" page, where they can create new lists, set a list to Private or Public, share a public list, add items to the cart, or request an estimate.
* **Store owners** see activity, conversions and the most-wishlisted products under **WPSwings Wishlist → Dashboard**, and browse every customer list under **WPSwings Wishlist → Wishlists**. From the Wishlists screen, use **Promotional targeting** to export (CSV) the customers who saved a specific product.
* **Shortcode and blocks** - Place the wishlist on any page with the `[wpwishfw]` shortcode, or use the "Add to Wishlist Button", "Wishlist Counter" and "Wishlist" blocks in the block editor.


== Installation ==

= AUTOMATIC INSTALLATION =

1. Log in to your WordPress admin panel
2. Go to Plugins → Add New
3. Search for "WPSwings Wishlist for WooCommerce"
4. Click Install Now and then Activate

= MANUAL INSTALLATION =

1. Download the plugin ZIP file
2. Go to Plugins → Add New → Upload Plugin
3. Choose the ZIP file and click Install Now
4. Activate the plugin

= AFTER ACTIVATION =

1. Make sure WooCommerce is installed and active.
2. A "My Wishlist" page with the `[wpwishfw]` shortcode is created automatically. You can add it to your site menu under Appearance → Menus (or the Site Editor).
3. Go to **WPSwings Wishlist → Settings** and review each tab (General, Button, Wishlist Page, Sharing, Emails, Advanced). The defaults work out of the box; click **Save Settings** after any change.
4. Visit a product in your store and click the wishlist button to confirm it works.
5. Track activity under **WPSwings Wishlist → Dashboard**.

== Frequently Asked Questions ==

= Does this work with any theme? =

Yes, WPSwings Wishlist works with any WooCommerce-compatible theme.

= Can guests use wishlists? =

Yes, guest wishlists are stored in browser sessions for 30 days. When they register, wishlists are merged with their account.

= How many wishlists can customers create? =

Unlimited! There are no restrictions.

= Do wishlists sync across devices? =

Yes, for logged-in customers. Guest wishlists are device-specific.

= Can I export customer data for marketing? =

Yes, use the Promotional Targeting feature to export customer emails by product.

= Is it GDPR compliant? =

Yes. Wishlist data is included in WordPress's Tools > Export Personal Data and Tools > Erase Personal Data (Settings > Advanced > GDPR tools).

= Does it work with variable products? =

Yes, customers can save specific variations including attributes.

= Can I customize email templates? =

Yes. Each email can be turned on or off in WPSwings Wishlist → Settings → Emails, and its subject, heading and content can be edited in WooCommerce → Settings → Emails.

= Is it compatible with caching plugins? =

Yes. With Settings > Advanced > Cache-safe hydration on (the default), each visitor's button state loads after the page, so cached pages from WP Rocket, W3 Total Cache and similar plugins show the right state.

= Does it work with WPML or Polylang? =

Yes, the plugin is translation-ready and fully compatible.

= Are any features paid? =

No. Every feature described on this page is included in this plugin.

== Screenshots ==

1. **Dashboard** - Real-time analytics showing wishlist activity, conversion rates, and trends
2. **Wishlists Management** - View all customer wishlists with privacy filters and search
3. **Settings - General** - Configure automatic removal and alert preferences
4. **Settings - Button** - Customize button style, labels, and positioning
5. **Settings - Wishlist Page** - Configure table columns and page layout
6. **Frontend - Add to Wishlist Button** - Clean button design on product pages
7. **Frontend - Wishlist Page** - Customer-facing wishlist interface with sharing options
8. **Promotional Targeting** - Export customer emails for targeted campaigns

== Changelog ==

= 1.0.0 - 2026-08-04 =
* Initial release
* Multiple wishlists per customer
* Guest wishlist support with session persistence
* Price drop email alerts
* Back-in-stock email notifications
* Public/private wishlist privacy controls
* Social sharing integration (Facebook, X, WhatsApp, Pinterest, Telegram, Email)
* Analytics dashboard with real-time metrics
* Promotional targeting with CSV export
* Gutenberg blocks (button, counter, page)
* Read-only REST endpoint (wps-wishlist/v1/wishlists) for the signed-in customer's lists
* HPOS compatibility
* WPML/Polylang multilingual support
* Customizable button styles (icon, icon+text, text)
* Configurable wishlist page columns
* Email template customization
* Bulk "add all to cart" functionality
* "Ask for an estimate" requests to the store admin
* GDPR personal data exporter and eraser
* Top wishlisted products tracking
* Purchase funnel analytics
* Interactive time-series charts (7d/30d/90d views)

== Upgrade Notice ==

= 1.0.0 =
Initial release of WPSwings Wishlist for WooCommerce. Install now to enable wishlist functionality on your store!

== Support ==

For support:

* Visit the [support forum](https://wordpress.org/support/plugin/wpswings-wishlist-for-woocommerce/)
* Contact us at [wpswings.com](https://wpswings.com/submit-query/)

== External services ==

This plugin can show social share buttons on a wishlist page so customers can share their wishlist. The store owner chooses which buttons appear under Wishlist > Settings > Sharing (Facebook, WhatsApp and Email are enabled by default).

Nothing is sent to these services automatically: no data leaves your site when the wishlist page loads, and the plugin makes no server-side requests to them. Each button is a plain link. Data is sent only when a visitor clicks a share button on a wishlist whose visibility is set to Public; the visitor's browser then opens the service's website or app with the data listed below in the URL. The service also receives whatever its own website normally collects from the visitor's browser (for example IP address and cookies), under its own terms.

= Facebook =

Used to share a wishlist on Facebook. When a visitor clicks the Facebook share button, the wishlist's share link is sent to https://www.facebook.com/sharer/sharer.php.
This service is provided by Meta Platforms, Inc.: [terms of service](https://www.facebook.com/terms.php), [privacy policy](https://www.facebook.com/privacy/policy/).

= X (formerly Twitter) =

Used to share a wishlist on X. When a visitor clicks the X share button, the wishlist's share link and the wishlist title are sent to https://twitter.com/intent/tweet.
This service is provided by X Corp.: [terms of service](https://x.com/en/tos), [privacy policy](https://x.com/en/privacy).

= WhatsApp =

Used to share a wishlist on WhatsApp. When a visitor clicks the WhatsApp share button, the wishlist title and its share link are sent to https://api.whatsapp.com/send.
This service is provided by WhatsApp LLC (Meta): [terms of service](https://www.whatsapp.com/legal/terms-of-service), [privacy policy](https://www.whatsapp.com/legal/privacy-policy).

= Pinterest =

Used to share a wishlist on Pinterest. When a visitor clicks the Pinterest share button, the wishlist's share link and the wishlist title are sent to https://pinterest.com/pin/create/button/.
This service is provided by Pinterest, Inc.: [terms of service](https://policy.pinterest.com/en/terms-of-service), [privacy policy](https://policy.pinterest.com/en/privacy-policy).

= Telegram =

Used to share a wishlist on Telegram. When a visitor clicks the Telegram share button, the wishlist's share link and the wishlist title are sent to https://t.me/share/url.
This service is provided by Telegram Messenger Inc.: [terms of service](https://telegram.org/tos), [privacy policy](https://telegram.org/privacy).

= Email =

The Email share button uses a mailto: link, which opens the visitor's own email program with the wishlist title and share link filled in. It does not contact any external service.

The share link contains a random token that identifies the wishlist; it contains no personal data. No email addresses, account details or wishlist contents are sent to any of these services.

== Privacy Policy ==

WPSwings Wishlist for WooCommerce uses cookies to store guest wishlist data for 30 days (configurable). For registered users, wishlist data is stored in the WordPress database. The plugin does not send data to external services except when a visitor clicks a social share button on a public wishlist; see the External services section above for what is sent and to whom.

Email addresses are collected only for logged-in customers who add items to wishlists, and are used solely for sending price drop and back-in-stock alerts. No data is shared with third parties.

Store administrators can export and delete customer wishlist data through the admin panel, ensuring GDPR compliance.
