{"id":401757,"date":"2026-11-12T17:20:22","date_gmt":"2026-11-12T17:20:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/letscms-product-designer-for-woocommerce\/"},"modified":"2026-11-12T17:19:50","modified_gmt":"2026-11-12T17:19:50","slug":"letscms-product-designer","status":"publish","type":"plugin","link":"https:\/\/tr.wordpress.org\/plugins\/letscms-product-designer\/","author":15489460,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.4","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"LetsCMS Product Designer for WooCommerce","header_author":"LetsCMS","header_description":"Let customers design their own products: add text and images on the product, see a live preview and order. Every order comes with a print-ready file.","last_updated":"2026-11-12 17:19:50","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/www.letscms.com\/","header_plugin_uri":"","header_author_uri":"https:\/\/www.letscms.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":59,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"letscms","date":"2026-11-12 17:19:50","revision":3798910}},"upgrade_notice":{"1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3798910,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3798910,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3798910,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3798910,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3798910,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3798910,"resolution":"1","location":"assets","locale":"","width":1280,"height":1000},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3798910,"resolution":"2","location":"assets","locale":"","width":1280,"height":1000},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3798910,"resolution":"3","location":"assets","locale":"","width":2560,"height":690},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3798910,"resolution":"4","location":"assets","locale":"","width":924,"height":579},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3798910,"resolution":"5","location":"assets","locale":"","width":924,"height":1088}},"screenshots":{"1":"The designer on a product.","2":"Print quality warning for a small image.","3":"The design in the cart.","4":"The design on the order screen with downloads.","5":"Product data &gt; Product designer: placing the print area."}},"plugin_section":[],"plugin_tags":[207826,10685,13075,66524,45085],"plugin_category":[],"plugin_contributors":[160519],"plugin_business_model":[],"class_list":["post-401757","plugin","type-plugin","status-publish","hentry","plugin_tags-custom-t-shirt","plugin_tags-personalization","plugin_tags-print-on-demand","plugin_tags-product-customizer","plugin_tags-product-designer","plugin_contributors-letscms","plugin_committers-letscms"],"banners":{"banner":"https:\/\/ps.w.org\/letscms-product-designer\/assets\/banner-772x250.png?rev=3798910","banner_2x":"https:\/\/ps.w.org\/letscms-product-designer\/assets\/banner-1544x500.png?rev=3798910","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/letscms-product-designer\/assets\/icon.svg?rev=3798910","icon":"https:\/\/ps.w.org\/letscms-product-designer\/assets\/icon.svg?rev=3798910","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/letscms-product-designer\/assets\/screenshot-1.png?rev=3798910","caption":"The designer on a product."},{"src":"https:\/\/ps.w.org\/letscms-product-designer\/assets\/screenshot-2.png?rev=3798910","caption":"Print quality warning for a small image."},{"src":"https:\/\/ps.w.org\/letscms-product-designer\/assets\/screenshot-3.png?rev=3798910","caption":"The design in the cart."},{"src":"https:\/\/ps.w.org\/letscms-product-designer\/assets\/screenshot-4.png?rev=3798910","caption":"The design on the order screen with downloads."},{"src":"https:\/\/ps.w.org\/letscms-product-designer\/assets\/screenshot-5.png?rev=3798910","caption":"Product data &gt; Product designer: placing the print area."}],"raw_content":"<!--section=description-->\n<p>LetsCMS Product Designer adds a product designer to your WooCommerce store. Customers click <strong>Customize<\/strong> on a product, add their own text and pictures, see exactly how it will look, and order. You get the finished artwork with every order: a print-ready PNG at the real print size, plus the customer's original images.<\/p>\n\n<p>It runs entirely on your own website. There is no account to create, no monthly fee and nothing is sent to another service.<\/p>\n\n<h4>Made to fix what store owners complain about<\/h4>\n\n<ul>\n<li><strong>Fast product pages.<\/strong> Nothing is loaded on products without the designer. On products with it, the page gets about 18 KB; the drawing library (about 92 KB compressed) loads only when a customer clicks Customize.<\/li>\n<li><strong>No blurry prints.<\/strong> Customers see the print quality (DPI) of each image while they resize it, and are warned before ordering if an image is too small to print sharply. You see the same warning on the order.<\/li>\n<li><strong>Print-ready files.<\/strong> The print file contains only the print area, on a transparent background, at the size and DPI you set for the product (for example 10 \u00d7 12 in at 300 DPI). Customer images are kept exactly as uploaded.<\/li>\n<li><strong>Nothing lost.<\/strong> Unsaved designs are kept in the browser, so a reload or a closed tab does not lose the customer's work. Undo and redo included.<\/li>\n<li><strong>Works on phones.<\/strong> Full-screen designer with touch controls, and a normal text field for editing text.<\/li>\n<li><strong>Accessible.<\/strong> Keyboard controls (arrow keys to move, Delete to remove, Ctrl+Z to undo), labelled controls and visible focus.<\/li>\n<li><strong>Private by design.<\/strong> Files are stored in your uploads folder; originals and print files are only downloadable by shop staff. Designs that are never ordered are deleted automatically after a few days.<\/li>\n<\/ul>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Turn the designer on per product (simple and variable products).<\/li>\n<li>Place the print area visually by dragging a box on the product image.<\/li>\n<li>Set the real print size (inches or centimetres) and DPI per product.<\/li>\n<li>Text with your choice of fonts, size, colour, bold and italic.<\/li>\n<li>Customer image uploads (JPG, PNG, WebP) with a size limit you choose.<\/li>\n<li>Move, resize, rotate, centre, delete, undo and redo.<\/li>\n<li>Layers panel: select, rename, reorder by drag or keyboard, hide (hidden items are not printed), lock and duplicate.<\/li>\n<li>Optional design fee added to the product price.<\/li>\n<li>Optionally require a design before the product can be added to the cart.<\/li>\n<li>Saved designs: customers reopen their last draft, change the design of a cart item, and find all their designs under My Account &gt; My designs.<\/li>\n<li>The design preview replaces the product image in the cart, mini-cart, Cart and Checkout blocks, order pages and order emails.<\/li>\n<li>Each order item keeps a frozen copy of its design, so what was ordered never changes.<\/li>\n<li>Order screen: preview, print file details, low-resolution warning, the texts and fonts used, download of the print file, the original images or everything as a ZIP.<\/li>\n<li>Shop staff can view a design read-only or fix a copy of it; the customer's original and an order note are kept.<\/li>\n<li>Privacy: designs are included in WordPress's personal data export and erasure tools.<\/li>\n<li>Translated into 12 languages, including right-to-left Arabic.<\/li>\n<li>Variable products: the designer uses the image of the selected option.<\/li>\n<li>Compatible with WooCommerce High-Performance Order Storage (HPOS) and the Cart and Checkout blocks.<\/li>\n<\/ul>\n\n<h3>Third-party libraries<\/h3>\n\n<ul>\n<li>Fabric.js 7.4.0 \u2013 MIT License \u2013 https:\/\/github.com\/fabricjs\/fabric.js (bundled in assets\/vendor\/fabric).<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate LetsCMS Product Designer (WooCommerce must be active).<\/li>\n<li>Edit a product, open <strong>Product data &gt; Product designer<\/strong>, tick <strong>Product designer<\/strong>, drag the print area onto the product image, set the print size, and update the product.<\/li>\n<li>Optional: adjust store-wide options under <strong>WooCommerce &gt; Settings &gt; Products &gt; Product designer<\/strong> (button text, upload size, DPI warning, fonts, how long unordered designs are kept).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20do%20i%20get%20the%20files%20to%20print%3F\"><h3>Where do I get the files to print?<\/h3><\/dt>\n<dd><p>Open the order. Under each designed item you can download the print file, the customer's original images, or everything as a ZIP.<\/p><\/dd>\n<dt id=\"which%20fonts%20can%20customers%20use%3F\"><h3>Which fonts can customers use?<\/h3><\/dt>\n<dd><p>The fonts listed under WooCommerce &gt; Settings &gt; Products &gt; Product designer. Use fonts your theme already loads, or common system fonts. No font is loaded from an outside service.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20page%20caching%3F\"><h3>Does it work with page caching?<\/h3><\/dt>\n<dd><p>Yes. If a cached page has an expired security code, the designer gets a fresh one automatically before saving.<\/p><\/dd>\n<dt id=\"how%20large%20can%20the%20print%20file%20be%3F\"><h3>How large can the print file be?<\/h3><\/dt>\n<dd><p>The print file is made at the size and DPI you set. Very large prints are limited by the browser (about 16 megapixels on iPhones and iPads); the order screen then shows the actual DPI of the file.<\/p><\/dd>\n<dt id=\"can%20customers%20come%20back%20to%20a%20design%20later%3F\"><h3>Can customers come back to a design later?<\/h3><\/dt>\n<dd><p>Yes. Saved designs are kept on the site. Logged-in customers find them under My Account &gt; My designs (drafts, designs in the cart, and ordered designs), where they can continue designing, make a copy or delete a draft. On the product page the last saved draft opens again, and \"Edit design\" in the cart changes the design of that cart item. Ordered designs are never changed: \"Make a copy\" starts a new draft from them.<\/p><\/dd>\n<dt id=\"can%20the%20shop%20fix%20a%20design%20after%20the%20order%20is%20placed%3F\"><h3>Can the shop fix a design after the order is placed?<\/h3><\/dt>\n<dd><p>Yes. On the order screen, \"View design\" opens the design read-only, and \"Edit a copy\" lets staff change a copy. The copy then becomes the design of that order item. The customer's original is kept and listed under the item, and an order note records who changed it.<\/p><\/dd>\n<dt id=\"can%20a%20customer%20change%20a%20design%20after%20ordering%3F\"><h3>Can a customer change a design after ordering?<\/h3><\/dt>\n<dd><p>No. Each order item keeps a frozen copy of its design. Customers can make a copy in My designs, or use \"Order again\", to start from it.<\/p><\/dd>\n<dt id=\"is%20letscms%20product%20designer%20gdpr-ready%3F\"><h3>Is LetsCMS Product Designer GDPR-ready?<\/h3><\/dt>\n<dd><p>Yes. Designs and uploaded images are included in Tools &gt; Export Personal Data (the ZIP contains the images) and Tools &gt; Erase Personal Data. Designs in orders follow WooCommerce's \"Remove personal data from orders on request\" setting and its retention rules. A suggested privacy policy text is added under Settings &gt; Privacy. Nothing is sent to other services.<\/p><\/dd>\n<dt id=\"are%20the%20customer%27s%20original%20images%20and%20print%20files%20private%3F\"><h3>Are the customer's original images and print files private?<\/h3><\/dt>\n<dd><p>Yes. They are stored in a folder with a random name that is kept only in the database, so it cannot be found from the public preview image, on any web server (Apache, Nginx, LiteSpeed). On Apache and LiteSpeed the folder is also blocked with .htaccess. Shop staff download the files through WordPress, after a permission check.<\/p><\/dd>\n<dt id=\"another%20plugin%20already%20uses%20my%20account%20%3E%20my-designs.%20can%20i%20change%20the%20address%3F\"><h3>Another plugin already uses My Account &gt; my-designs. Can I change the address?<\/h3><\/dt>\n<dd><p>Yes. Add this to your theme's functions.php or a code snippets plugin. The new address works right away:<\/p>\n\n<pre><code>add_filter( 'productcraft_account_endpoint', function () { return 'saved-designs'; } );\n<\/code><\/pre><\/dd>\n<dt id=\"what%20happens%20to%20designs%20that%20are%20not%20ordered%3F\"><h3>What happens to designs that are not ordered?<\/h3><\/dt>\n<dd><p>Drafts are deleted automatically after the number of days you choose (3 by default). Designs in a cart are kept for at least 30 days. Designs that are part of an order are kept.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<li>Designer with text and images on the product, live preview, print-ready file, and downloads on the order screen.<\/li>\n<li>Designs are stored in their own database table, with draft, cart and ordered states.<\/li>\n<li>REST API (productcraft\/v1) for saving, reading and copying designs.<\/li>\n<li>Saved designs open again on the product page; \"Edit design\" in the cart changes the design of that cart item.<\/li>\n<li>My Account &gt; My designs: continue designing, make a copy, delete a draft, view the order.<\/li>\n<li>Each order item keeps a frozen copy of its design. A failed payment no longer locks the design in the cart.<\/li>\n<li>Order screen: design contents (texts with font and colour, images), read-only \"View design\", and \"Edit a copy\" with history and an order note.<\/li>\n<li>\"Order again\" brings the design back as a new copy.<\/li>\n<li>Layers panel: select, rename, reorder (drag or Alt + arrow keys), hide (hidden items are not printed), lock and duplicate.<\/li>\n<li>Privacy: designs and uploaded images in WordPress's personal data export and erasure. Order designs follow WooCommerce's order data settings and retention. Suggested privacy policy text.<\/li>\n<li>Translated into 12 languages; right-to-left layouts supported.<\/li>\n<\/ul>","raw_excerpt":"Let customers design T-shirts, mugs, caps and more with their own text and images. Every order comes with a print-ready file.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/401757","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=401757"}],"author":[{"embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/letscms"}],"wp:attachment":[{"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=401757"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=401757"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=401757"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=401757"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=401757"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=401757"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}