=== WishlistGenius for WooCommerce ===
Contributors: wishlistgenius
Tags: wishlist, woocommerce, save for later, favorites
Requires at least: 7.0
Tested up to: 7.1
Requires PHP: 8.2
Stable tag: 0.3.26
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

A free WooCommerce wishlist plugin with guest saving, product variations, link sharing and a dashboard to view customers' saved products.

== Description ==

WishlistGenius helps WooCommerce shoppers save products for later, add private notes and share by link. Guests can save without signup.

Inspect customers' saved products in your WordPress dashboard, included in Free.

[Live Free and Pro demos](https://wishlistgenius.com/demo/) | [Documentation and PDF manual](https://wishlistgenius.com/docs/manual/) | [Free vs Pro](https://wishlistgenius.com/free-pro/) | [Support](https://wishlistgenius.com/support/)

= What is included in Free? =

* One wishlist per guest or account, with up to 1,000 saved selections.
* Save simple products and selected product variations; add items to the cart individually.
* Private notes and optional sharing by link. Shared views exclude notes and account details.
* Search, sorting, manual ordering and grid/list views for saved products.
* CSV export and print or save as PDF through the browser's print dialog.
* Wishlist, save-button and counter blocks and shortcodes, plus an Elementor widget.
* Button labels, icon, colours and placement; guided header/mobile wishlist links.
* Guided setup, customer-wishlist management and read-only saved-product inspection.
* Wishlist export and erasure, plus WordPress personal-data tools.

Free works locally without a publisher account, payment or time limit. Installation reporting and newsletter signup are optional.

= Try the live demos =

Explore real WordPress/WooCommerce stores: [Free shopper](https://plugins.shop/wishlistgenius-demo/?edition=free&task=shopper), [Free store owner](https://plugins.shop/wishlistgenius-demo/?edition=free&task=merchant), [Pro shopper](https://plugins.shop/wishlistgenius-demo/?edition=pro&task=shopper) or [Pro store owner](https://plugins.shop/wishlistgenius-demo/?edition=pro&task=merchant).

No signup or purchase; demos last up to 30 minutes. Switch between shopper and merchant views; Free/Pro stores are separate. Use fictional details. No payments or external email; messages appear locally.

= Optional Pro add-on =

The paid Pro add-on offers requested restock/price-drop alerts, reminders, campaigns, product reports, circular heart-only buttons and supported image overlays, multiple lists, wishlist quantities, bulk cart, cart save-for-later, public discovery, quotes and imports.

Sending needs merchant configuration and relevant customer permission. Saving or previewing never subscribes anyone. Normal WooCommerce cart quantities work in Free.

Free shows labelled, hideable Pro previews with fictional examples. Their working tools are in the add-on; previews never enable sending.

== Installation ==

Requires single-site WordPress 7.0+, WooCommerce 10.0+ and PHP 8.2+. Multisite is not supported. JavaScript is required to manage wishlists.

1. Activate WooCommerce, then WishlistGenius Free. Individual activation opens Setup & settings.
2. Choose/create the wishlist page and header/mobile access, then Save and continue.
3. Review optional sharing/email choices or Continue without sharing. Finish setup without changing choices preserves existing choices.
4. Test a save and cart action. Exit focus returns to WordPress; reopen setup in settings.
5. For Pro, install matching Pro 0.3.26 after Free; keep both active. Update Free first without uninstalling.

Bulk/CLI activation and updates do not redirect. Test your store on staging.

== Frequently Asked Questions ==

= Can guests save products without signup? =

Yes. A cookie reconnects the same browser to its guest wishlist.

= Can I see which products customers saved in Free? =

Yes. Open Customer wishlists > View products. The read-only viewer excludes private notes and identities. Pro performance reports are separate.

= How do I place a wishlist or save button on a page? =

Use the wishlist, button or counter blocks, the Elementor widget, or:

* `[wishlist_genius]` for the wishlist.
* `[wishlist_genius_button product_id="123"]` for a product button; replace 123 with its ID.
* `[wishlist_genius_counter]` for the saved-selection count.

= Which products are supported? =

Simple and variable products are supported. Add-on, bundle, booking and subscription options need adapters and testing. WooCommerce native wishlists remain separate; account navigation is configurable.

= Will uninstalling remove my wishlists? =

Data stays by default. Set `WG_DELETE_DATA_ON_UNINSTALL` to the literal boolean true before uninstalling Free to remove plugin data/settings, database-backed previews, generated coupons and scheduled work. Orders, products and pages remain. Removing Pro alone retains wishlists/quantities; Free wishlist purchases then add one unit. Explicit deletion clears local licence credentials; Disconnect first to release a remote seat. Cache-only previews/proofs expire separately; see the manual.

== Screenshots ==

1. A private shopper wishlist with saved products and individual-item cart actions.
2. Save a product, then use View wishlist or Undo in its confirmation.
3. Guided storefront setup with header and mobile wishlist access.
4. Customer wishlists in the administrator workspace.
5. Separate, optional installation-reporting and email choices, both unchecked.
6. Free shopper wishlist on a phone.
7. Read-only saved products in Customer wishlists, excluding private notes.

== Privacy ==

Local data: products/variations, quantities, notes, list names/sharing, account/guest IDs, activity, cart operations and saved-item purchase attribution. Matching account purchases suppress relevant notifications; unrelated order products are not copied. Staff access requires WooCommerce management permission.

The signed wgg_guest cookie defaults to 30 days (configurable 1-365). Cron removes expired guest data. Activity/jobs default to 90-day retention; cart records expire after one day. Account lists stay until deleted; purchase-suppression records until no matching selection remains. Orders follow store retention settings.

Lists start private. Link sharing excludes notes/account details. Pro public sharing/discovery and retained public links follow the store's directory setting. Export/erasure covers account data and purchase attribution. Explain retention and mail providers in your privacy policy.

Theme/focus choices stay in-browser. Tab/workflow preferences are local per admin/store; requested tasks expire in seven days with no recipient data or approvals. Local journey counts default off, expire in 90 days and are deleted when disabled. Export is manual; counts are never transmitted or claimed as paid conversions. Expired data is hidden pending cleanup. The overview does not track visits.

Review invitations are off pending listing verification. Eligibility keeps a first-save time, last day and capped activity count locally, without identity/transmission. If enabled: 30 days/three save days; review/postpone/dismiss without rewards or rating conditions. Dismissal retains only that choice.

== Optional external service ==

Setup offers two independent, unchecked, skippable choices after the storefront save. Change them in Privacy & email preferences. They do not authorize shopper mail, Pro licence connection or publisher update checks.

* [Service endpoint](https://wishlistgenius.com/newsletter-api/v1/plugin-welcome/)
* [Privacy policy](https://wishlistgenius.com/privacy/#plugin-welcome)
* [Service terms](https://wishlistgenius.com/terms/)

Installation sharing sends hostname, reported edition, plugin/WordPress/PHP versions and language, at most weekly via cron. It excludes URL paths/queries, shopper records and orders. Address changes pause reporting pending review. Reports do not prove ownership or count all installations.

Email signup sends the entered address and reported edition for tips, releases, articles and occasional Pro offers. A locally prefilled admin email is sent only on selecting/saving that choice; email-only signup sends no hostname. New signups need inbox confirmation and start with all topics/weekly articles; recipients can change topics or unsubscribe. Existing preferences remain. Purchase-history personalization/link tracking require separate choices. Edition does not prove purchase.

Requests use a random connection ID, protected credential and consent version. The service records consent/report times and receives the network address for security logging. No shopper data, orders, names, wishlist contents or plugin lists are sent.

Stopping a scope stops local reporting before remote withdrawal; failures are retryable. Stopping email/edition sharing cancels that connection's pending signup. Confirmed subscriptions require the email's preferences/unsubscribe link. Skipping creates no connection; deactivation stops reporting, not confirmed subscriptions.

Reports/connection records expire after 90 days without refresh; pseudonymous revocation records may remain that long. Pending emails expire after 48 hours; confirmed records within 730 days unless explicitly renewed. Consent/suppression history lasts 180 days. Cleanup, outages/backups affect deletion. Acceptance does not prove delivery/subscription.

Local choices support WordPress export/erasure for the supplied admin email. Stop domain-only connections in Privacy & email preferences. Local workflow measurements are separate and never transmitted.

== Changelog ==

= 0.3.26 =
* Guided header/mobile access in Free; live counts refresh after Save/Undo without creating passive guest lists.
* Keep erased owner records deleted during REST response permission checks.

[Earlier changes](https://wishlistgenius.com/changelog/)
