Description
Big items come back when they do not fit. ItemFits answers the question shoppers ask before they buy furniture, appliances and other large products: will it get in?
- Product Fit on product pages: the shopper enters their door, hallway, stairs, elevator, room or car, and gets a clear answer for the product and option they are looking at, with the tightest point and how much room is left.
- Chat on every page: shoppers ask in their own words (“will this sofa go up my stairs?”) and the answer comes from the same fit check.
- Cart check: everything in the cart, checked against the shopper’s spaces.
- Fit consultations: when an answer is “no” or not certain, the shopper can send photos of the space or ask the store to call back.
The widgets are the same ones ItemFits runs on Shopify and Wix stores, with the same answers. You choose where they appear: blocks for block themes (Product Fit is added next to the add to cart button and can be moved in the Site Editor), WooCommerce hooks for classic themes, and shortcodes ([itemfits_product_fit], [itemfits_cart_fit]) for page builders.
What you need
- WooCommerce.
ItemFits is a service: the fit checks run on ItemFits’ servers using your product catalog, so the plugin does nothing until you connect it. The plugin itself is free and has no locked features. The ItemFits service is paid: every store starts with a free 2-day trial, and after it a monthly or yearly ItemFits plan keeps the service running. Plans, prices and usage limits are listed and managed on itemfits.com, and the plugin never asks for a licence key. WooCommerce ItemFits shows your plan as ItemFits reports it and a Plans & billing button that opens the plan screen on itemfits.com.
External services
This plugin connects your store to the ItemFits service (https://itemfits.com), run by ItemFits. It is needed for every feature: fit answers are computed by ItemFits from your catalog. Nothing is sent before you click Connect to ItemFits. Every request from your site is signed with a secret your site and ItemFits share.
What is sent, and when:
- When you connect: your site address, a random site id created by the plugin, your store name, the WordPress admin email address, currency, measurement and weight units, language, time zone and the WordPress, WooCommerce, PHP and plugin versions. You approve the connection on itemfits.com. If ItemFits already knows your store and this site cannot prove it is the same one (a restored backup, a reinstalled plugin), you can confirm by email instead: ItemFits sends a one-time link to the admin email address it holds for the store.
- After connecting, and whenever a product changes: your product catalog: titles, descriptions, categories, tags, brands, options and variations, prices, stock status, visibility, image addresses, product sizes and weights, and any ItemFits product fields. Deleted products are reported so ItemFits removes them. ItemFits never receives your orders, customers or WordPress users, and never changes your products.
- Once a day: that the plugin is still active, the number of products, and the store details listed above (without the admin email address).
- When you turn the plugin back on: that it is active again. If ItemFits no longer holds your admin email address (it deletes it after a removal), the plugin sends it once more, so your ItemFits emails (welcome, size reports, fit consultation notices) can reach you.
- When you open the ItemFits dashboard (WooCommerce ItemFits, a screen button): your browser opens itemfits.com with a one-time sign-in token your site signs. It carries your store’s ItemFits id, your WordPress user id, your admin language and the screen to open, and works once, within 60 seconds. Product sizes, branding, reports and settings are ItemFits pages on itemfits.com; you stay signed in there for 8 hours.
- When you open WooCommerce ItemFits while connected: a signed request (https://itemfits.com/api/woocommerce/plan-status) for your store’s plan (free trial and when it ends, or your plan), at most once every 10 minutes (once a minute after a failed read). It carries the store details sent with every update (your store’s ItemFits id, site id, site address, currency and units) and nothing else. ItemFits answers with a one-line status, which the page shows as it is; the plugin never turns anything on or off itself.
- When you disconnect, deactivate or uninstall the plugin: that it happened.
- When you use WordPress’s privacy tools (Tools Export Personal Data / Erase Personal Data) while connected: the request, the shopper’s email address that WordPress confirmed, and your own email address for the reply. ItemFits answers within 30 days.
On your storefront, the ItemFits widget talks to ItemFits directly from the shopper’s browser (https://itemfits.com/api/woocommerce/storefront/):
- When a page with a widget loads: your store’s ItemFits id, to load the widget’s settings and wording, and your store’s logo from ItemFits (https://itemfits.com/api/commerce/branding/logo/) if you set one.
- When a shopper uses a widget: their questions and the sizes they enter (their door, stairs, room or vehicle), the product and option they are looking at, and their cart contents, to answer them. These requests carry a short-lived token your site signs; your site hands it to the widget on the shopper’s first interaction. ItemFits sees the shopper’s IP address like any website does.
- Fit checks, chat messages and answers are recorded for every shopper, whatever their cookie choices, so that you and ItemFits can review whether answers were right: the question and the answer shown, the product and option, the sizes checked, the result, the time, the device type and whether a store customer was signed in (never who). No shopper identifier, customer id, name or page address is stored with them, and email addresses and phone numbers typed into a chat are removed before the text is stored.
- Widget usage events (opening and closing a widget, starting a check, entering sizes, viewing a result, adding to the cart) are sent only when the shopper’s choices allow statistics through the WP Consent API, or when the site has no consent plugin.
- Fit consultations: a shopper who chooses to send photos of a space or to ask for a call back sends those photos and the contact details they type. Photos and those details are erased 90 days after the case opened.
- Fit result on the order: when a shopper checks a product that is in their cart, ItemFits answers with a signed record of the result (product, space, result; no personal data), which the plugin keeps with the cart and copies onto the order for your staff, unless the shopper chooses not to add it. It stays in your WooCommerce store.
Recorded checks, chats, usage events and consult cases are erased after 400 days.
ItemFits terms of service: https://itemfits.com/terms
ItemFits privacy policy: https://itemfits.com/privacy
Source code
The plugin’s PHP, the block scripts (blocks/) and assets/js/placement-controls.js are shipped as written.
Two parts are compiled, and their human-readable source ships with the plugin in the source/ folder (it is not loaded by WordPress):
- The storefront widget in
assets/widget/<version>/(the folder name is the widget version). It is written in TypeScript with Preact and bundled with esbuild into plain JavaScript modules and CSS. The bundle is not minified. Eachchunk-*.jsfile is a group of source modules, and its// pathcomments name them relative tosource/extensions/itemfits-fit-check/: for example// ../itemfits-fit-check-src/components/SpaceForm.tsxissource/extensions/itemfits-fit-check-src/components/SpaceForm.tsx, and// ../../packages/space-pickers/src/StairPicker.tsxissource/packages/space-pickers/src/StairPicker.tsx. Short names such asuorkin the bundle are Preact’s own exports, as Preact publishes them (node_modules/preact/**/dist/). - The WordPress storefront host,
assets/js/host.js, written in TypeScript (source/wordpress/host-src/) and built bysource/wordpress/build.mjs.
Both builds compile the source without its code comments, and source/ holds that same comment-free text, so it is exactly what was compiled.
To rebuild them (Node.js 20 or later), in source/:
npm install
npm run build
npm run build:host
npm run verify
npm install installs the exact tool and library versions the release was built with (listed in `source/package.json` and `source/README.md`). `npm run verify` compares the rebuilt files with `source/SOURCE-MANIFEST.json` (a SHA-256 per file), which holds the hashes of the files shipped in `assets/widget/` and `assets/js/host.js`; they are identical. Everything in `source/` is licensed under the GPL, version 2 or later; third-party parts are listed in `source/THIRD-PARTY-NOTICES.txt`.<h3>Credits</h3>
The widget includes:
- Preact 10.29.0 (https://preactjs.com, source: https://github.com/preactjs/preact), MIT License.
- uqr 0.1.3, QR code generator (https://github.com/unjs/uqr), MIT License.
- The Outfit typeface (https://github.com/google/fonts/tree/main/ofl/outfit), SIL Open Font License 1.1, subset for the Product Fit button.
It is built with esbuild 0.21.5 (https://esbuild.github.io, MIT License), using TypeScript 5.9.3 (https://www.typescriptlang.org, Apache License 2.0) to read the source.
Screenshots






Blocks
This plugin provides 2 blocks.
- ItemFits Product Fit Product Fit shows here on your live store.
- ItemFits Cart fit check The cart fit check shows here on your live store.
Installation
- Install and activate the plugin (WooCommerce must be active).
- Go to WooCommerce ItemFits and click Connect to ItemFits.
- Approve the connection on itemfits.com. You come back to WordPress, and your products are sent to ItemFits in the background.
- Product Fit appears on your product pages and the chat on every page. To change where they appear, open WooCommerce ItemFits placement, or move the Product Fit block in the Site Editor. Add the cart check to your Cart page with the ItemFits Cart fit check block (block themes) or let the plugin add it under the cart table (classic themes).
FAQ
-
Does the plugin send anything before I connect?
-
No. Nothing leaves your site until you click Connect.
-
Where do product sizes come from?
-
From your catalog. WooCommerce’s own length, width and height fields are usually the shipping box, so ItemFits never treats them as the product’s size without your review. You review and approve sizes on the ItemFits Product sizes screen, which you open from WooCommerce ItemFits.
-
Where are ItemFits’ settings, sizes and reports?
-
On itemfits.com. The buttons on WooCommerce ItemFits open each screen with a one-time sign-in from your WordPress user, so there is no separate ItemFits password. The widget placement settings stay in WordPress.
-
My store has thousands of products.
-
Products are sent in the background, about a hundred per request, and changes are sent as you make them. A catalog import does not send one request per product.
-
I copied my site to a staging address.
-
The plugin notices the address changed and stops sending. On the ItemFits page choose The store moved here (same store, new address) or This is a copy (the copy is unlinked from your store).
-
Yes, through the WP Consent API. Widget usage events are only sent when the shopper’s choices allow statistics (or when the site has no consent plugin), and saved spaces follow the shopper’s preference choice. Fit answers and chats are recorded either way; see External services.
-
Does it work on multisite?
-
Activate it on each site that runs a store. Network activation is not supported.
-
Is the widget’s code open source?
-
Yes, under the GPL. The human-readable source of every compiled file in the plugin, and the tools that build it, ship in the plugin’s
source/folder. See Source code below.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“ItemFits – Product & Space Checker” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “ItemFits – Product & Space Checker” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
0.1.1
- Connect without an ItemFits account: you approve the connection on itemfits.com. A store ItemFits already knows can confirm by email when this site cannot prove it is the same one (restored from a backup, plugin reinstalled).
- WooCommerce ItemFits shows your plan (free trial and when it ends, or your plan) and a Plans & billing button.
- The Connect link now stays valid for 30 minutes, long enough to confirm by email.
0.1.0
- First version: connect, catalog sync, Product Fit, chat and cart check, fit result on the order, privacy tools.
