=== Visuaro - Product Designer for WooCommerce ===
Contributors: propluginslab, heyvicky, codewoogeek
Tags: product designer, customizer, personalization, print on demand, t-shirt designer
Requires at least: 6.4
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.4.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Let customers design t-shirts, mugs, posters, stickers and any custom product in the browser, then get print ready PDF, SVG and PNG files.

== Description ==

Visuaro turns any WooCommerce product into a customizable one. Customers add text, upload images, pick shapes, clipart and stickers, add QR codes and barcodes, and see their design on a realistic product mockup. When they order, Visuaro produces print ready files at the real size and resolution for your printer.

* **Live demo:** [Free version](https://demo.propluginslab.io/visuaro-product-designer-for-woocommerce-free) | [Pro version](https://demo.propluginslab.io/visuaro-product-designer-for-woocommerce)
* **Documentation:** [Free version](https://docs.propluginslab.io/visuaro-product-designer-for-woocommerce-free) | [Pro version](https://docs.propluginslab.io/visuaro-product-designer-for-woocommerce)
* **Support:** [propluginslab.io/support](https://propluginslab.io/support)

Everything is explained inside the plugin: every setting has a short description and a "Learn more" link to the built in Help and docs screen.

= For customers =

* Visuaro Studio: a full design workspace with menus, an options bar, select, pen, brush, shape, type and eyedropper tools, rulers and guides, layers with groups, history, a colour panel and keyboard shortcuts.
* Works on desktops, tablets and phones, with bottom sheets and large touch targets on small screens.
* Live preview on product mockups, with product colour options.
* Text with fonts, curves, outlines, shadows, glows, gradients and ready made styles.
* Image uploads (JPEG, PNG, WebP, GIF, SVG and more) with a live print quality (DPI) indicator, crop, shape masks, borders and adjustments.
* Shapes, a clipart library (with a 30 item starter pack, categories and search), vector stickers, QR codes and barcodes.
* Smart guides, grid snapping, align and distribute.
* A print check that explains problems in plain language and fixes most of them in one click.
* A live price that updates as the design changes.
* Designs saved to the account (guest designs move to the account on login) and editable again from the cart.

= For store owners =

* Templates from your own product photos with front, back and any other views, and print areas in real millimetres with bleed, safe zone and any shape (rectangle, ellipse, curved band, free form).
* A bundled mockup library covering apparel, headwear, drinkware, home, print, stickers, packaging, tech, bags, signage, gifts, pets, sport and engraving.
* Vector PDF print files with live text and embedded TrueType fonts, plus SVG and transparent PNG at the target DPI.
* Print method profiles (DTG, DTF, sublimation, screen print, vinyl, embroidery, UV, laser, CNC, offset, wide format, digital) that drive the print check.
* Design surcharges: a customization fee, and charges per print area, text, image, upload or square centimetre, each with free allowances, set store wide or per product.
* A clipart manager: bulk upload, categories and a starter pack.
* A production queue with previews, downloads, status tracking, bulk generation, regeneration and CSV export.
* A "Print files ready" WooCommerce email with signed download links, and optional attachments.
* Print files are only served through signed, expiring links; no private file has a guessable URL.
* Fonts: upload TrueType fonts or import Google Fonts once; they are then served from your own site.
* A REST API, WP-CLI commands (doctor, migrate, cache, template, render, purge) and actions and filters for developers.
* Audit log, personal data export and erasure, HPOS and Cart and Checkout block support.
* Works with WPML, Polylang and TranslatePress, the major page cache plugins, Elementor and Bricks.

= Security =

Uploads are checked by their content, never by file extension. SVG files are rebuilt from a strict allow list so scripts, external references and entity attacks are removed. Photo metadata (EXIF, GPS) is stripped. Every REST route has a permission check, every state changing request is nonce protected and rate limited, every database query is prepared, and every design and upload is checked against its owner.

= External services =

Visuaro works without any external service. One optional feature contacts a third party, only when you use it:

* **Google Fonts.** When you add Google Fonts under Visuaro, Fonts or Settings, Fonts, your server downloads the font files once from fonts.googleapis.com and fonts.gstatic.com. Only the font family names you entered are sent. The fonts are then served from your own site, so your visitors' browsers never contact Google. [Google APIs Terms of Service](https://developers.google.com/terms), [Google Privacy Policy](https://policies.google.com/privacy).

= Source code =

The designer and admin scripts are written in TypeScript. The readable sources are included in the plugin under assets/editor/src and assets/admin/src, together with package.json, tsconfig.json and vite.config.ts. To rebuild assets/dist run `npm ci` and `npm run build`.

= Pro version =

[Visuaro Pro](https://propluginslab.io/shop/plugins/pro-plugins/visuaro-product-designer-for-woocommerce/) is a separate plugin from ProPluginsLab for print shops that need more. It includes everything in this free plugin and adds:

* AI image tools: background removal, upscaling, vectorizing and colour ideas, with built in tools that need no API key, plus optional OpenAI, Anthropic, Stability and Replicate
* Live co-editing with comments, review and approval, and share links with view, comment or edit access
* ICC colour profiles with soft proofing, gamut warnings and CMYK PDF output intents
* Rule based pricing on any design measure, for example text count, colours or printed area
* DTF gang sheets, white underbase, highlight white and screen print colour separations
* Embroidery files (DST, PES, JEF, EXP) and cutter files (EPS, DXF)
* Print vendor dispatch to Printful, Printify, Gelato, Prodigi, email, SFTP or any webhook
* Design changes by the customer after ordering, within a time window you set
* Variable data printing from a CSV file, for names and numbers
* Cloud storage on Amazon S3, Cloudflare R2, Google Cloud Storage or Azure, webhooks and analytics events

This free plugin is complete on its own. Nothing here is limited, locked or time restricted, and installing Pro is never required for any feature listed above to work.

== More plugins from ProPluginsLab ==

Free on WordPress.org:

* [Back In Stock Notifier for WooCommerce](https://wordpress.org/plugins/back-in-stock-notifier-for-woocommerce/) - Waitlist and restock email alerts for out of stock products.
* [Recovero - Cart Recovery for WooCommerce](https://wordpress.org/plugins/recovero-cart-recovery-for-woocommerce/) - Recover abandoned carts with automated emails.
* [Anticipo - Pre-Orders for WooCommerce](https://wordpress.org/plugins/anticipo-pre-orders-for-woocommerce/) - Take pre-orders before a product launches.
* [Affireo - Affiliates for WooCommerce](https://wordpress.org/plugins/affireo-affiliates-for-woocommerce/) - Run an affiliate and referral program.
* [Storefold - Multivendor Marketplace for WooCommerce](https://wordpress.org/plugins/storefold-multivendor-for-woocommerce/) - Turn your store into a multivendor marketplace.
* [Dispatchio - Shipment Tracking for WooCommerce](https://wordpress.org/plugins/dispatchio-shipment-tracking-for-woocommerce/) - Add tracking numbers and shipment updates to orders.
* [Presentero - Gift Cards for WooCommerce](https://wordpress.org/plugins/presentero-gift-cards-for-woocommerce/) - Sell and redeem digital gift cards.
* [Kitero - Product Configurator for WooCommerce](https://wordpress.org/plugins/kitero-product-configurator-for-woocommerce/) - Build composite products and kits.
* [Plusero - Extra Fees for WooCommerce](https://wordpress.org/plugins/plusero-extra-fees-for-woocommerce/) - Add conditional checkout fees and surcharges.
* [Inputo - Name Your Price for WooCommerce](https://wordpress.org/plugins/inputo-name-your-price-for-woocommerce/) - Let customers choose what they pay.
* [Mercenza - B2B for WooCommerce](https://wordpress.org/plugins/mercenza-b2b-for-woocommerce/) - Sell wholesale with customer groups, wholesale prices and trade accounts.
* [Christmas Snow - Festive Snowfall Effect](https://wordpress.org/plugins/christmas-snow-festive-snowfall-effect/) - Add a lightweight snowfall effect to any site.

Pro plugins at [propluginslab.io](https://propluginslab.io/product-category/pro-plugins/):

* [Recovero Pro](https://propluginslab.io/shop/plugins/pro-plugins/recovero-cart-recovery-for-woocommerce/)
* [Anticipo Pro](https://propluginslab.io/shop/plugins/pro-plugins/anticipo-pre-orders-for-woocommerce/)
* [Affireo Pro](https://propluginslab.io/shop/plugins/pro-plugins/affireo-affiliates-for-woocommerce/)
* [Storefold Pro](https://propluginslab.io/shop/plugins/pro-plugins/storefold-multivendor-for-woocommerce/)
* [Dispatchio Pro](https://propluginslab.io/shop/plugins/pro-plugins/dispatchio-advanced-shipment-tracking-for-woocommerce/)
* [Presentero Pro](https://propluginslab.io/shop/plugins/pro-plugins/presentero-gift-cards-for-woocommerce/)
* [Kitero Pro](https://propluginslab.io/shop/plugins/pro-plugins/kitero-product-configurator-for-woocommerce/)
* [Plusero Pro](https://propluginslab.io/shop/plugins/pro-plugins/plusero-extra-fees-for-woocommerce/)
* [Inputo Pro](https://propluginslab.io/shop/plugins/pro-plugins/inputo-name-your-price-for-woocommerce/)
* [Mercenza Pro](https://propluginslab.io/shop/plugins/pro-plugins/mercenza-b2b-for-woocommerce/)
* [Visuaro Pro](https://propluginslab.io/shop/plugins/pro-plugins/visuaro-product-designer-for-woocommerce/)
* [Back In Stock Notifier Add-ons](https://propluginslab.io/product-category/back-in-stock-notifier/) - 26 add-ons incl. Mailchimp, Klaviyo, Twilio SMS, WPML, or all of them in the [Bundle](https://propluginslab.io/shop/add-ons/back-in-stock-notifier/bundle-add-ons/).

== Installation ==

1. Install the plugin from Plugins, Add New, or upload the ZIP. WooCommerce 8.5 or newer must be active.
2. Activate it.
3. Go to Visuaro, Templates and install a mockup from the bundled library, or create a template from your own product photo.
4. Edit a product, open the Designer tab, tick "Enable designer" and choose the template.
5. Optional: add fonts under Visuaro, Fonts so PDF print files embed live text.

Visuaro, Help and docs walks through every step and explains each setting.

== Frequently Asked Questions ==

= Can sizes be shown in inches or centimetres? =

Yes. Choose millimetres, centimetres or inches under Visuaro, Settings, General, Measurement unit. The designer, the product Designer tab and the template editor then show and accept sizes in that unit. Sizes are stored exactly, so you can switch at any time.

= Is Visuaro available in French? =

Yes. A French translation is included and used automatically when the site language is French, including French (Canada). Other languages can be added on translate.wordpress.org.

= Does it work with variable products? =

Yes. The Customize button appears on simple and variable products. The chosen variation is passed to the designer and stored with the design.

= Which print file formats are produced? =

PDF (vector, live text, embedded fonts, TrimBox and BleedBox), SVG (vector, for cutters and lasers) and PNG (transparent raster at the print area's target DPI). Choose them under Settings, Print output.

= When are print files created? =

Automatically when an order reaches one of the statuses chosen in Settings, Print output (Processing and Completed by default). You can also generate them for one or many orders from Visuaro, Production queue.

= Do I need Imagick? =

No. GD is enough. Imagick is used automatically when present for sharper previews of SVG uploads.

= Do product photos have to be transparent PNGs? =

No. A plain JPEG works. Product colours recolour the photo itself while keeping its shading, so one photo serves every colour.

= Are guest designs supported? =

Yes, through a signed cookie. When the guest logs in or registers, their designs and uploads move to the account.

= Does it send data to third parties? =

No, unless you add Google Fonts, which your server downloads once (see External services).

= Does it work with page caching? =

Yes. Pages that show a personal design are excluded from WP Rocket, LiteSpeed Cache, W3 Total Cache and WP Super Cache automatically, and other caches receive "do not cache" headers.

== Screenshots ==

1. Settings, General: button text and position, editor mode, theme, accent colour, guest designs and autosave, with a description and help link for every option.
2. Settings, Print output: file formats, default print method and DPI, and the order statuses that create print files.
3. Settings, Pricing: a customization fee and charges per print area, text, image, upload or square centimetre, with free allowances.
4. Settings, Uploads and privacy: upload size and rate limits, allowed image types checked by content, photo metadata removal and data retention.
5. Settings, Fonts: the fonts customers can use, and Google Fonts served from your own site.
6. Settings, Advanced: canvas renderer, page cache exclusions, admin IP allow list and data removal on uninstall.
7. Built in Help and docs, with search, explaining every screen and setting.
8. The Visuaro dashboard: designer opens, saved designs, add to cart rate and print file status for the last 30 days, a getting started list and background jobs.
9. Templates: the bundled mockup library and your own product photos with views and print areas.
10. Production queue with previews, print file downloads, status tracking and bulk generation.
11. The Designer tab on a product: template, print method, print area, customer tools and pricing overrides.
12. The Customize button on the product page.
13. Visuaro Studio opening on a product, with a start card for text, uploads, ready made templates and shapes.
14. Visuaro Studio with a design on the bundled t-shirt mockup, the product colours, the live price and the print ready check.
15. Visuaro, Status and tools: environment checks and maintenance tools.
16. The print check explaining problems in plain language, with one click fixes.

== Changelog ==

= 1.4.0 - 2026-10-24 =
* New: "Designer opens with" setting (Settings, General): open the designer on the start card or straight on the Templates panel. A design that already has content always opens as it is.
* New: "Built-in layouts" setting (Settings, General): hide the example layouts included with Visuaro. When there is nothing left to offer, the Templates panel and its buttons are hidden. Your own ready-made designs are available in Visuaro Pro.
* Tweak: The start card steps aside while the Templates panel is open, since it offers the same choices.

= 1.3.1 - 2026-10-23 =
* Fix: Shoppers can close the designer again. In the default modal mode, File, Close and the close button in the top bar were unavailable, so the designer could only be left by adding the product to the cart. In full page mode, Close now returns to the product page. If there are unsaved changes, the designer asks first.
* Fix: The "Start your design" card no longer spills outside its box with longer translations (such as French) or with themes that stop button text from wrapping.

= 1.3.0 - 2026-10-22 =
* New: Measurement unit setting (Settings, General): show and enter sizes in millimetres, centimetres or inches. It applies to the designer (print area size, rulers, object size and position, guides and the snapping grid), the product Designer tab and the template editor. Sizes are stored exactly, so switching never changes products, templates, designs or print files.
* New: French translation for France and Canada is included and used automatically on French sites. Other French variants use it too, and a WordPress.org language pack takes over once one exists.
* Security: The product Designer tab rejects sizes and prices that are not finite numbers and limits print area sides to 20 m and bleed and safe margins to 500 mm.
* Tweak: The safe margin print check message no longer shows a size in millimetres, matching the designer.

= 1.2.0 - 2026-10-17 =
* New: Clipart library screen (Visuaro, Clipart): bulk upload PNG, JPG, WebP and SVG files, name and categorise clipart, and move or remove it in bulk.
* New: A starter pack of 30 original vector shapes and icons in 6 categories, installed once and removable.
* New: The designer's Clipart panel groups clipart by category, with filters and a search box.
* New: Each design charge is shown as its own line under the item on the order screen, the customer's order pages and order emails.
* New: Customers can duplicate or delete saved designs from My Account, Saved designs.
* New: "Store default" print method and an empty Target DPI on the Designer tab use Settings, Print output, Default print method and Default DPI; new print areas start at the Default DPI.
* Fix: The designer did not fully enforce locked, non-removable, non-editable and maximum length layers (unlocking, inline editing, emptying text, grouping and alignment).
* Fix: The barcode preview always drew Code 128; it now matches the print files for EAN-13, UPC-A and Code 39, and the barcode properties have a type choice.
* Fix: Curved text now prints curved in PDF, PNG and SVG print files, along the same arc as the designer.
* Fix: Outline text (a stroke with no fill) prints as an outline instead of solid black or nothing; text strokes appear in every format.
* Fix: PNG text was about a third too large and lines overlapped; size, line spacing and letter spacing now match the designer, and so do PDF text shadows and glows.
* Fix: Gradient text fills every line in PDF, and underlines use the text colour or gradient.
* Fix: Layer opacity is applied in PNG print files, and group opacity and blend mode work the same in every format.
* Fix: Large PNG print files that are scaled down to fit in memory keep their physical size.
* Fix: Bold text without an uploaded bold font prints bold; WOFF fonts and CFF based OpenType fonts are used in print files.
* Fix: EAN-13, UPC-A and Code 39 barcodes are encoded correctly in print files, and barcode text appears under the bars.
* Fix: Empty personalisation fields print their label, like the designer shows them.
* Fix: Prices entered including tax were undercharged by the tax amount on designed items. Sale prices and other pricing plugins are now respected too.
* Fix: Saving a design no longer deletes the version a cart or an order uses, so the surcharge and the print files stay right. A cart item whose design is gone is removed instead of being sold at the plain price.
* Fix: Block themes and the Cart and product blocks (Store API) add the item with its design, and "Require a design" products can be added there.
* Fix: "Order again" keeps the design and its price.
* Fix: Variable products can be added to the cart from the full page designer.
* Fix: An order placed with a design that was deleted while it sat in the cart still gets its print files.
* Fix: Autosave no longer turns a saved design back into a draft, so it is not removed as abandoned.
* Fix: Page caches are purged when a template or its print areas change.
* Fix: Print check one click fixes now work for stretched images and the ink limit, and the print resolution (DPI) check and its fix account for image crops.
* Fix: WPML and Polylang translate the Customize button text, template names and print area names.
* Fix: The "Print files ready" email is sent once per order with the files of every design, instead of once per design.
* Fix: Removing clipart no longer breaks designs and orders that use it, and used stickers no longer appear twice in the Clipart panel.
* Fix: Switching between the free and Pro editions no longer cancels pending print jobs or the daily housekeeping, and the last edition uninstalled (with data removal on) removes every Visuaro table.
* Fix: Rotating the signing secret no longer makes saved credentials unreadable, and guest designs stay linked to their guest.
* Fix: Images too large to decode safely are refused before decoding, and a failed preview no longer leaves an orphan upload.
* Fix: Guest uploads respect "Allow guest designs".
* Fix: Rate limits identify visitors correctly behind a declared proxy (VISUARO_TRUSTED_PROXIES) and count atomically.
* Fix: The full page designer's Content Security Policy nonce is random per page view.
* Fix: The admin IP allow list also protects the Visuaro admin REST endpoints, and an invalid range no longer causes an error.
* Fix: Visuaro no longer removes SVG from the site's allowed upload types, and restores the XML entity loader after cleaning an SVG.
* Fix: A design only gets download links for images its owner, the viewer or store staff uploaded.
* Improved: Personal data export and erasure cover deleted and abandoned designs, versions, uploaded images and audit log addresses, and page through large accounts.
* Improved: SVG print files wrap and fit text like the designer and embed the font; clipart crop, mask and tint are kept in PDF and SVG.
* Improved: The remaining designer labels, the template editor, print check messages and price lines are translatable.
* Improved: Native colour picker for the accent colour setting, and Google Fonts are imported again only when the list changes.
* Improved: Status and tools shows whether saved keys can still be read, and Help and docs covers nginx, proxies and VISUARO_ENCRYPTION_KEY.
* Improved: "Learn more" links on the product Designer tab and the template import.

= 1.1.0 - 2026-10-15 =
* New: Export the production queue to CSV (Visuaro, Production queue, "Export to CSV"). The file lists order, date, customer, product, quantity, design, production status and print files, and follows the status filter you have selected.
* Security hardening: changes through the REST API to templates, clipart and the production queue are accepted only from a logged in dashboard session; every route checks its capability in a named permission method.
* Security hardening: uploaded file names must carry an allowed extension, product photos and imported template images have their metadata removed, and template ZIP imports read only the files that passed the size check.
* Change: files are now stored in wp-content/uploads/visuaro-product-designer-for-woocommerce. The previous uploads/visuaro folder is moved there automatically on first use, so existing designs, uploads and print files keep working.
* Improvement: every PHP file refuses direct access, and the upgrade notice is shown only to users who can manage plugins.
* Tested with WordPress 7.1.3 and WooCommerce 11.2.1.

= 1.0.0 - 2026-10-13 =
* First release.
* Tested with WordPress 7.1 and WooCommerce 11.2.1.

== Upgrade Notice ==

= 1.4.0 =
New settings to open the designer on the Templates panel and to hide the built-in layouts. Nothing changes until you turn them on.

= 1.3.1 =
Shoppers can close the designer again without adding to the cart. Recommended for every store.

= 1.3.0 =
Adds a measurement unit setting (millimetres, centimetres or inches) and a French translation. Existing sizes are not changed.

= 1.2.0 =
Print files now match the designer (curved and outlined text, PNG text size), prices entered including tax are charged correctly, block themes keep the design in the cart, and a clipart library manager with a starter pack is added.

= 1.1.0 =
Adds a CSV export of the production queue and security hardening. The uploads folder moves to uploads/visuaro-product-designer-for-woocommerce automatically.

= 1.0.0 =
First release.
