=== Notionsify ===
Contributors: notionsifydev
Tags: product configurator, product customization, personalization, product options, 3d
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
WC requires at least: 7.0
WC tested up to: 11.0

Let customers personalize products before they buy — colours, materials, text, images, and live 2D or 3D preview — on your WooCommerce product pages.

== Description ==

Notionsify turns a WooCommerce product page into a live configurator. Customers choose colours, materials, sizes and add-ons, or upload their own text and images, and see the result update before they add to cart. The selections travel through the cart to the order, so you receive exactly what was configured.

You build configurators in the Notionsify dashboard and link them to WooCommerce products. The plugin handles the storefront button, the cart and order data, and the connection between your store and your Notionsify account.

= Features =

* Live product customization on the product page
* 2D and 3D preview, including multi-view products
* Colour, material, and option pickers with per-option pricing
* Customer text and image uploads
* Customization details carried through cart, checkout, and the order
* Print-ready file generation from the Notionsify dashboard
* Works with any WooCommerce theme — no template editing

= External service =

This plugin is a client for Notionsify, a paid third-party service operated by Hummingbird International, LLC. The plugin will not function without a Notionsify account, and a free trial is available.

The plugin communicates with `https://notionsify.com` in the following cases:

* When you connect your store, it sends your store URL and the WooCommerce API credentials you approve, so your store can be linked to your Notionsify account.
* On a product page, it asks whether a configurator is linked to that product, sending the WooCommerce product ID and your store URL.
* When an order is placed, WooCommerce sends the order to Notionsify so the configured item can be produced.

No data is sent before you connect your store.

* Terms of Service: https://notionsify.com/terms
* Privacy Policy: https://notionsify.com/privacy-policy

== Installation ==

1. Install and activate the plugin.
2. Go to **Notionsify** in the WordPress admin menu.
3. Click **Connect Notionsify**. You are taken to your Notionsify dashboard and returned to WordPress.
4. WooCommerce asks you to approve API access. Click **Approve**.
5. Open your Notionsify dashboard and link a configurator to a WooCommerce product.

Your site must be served over HTTPS. WooCommerce requires it for the authorization step.

== Frequently Asked Questions ==

= Do I need a Notionsify account? =

Yes. The plugin connects your store to the Notionsify service, where configurators are built and orders are processed. A free trial is available.

= How does connecting work? =

Through the standard WooCommerce Auth Endpoint. You approve API access inside your own WordPress admin, and the keys are generated by WooCommerce rather than pasted by hand.

= Where do customer customizations end up? =

On the order line item. You see them in the order details in WooCommerce, and can download print-ready files from your Notionsify dashboard.

= Does it work with my theme? =

Yes. The configurator button is added through standard WooCommerce hooks, so no template files are edited.

= Is it compatible with High-Performance Order Storage? =

Yes. The plugin declares HPOS compatibility and writes order data through the WooCommerce CRUD API.

== Screenshots ==

1. The configurator button on a WooCommerce product page.
2. A customer configuring a product with live preview.
3. The plugin's connection screen in the WordPress admin.
4. Customization details shown on the cart page.
5. Customization details recorded on the completed order.

== Changelog ==

= 1.0.1 =
* Hardened the WooCommerce authorization callback: cryptographically secure one-time secret, constant-time verification, and a 15-minute expiry.

= 1.0.0 =
* Initial release.

== Upgrade Notice ==

= 1.0.1 =
Security hardening for the store authorization callback. Recommended for all users.

= 1.0.0 =
Initial release.
