{"id":345442,"date":"2026-08-01T20:52:18","date_gmt":"2026-08-01T20:52:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/seeonwall-for-woocommerce\/"},"modified":"2026-08-05T21:28:50","modified_gmt":"2026-08-05T21:28:50","slug":"seeonwall-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/cor.wordpress.org\/plugins\/seeonwall-for-woocommerce\/","author":23537617,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.0.3","requires":"6.6","requires_php":"7.4","requires_plugins":null,"header_name":"SeeOnWall for WooCommerce","header_author":"Mateusz Dziurdziak","header_description":"Let shoppers preview posters on their own wall, at true physical scale, directly on your product pages.","assets_banners_color":"f2ede4","last_updated":"2026-08-05 21:28:50","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/seeonwall.com","header_author_uri":"https:\/\/profiles.wordpress.org\/mateuszdziurdziak\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":118,"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":"mateuszdziurdziak","date":"2026-08-01 20:51:58"},"1.0.1":{"tag":"1.0.1","author":"mateuszdziurdziak","date":"2026-08-05 00:00:34"},"1.0.2":{"tag":"1.0.2","author":"mateuszdziurdziak","date":"2026-08-05 21:28:50"}},"upgrade_notice":{"1.0.2":"<p>Documentation only, no code changes. Adds how to report illegal content.<\/p>","1.0.1":"<p>Documentation only, no code changes. Clarifies how shopper wall photos are handled.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3631310,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3631310,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3631310,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3631310,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3631310,"resolution":"1","location":"assets","locale":"","width":2560,"height":1444},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3631310,"resolution":"2","location":"assets","locale":"","width":2560,"height":1444},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3631310,"resolution":"3","location":"assets","locale":"","width":2560,"height":1444}},"screenshots":{"1":"The SeeOnWall settings page in WP-Admin.","2":"The \"See on your wall\" button on a product page.","3":"A wall preview in progress."}},"plugin_section":[],"plugin_tags":[9615,45083,252866,286],"plugin_category":[45],"plugin_contributors":[274191],"plugin_business_model":[],"class_list":["post-345442","plugin","type-plugin","status-publish","hentry","plugin_tags-poster","plugin_tags-product-preview","plugin_tags-wall-art","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-mateuszdziurdziak","plugin_committers-mateuszdziurdziak"],"banners":{"banner":"https:\/\/ps.w.org\/seeonwall-for-woocommerce\/assets\/banner-772x250.png?rev=3631310","banner_2x":"https:\/\/ps.w.org\/seeonwall-for-woocommerce\/assets\/banner-1544x500.png?rev=3631310","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/seeonwall-for-woocommerce\/assets\/icon-128x128.png?rev=3631310","icon_2x":"https:\/\/ps.w.org\/seeonwall-for-woocommerce\/assets\/icon-256x256.png?rev=3631310","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/seeonwall-for-woocommerce\/assets\/screenshot-1.png?rev=3631310","caption":"The SeeOnWall settings page in WP-Admin."},{"src":"https:\/\/ps.w.org\/seeonwall-for-woocommerce\/assets\/screenshot-2.png?rev=3631310","caption":"The \"See on your wall\" button on a product page."},{"src":"https:\/\/ps.w.org\/seeonwall-for-woocommerce\/assets\/screenshot-3.png?rev=3631310","caption":"A wall preview in progress."}],"raw_content":"<!--section=description-->\n<p>SeeOnWall adds a \"See on your wall\" button to your poster\/art product pages. Shoppers take (or\nupload) a photo of their own wall, or pick a stock room scene, and instantly see the poster\nplaced at true physical scale \u2014 reducing purchase hesitation and returns.<\/p>\n\n<p><strong>Requires WooCommerce<\/strong> (8.0+) to be installed and active \u2014 SeeOnWall is a WooCommerce\nextension, not a standalone plugin.<\/p>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>Install and activate SeeOnWall.<\/li>\n<li>Go to WooCommerce \u2192 SeeOnWall and click <strong>Connect to SeeOnWall<\/strong>. No account signup, no API\nkey to copy \u2014 the plugin proves it controls your store's domain and a free account is\nprovisioned automatically.<\/li>\n<li>A \"See on your wall\" button appears on your product pages automatically, sized from your\nproduct's Dimensions (WooCommerce \u2192 Product data \u2192 Shipping).<\/li>\n<li>Upgrade to a paid plan any time from the SeeOnWall settings page for higher usage limits,\nsession sharing, and white-labelling \u2014 billed by SeeOnWall directly (Polar.sh), not through\nWooCommerce.<\/li>\n<\/ol>\n\n<h4>External service: SeeOnWall<\/h4>\n\n<p>This plugin is the client for <strong>SeeOnWall<\/strong>, a hosted software-as-a-service that renders the\nwall previews. The plugin does not do the visualization itself \u2014 it connects your store to the\nSeeOnWall service at https:\/\/seeonwall.com and loads the service's viewer on your product pages.\nIt is not usable without this service, which is operated by the plugin author.<\/p>\n\n<p>What is sent, and when:<\/p>\n\n<ul>\n<li><strong>On connect \/ reconnect<\/strong> (one-time, triggered by you clicking <strong>Connect<\/strong>): your store's URL\nand the connecting WordPress admin's email address. In return the plugin receives a store token\nused to authenticate later requests. The admin email is used only for account notifications\n(e.g. usage-limit alerts) and billing \u2014 it is never shown to shoppers or used for marketing.<\/li>\n<li><strong>On product pages<\/strong> (for connected stores): a small JavaScript viewer is loaded from\n  https:\/\/seeonwall.com\/seeonwall.js, and the product's image URL and physical dimensions are\npassed to it so the shopper can preview the poster. This is loaded from SeeOnWall (not bundled)\nbecause the preview is a live hosted service, kept current server-side.<\/li>\n<li><strong>The plugin itself sends no shopper data.<\/strong> It only injects the button and passes the product\nimage URL and dimensions. Shoppers, however, interact directly with the SeeOnWall service once\nthey open the preview \u2014 see below.<\/li>\n<\/ul>\n\n<p>What SeeOnWall does with shopper data (not the plugin, but the service it loads):<\/p>\n\n<ul>\n<li>A shopper who picks a <strong>room-scene template<\/strong> uploads nothing at all. No photo is created.<\/li>\n<li>A shopper who uploads or takes a <strong>photo of their own wall<\/strong> has that photo stored in an EU\nCloudflare R2 bucket and analysed by Google Vertex AI (via Google's EU Data Boundary endpoint,\npinned to europe-west1) to detect the wall corners. The photo stays inside the EU for its whole\nlifetime, is never used to train models, and is deleted automatically when the session expires\nafter 7 days.<\/li>\n<li>Shoppers never create an account. Cloudflare Turnstile is used for bot protection on upload.<\/li>\n<li>A notice stating the above is shown to the shopper inside the viewer, before they upload.<\/li>\n<\/ul>\n\n<p>Service terms, privacy policy and sub-processors:<\/p>\n\n<ul>\n<li>Terms of Use: https:\/\/seeonwall.com\/terms<\/li>\n<li>Privacy Policy: https:\/\/seeonwall.com\/privacy<\/li>\n<li>Sub-processor list: https:\/\/seeonwall.com\/subprocessors<\/li>\n<\/ul>\n\n<h4>Reporting illegal content<\/h4>\n\n<p>If content hosted by SeeOnWall is unlawful \u2014 for example a poster image used without the rights\nholder's permission \u2014 you can report it to abuse@seeonwall.com. The notice-and-action procedure\nunder Article 16 of the EU Digital Services Act, including what a notice must contain and how it\nis handled, is described at https:\/\/seeonwall.com\/report<\/p>\n\n<h3>Source Code<\/h3>\n\n<p>The admin settings page is a small React + TypeScript app. The plugin ships only its compiled,\nminified output (<code>assets\/js\/settings.js<\/code>, <code>assets\/css\/settings.css<\/code>). The complete, human-readable\nsource those files are built from is included in this plugin under the <code>src\/<\/code> directory, together\nwith build instructions (<code>src\/README.md<\/code>). Build tooling: Node.js + Vite (<code>npm install &amp;&amp; npm run\nbuild<\/code>). React and ReactDOM are not bundled \u2014 they resolve at runtime to the copies WordPress\nships (the <code>react<\/code> \/ <code>react-dom<\/code> script handles).<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/seeonwall-for-woocommerce<\/code>, or install directly through the\nWordPress plugins screen.<\/li>\n<li>Activate the plugin through the \"Plugins\" screen in WordPress.<\/li>\n<li>Go to WooCommerce \u2192 SeeOnWall and click <strong>Connect to SeeOnWall<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20cost%20anything%3F\"><h3>Does this cost anything?<\/h3><\/dt>\n<dd><p>The plugin itself is free. A free tier is provisioned automatically on connect; paid tiers\n(higher limits, session sharing, white-labelling) are billed by SeeOnWall directly.<\/p><\/dd>\n<dt id=\"which%20product%20field%20sets%20the%20poster%27s%20physical%20size%3F\"><h3>Which product field sets the poster's physical size?<\/h3><\/dt>\n<dd><p>By default, WooCommerce's own product Dimensions (Product data \u2192 Shipping \u2192 Width\/Height),\nconverted using your store's configured dimension unit. This can be overridden per-product via\nthe <code>seeonwall_poster_width_cm<\/code> \/ <code>seeonwall_poster_height_cm<\/code> filters.<\/p><\/dd>\n<dt id=\"which%20products%20show%20the%20button%3F\"><h3>Which products show the button?<\/h3><\/dt>\n<dd><p>Configurable from WooCommerce \u2192 SeeOnWall \u2192 Product visibility. By default, every product with\nboth a width and a height set shows the button. Switch to \"Only products with the preview\nenabled\" to opt in per-product instead, via a <code>seeonwall_preview_enabled<\/code> custom field\/meta set\nto a truthy value \u2014 dimensions are still required either way.<\/p><\/dd>\n<dt id=\"which%20image%20does%20the%20button%20preview%3F\"><h3>Which image does the button preview?<\/h3><\/dt>\n<dd><p>Configurable from WooCommerce \u2192 SeeOnWall \u2192 Poster image. By default, the product's first\ngallery image is used, unless a <code>seeonwall_image_url<\/code> custom field\/meta is set on that product,\nwhich overrides it \u2014 useful when the first image isn't a clean flat shot of the poster (e.g. a\nframed mockup or room scene). Switch to \"Use image from custom field\" to require the custom\nfield on every product instead; the button won't show on products missing it.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20move%20my%20store%20to%20a%20new%20domain%3F\"><h3>What happens if I move my store to a new domain?<\/h3><\/dt>\n<dd><p>Open WooCommerce \u2192 SeeOnWall \u2014 a \"Reconnect\" prompt appears automatically when the plugin\ndetects the site URL no longer matches the domain it was connected under.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Documentation only \u2014 no functional changes. Added a \"Reporting illegal content\" section\npointing to abuse@seeonwall.com and to the notice-and-action procedure under Article 16 of the\nEU Digital Services Act, published at https:\/\/seeonwall.com\/report<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Documentation only \u2014 no functional changes. Corrected the description of what happens to\nshopper data. The previous wording said no customer personal data was involved, which was\naccurate about the plugin itself but misleading about the SeeOnWall service the plugin loads:\na shopper who photographs their own wall has that photo stored in the EU and analysed to\ndetect the wall, then deleted after 7 days. The description now states this explicitly and\nlinks to the sub-processor list at https:\/\/seeonwall.com\/subprocessors.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Let shoppers preview posters on their own wall, at true physical scale, directly on your WooCommerce product pages.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/345442","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=345442"}],"author":[{"embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mateuszdziurdziak"}],"wp:attachment":[{"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=345442"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=345442"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=345442"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=345442"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=345442"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=345442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}