Add FitLens to your store

Enter your email and we'll send you a sign-in link. No password to create, no forms to fill — the link takes you straight to your embed code.

Free while we're in beta — no card, no commitment. By continuing you agree to our terms and privacy policy.

FitLens
Free beta marek@woolet.co

Overview

What FitLens has done for .

Get FitLens live0 of 3 done
1
Add your frames We can only recommend what we know about. Add them one at a time or import a CSV.
2
Connect your email tool Shoppers who opt in go straight to your list. Without this their addresses sit here and no one sees them. Connected to MailerLite.
3
Add FitLens to your site One line of code on your product pages. Nothing happens for shoppers until this is live. Live on your site — first measurement received.
Shoppers measured
312
this month · +18% vs last
Emails captured
142
46% of shoppers who finished · synced to MailerLite
Measurements over time
Narrow · to 145 mm
0
frame width these shoppers needed
Medium · 145–155 mm
0
frame width these shoppers needed
Wide · over 155 mm
0
frame width these shoppers needed

A band with nothing in it is the useful one: those are shoppers whose size you could not serve. We never see your orders, so this counts who was measured, not who bought.

Beta usageMeasurements are free while we're in beta. This is here so nothing surprises you later.
312 / 1,000
Fewer returns An estimate on your figures — we never see your orders
Returns likely avoided
Which would have cost you
Shipping back, checking, restocking, lost value. Published averages are 20–30.
% of measured shoppers. Nobody has published this figure — 10 is a deliberately low starting point, and it is your call, not ours.

This is an estimate, not a measurement. It multiplies the shoppers who measured — a real count — by two numbers you set. FitLens cannot see your orders, so it does not know who bought or who sent anything back. Once it can read order data we will replace this with the real thing.

Your frames

We can only recommend frames we have sizes for.

Bulk uploadFaster if you have more than a handful
Upload a CSVOne row per frame: name, SKU, lens width, bridge, temple, product link. The size columns match what's printed on the frame, so you can fill them from your stock list.
Paste from a spreadsheetCopy the rows straight out of Excel or Google Sheets and paste them here. We'll match the columns and show you a preview before saving.
FrameLensBridgeTempleFront widthEye spacingLinkStatus

Email capture

Shoppers who ask us to email their measurements can also join your list.

Opted in
142
gave marketing consent
Synced to MailerLite
138
Opt-in rate
46%
of shoppers who finished measuring
Your email providerConnected · MailerLite
MailerLite
Adding to list ·
Sync failures are retried for 24 hours. If a sync keeps failing we'll email you rather than drop the contact.

Install

One snippet. Works on a product page, a blog post, or anywhere else on your site.

1 · Paste this before </body>Not detected yet

That's all that's required. The script is ~14 KB and loads after your page, so it won't slow the page down. The camera only starts when a shopper taps the button.

2 · Choose where it appears
A button you place yourselfDrop this where you want the button to sit — usually next to “Add to cart”.
<div data-fitlens="button"></div>
A floating tabNo placement needed — a small tab sits in the corner of every page the script is on.
<scriptdata-mode="floating">
3 · Make it yoursThe widget carries your brand, not ours
How it looks on your site
👓
Aria — Slate
€129,00
Add to cart
◎ Find my fit

This is the button your shoppers tap. Tapping it opens the measuring window over your page — your page is never navigated away from.

Change these and the snippet above updates — no need to re-paste it.

4 · Read the result on your pageOptional — the widget works without a line of this

When FitLens finishes measuring, it hands the millimetres to your page as an ordinary DOM event. That is the only way your site learns anything: the measuring window runs on our domain, in its own frame, so your page cannot read into it and we never write into your page. Listen for the event and do whatever you like with it — open your size guide at the right size, filter the grid, prefill a form.

// Fires the moment FitLens has a measurement — the shopper // may still have the measuring window open in front of your page. document.addEventListener("fitlens:result", function (event) { var m = event.detail; // The size we found, as a range in millimetres. console.log(m.recommendedFrameWidthMm.min, "to", m.recommendedFrameWidthMm.max); // Your own frames that fit it, closest first. m.frames.forEach(function (frame) { console.log(frame.sku, frame.name, frame.frontWidthMm); }); });

What arrives in event.detail

FieldExampleWhat it is
recommendedFrameWidthMm{ min: 154, max: 164 } The answer to “what size?” — a frame fits when its front width, hinge to hinge, falls inside this range.
frames[ { sku: “ARIA-SLATE”, … } ] Your frames that fit, closest first. Each carries sku, name, productUrl, frontWidthMm, lensWidthMm, bridgeMm, templeMm and deltaMm — how far that frame sits from the face, signed. The sku is the one out of your own spreadsheet, so you can match it to a product without asking us anything.
faceWidthMm159 Measured across the widest part of the face. The range above is this figure plus and minus our tolerance.
pdMm64.2 Pupillary distance — centre of one pupil to the other.
noseBridgeMm31.4 The span between the inner corners of the eyes. Not the bridge size printed on a frame, which is the gap between its lenses — a different distance, and roughly twice as small.
confidence"low" How settled the capture was. Treat anything below "high" as a good guide rather than a prescription.
measurementId"9f2a…" Identifies this measurement if you ever need to ask us about it.

Settings

Your shop and your account.

Shop
Every sign-in link goes here. Change it and we'll confirm at the new address first.
Shoppers still see which frames fit and still get their measurements by email — they just are not sent to a shop that cannot serve them right now.
Close account

Removes your account, your frames and your embed key — the widget stops working immediately. Shopper contacts already sent to MailerLite stay in your MailerLite account; they're yours, not ours.

Import frames from a file
Drop your CSV hereor choose a file — one row per frame
OR PASTE
Pasting skips saving the file, which is where a spreadsheet usually changes the separator on you. Include the heading row so we know which column is which.

Columns: name, sku, product_url, lens_width, bridge, temple, front_width. Only name is required — everything else can be filled in later, and a frame without a lens width is saved and flagged rather than refused. Column order does not matter.

Download template
Edit frame
Hinge to hinge, if you have measured it. Leave blank and we estimate it from lens and bridge.
Delete frame

Delete ? It stops being recommended to shoppers immediately. This cannot be undone.

Sync log — MailerLite
WhenAttemptResultDetail
14:321Synced
11:472RetryingMailerLite rate limit — the relay tries again on its own
09:151FailedInvalid API key — reconnect needed
Close your FitLens account

This removes your account, your 21 frames and your embed key. The widget stops working on your site immediately.