Skip to content
The pre-purchase fit check

A shopper’s sizing worry becomes a typed record before checkout.

Someone is staring at a size chart that has never once been right for them, torn between ordering two sizes and returning one or just closing the tab. Four questions later there is a fit record on your side before the order ships, not a refund on your side after it comes back. Free to start, live in five minutes.

You reduce ecommerce returns by asking the fit question before checkout instead of after. A conversational agent asks what someone usually wears, in their own words, types the answer into a structured fit record, and posts it to your stack, so the mismatch that would have shipped and come back gets caught first.

01 · They talk

Your GnosariAnswering
What are you shopping for today?
The canvas field jacket, but I’m always between a medium and a large in stuff like this
Got it. Do you usually size up for a relaxed fit, or stay true to size?
True to size normally, just worried this style runs small in the shoulders

02 · It becomes a record

item_of_interest
Canvas field jacket
usual_size_other_brands
Medium in most brands, Large in slim cuts
fit_preference
True to size, prefers not to size up
typical_concern
Worried this style runs small in the shoulders

typed · validated · deduped

03 · Your stack acts

  • Shopify order note
  • Zap into your stack
  • Klaviyo profile updated
  • Signed webhook at your endpoint
The process

The process this page is about

Not "AI for ecommerce". One moment: the point where a shopper’s doubt about size, about what arrived, or about whether to keep it, either gets asked one good question or gets a dropdown that does not fit the sentence they actually wanted to type.
  • Who starts it

    Someone staring at a size chart with no confidence, or someone holding a box that is not what they ordered. Almost always mid-checkout or mid-unbox, rarely during a quiet moment.

  • What it costs today

    A static size chart nobody trusts, so shoppers order two sizes and return one. A returns portal with six reason-code dropdowns and no room for "it fits like a size down". A wholesale inbox where one real buyer sits next to a hundred spam pitches.

  • What it has to produce

    A typed record: the item, the fit or the fault, what the customer actually wants done about it, and whether anything about it needs a person right now rather than a form.

70%

of fashion returns come down to size or fit, and a static chart never asks the question that would have caught it

FitEz

The schema

What it asks, and what it never asks

You name the fields your store already tracks. It does the asking, in whatever order the story comes out, and it keeps asking until the required ones are filled.
FieldTypeRequiredWhy it is there
item_of_interesttextYesAnchors the fit note to the right product
usual_size_other_brandstextYesCalibrates the recommendation to how they actually fit, not a chart
fit_preferencetextYesRelaxed, true-to-size or fitted, in their own words
order_numbertextYesTies every return, exchange or report back to the order
return_reasontextYesRoutes the return and flags a defect pattern early
desired_size_or_colortextYesWhat the swap should actually deliver
safety_or_allergen_concernbooleanYesThe one answer that triggers the hard stop to a human
business_typetextYesSorts a wholesale lead before anyone quotes a price
product_categories_interestedlistYesWhat the wholesale team should actually pitch
would_reorderbooleanYesThe honest signal a review widget never asks for

And what it will not do

  • It never authorises, approves or promises a refund, credit or exchange itself. The team reviews and confirms.
  • It never promises or estimates a delivery date, shipping window or restock date. The fulfillment team confirms timing.
  • It never confirms or guesses current stock, size or color availability. It cannot see live inventory, so it says the team checks before anything ships.
  • It never quotes a wholesale price, a discount tier or a minimum order quantity.
  • The moment a detail sounds like a safety or allergy concern, it stops asking questions and says a person is being notified right now.
  • It never invents a field. If the customer did not say it, the record says "Not captured" instead of a guess.
The live run

Try the run yourself

Six situations a store actually handles, each running its own agent with its own fields. The obvious seventh, "where is my order", is not here on purpose: it is not a lead, and every ecommerce demo on the internet already shows it. Pick one and answer it the way a real customer would, out of order and mid-thought.
Open this one full screen
Not sure which size to orderConnecting
The live conversation is loading.
Where the records land

What the team opens in the morning

Every conversation that produced something useful arrives here as a row someone can read in two seconds. Every value keeps the sentence it came from, and anything the agent itself said can never become your data.

Collected data

212 collected34 this week5 need attention

Export CSV
  • Jordan Bell Between M and L, canvas jacketFind My Size · 40m ago
  • Priya Shah Wrong item, safety flaggedWrong Item Received · 2h ago
  • Marcus Lee Wholesale, boutique in AustinWholesale Enquiry · Yesterday
  • Els Bakker Return, found it cheaper elsewhereReturn Request · Yesterday
  • Tom Whitfield Exchange, sage instead of clayExchange Request · Fri

Jordan Bell

Captured 40m ago · Find My Size · joina.chat

Captured data 5 of 6 fields

item_of_interestCanvas field jacket
usual_size_other_brandsMedium in most brands, Large in slim cuts
fit_preferenceTrue to size
body_noteNot captured
typical_concernRuns small in the shoulders on a previous order
contact_emailjordan.b@example.com

From the conversation

“I’ve ordered from a few different denim brands and sizes never seem consistent between them , so I never really know what to order until it’s too late to send it back easily.”

Every value keeps the sentence it came from, and a value the visitor never said is never stored. A Gnosari cannot quote itself into your data.

From here a record can go straight on to Slack, a sheet, a Zap or your own API. The inbox is where you read them, not where they get stuck.

Where it goes next

Your stack gets the record, not another login

The moment the conversation produces a complete record, Gnosari posts it to whatever address you give it. Signed, versioned and retried. From there it is a webhook, which reaches almost anything a store already runs.
POST https://hooks.zapier.com/hooks/catch/1234567/abcdef

Signed headers

webhook-id
msg_2f9a41c8
webhook-timestamp
1786518862
webhook-signature
v1,K7Qd…8xPm

Body

{
  "type": "data.collected",
  "event_id": "1b6f9c02-4d1a-4f7e-9b3c-2a5e8d0f1c44",
  "created_at": "2026-08-11T09:14:22Z",
  "payload_version": "v1",
  "data_kind": "Fit note",
  "record_id": 1234,
  "attributes": {
    "item_of_interest": "Canvas field jacket",
    "usual_size_other_brands": "Medium in most brands, Large in slim cuts",
    "fit_preference": "True to size, prefers not to size up",
    "contact_email": "jordan.b@example.com"
  }
}
  • Two events

    data.collected fires the first time a Gnosari collects a new kind of data. data.updated fires when a customer corrects something.

  • Signed, so you can trust it

    Standard Webhooks HMAC-SHA256, with webhook-id, webhook-timestamp and webhook-signature on every request. Verify before it touches an order.

  • Quotes are opt-in

    The provenance block, the customer’s verbatim words, is absent unless you turn it on for that destination.

  • Zapier or Make

    Paste a Catch Hook URL into your Gnosari destination, then point the Zap at your store.

    Free tier, no app to install, and it fires the moment the record is complete.

    • Shopify
    • Klaviyo
    • HubSpot
    • Airtable
  • Straight to the team

    Anything that accepts an incoming webhook takes the payload as it is.

    No middleman. Support sees the record before the ticket does.

    • Slack
    • Zendesk
    • Sheets
    • Twilio SMS
  • Your own endpoint

    Give us an https address, verify the signature, act on it yourself.

    A few lines of code, and the delivery log tells you when something did not land.

    • Postgres
    • Supabase
    • Retool

And you can see every attempt

WhenEventOutcomeDetail
19:04:22data.collectedDelivered200 OK
19:04:18data.collectedFailed503, retrying in 30s
Yesterday 09:37data.updatedDelivered200 OK
Yesterday 07:52data.collectedDelivered200 OK

Every attempt is kept, newest first, with the reason when there is one. Failures retry on their own, and the signing secret lives in your dashboard so you can rotate it without calling anybody.

These are examples, not a partner list. Shopify, BigCommerce, Klaviyo and Zendesk are all reachable the same way: through a Zap, or straight to an endpoint you control. If it takes an HTTP request, it takes the record.

Two ways it can look

On your product pages, or a link you send after a bad unbox

Both are live right now. The widget on your product pages takes the pre-purchase fit check from someone who has not decided yet. The link is what you send when a box arrives wrong, and it works before support opens a ticket.
chat

The widget on your site

A button in the corner that opens into a conversation. Your logo, your colours, sitting on the pages you already have.

  • One line of HTML, anywhere on your site
  • Bubble, sidebar, sidebar-push or drawer
  • Opens over the page, closes again
conversation

A page of its own

No chat window and no widget. Your headline leads, the thread sits under it, and it reads like you asked rather than like software collecting.

  • Sent as a link, or scanned from a QR
  • Its own headline, caption and greeting
  • Every link counted separately
  • One responsive page: phone, tablet or desktop

Every screen on this page is a published Gnosari, embedded from the app. Type into any of them.

Put it on your site

One snippet, four ways to wear it

Paste one line of HTML anywhere on your site. How the widget sits on the page is a setting, not a rebuild, and you can change it after you ship.

Bubble

display_mode="bubble"

A floating button in the corner. Opens over your page and closes again. The default, and the one nobody has to be taught.

Four corners to choose from

Sidebar

display_mode="sidebar"

A fixed panel down one side, always open. For pages where the conversation is the point rather than an aside.

Left or right, any width

Sidebar push

display_mode="sidebar-push"

The same panel, but your content moves over to make room instead of being covered. Nothing on the page is ever hidden.

Left or right, any width

Drawer

display_mode="drawer"

Slides in over the page when it is called, then slides away. The middle ground between a bubble and a sidebar.

Left or right

Where else it lives

Not every conversation starts on a website

The same Gnosari, reached three other ways. A link, a code, or a piece of paper. All of them land in the same record.

01 · A link you send

joina.chat/l/your-slug

Put it in an email, a text, a booking confirmation or a signature. Each link carries its own opening line and headline, and counts its own visits, so you can tell which channel actually worked.

  • Its own greeting and headline
  • Optional expiry date
  • Counted separately

02 · A code they scan

The same link, printed

Every link comes with a QR. On a table card, a receipt, a delivery note, a door. Someone points a phone at it and the conversation starts, with no app and no typing.

  • PNG or SVG, print resolution
  • Points at the same slug
  • Old printed codes keep working

03 · A flyer you hand over

posters.gnosari.com

A builder for the printed thing itself. Pick a template, restyle it, edit the words on the page and export a print-ready poster or card with the QR already placed.

  • Posters, cards and flyers
  • Print or PNG export
  • No account needed
Whose brand it wears

Your brand, down to the font

Nobody should be able to tell it is us. Start from a curated look, mix your own colour and pattern, or set every design token yourself: every surface follows, from the widget to the conversation page to the link someone opens on their phone.

01 · Start from a preset

Twelve curated looks, each a colour and a background pattern chosen to go together. Pick one and you are done.

  • plainsky · noneCorporate or formal, or let the content lead
  • clean-dotssky · fine-dotsSaaS, B2B, dashboards
  • ocean-wavesocean · wavesWellness, travel, spa
  • forest-topoforest · topographyOutdoors, sustainability, eco
  • blueprintblue · blueprintEngineering, dev tools, architecture
  • graph-paperindigo · graph-paperEducation, finance, analytical
  • circuitteal · circuitTech, hardware, AI, electronics
  • soft-bubblesrose · bubblesFriendly, lifestyle, community, care
  • sunset-glowsunset · blobsCreative, marketing, bold consumer
  • emerald-gridemerald · gridHealth, growth, productivity
  • confettifuchsia · confettiEvents, kids, playful brands
  • mono-noiseviolet · noiseMedia, publishing, premium and minimal

02 · Or mix your own

22 colour themes and 44 background patterns, each drawn in code at four intensities. That is 3,872 combinations before you touch a single token.

22 colour themes

  • purple
  • blue
  • green
  • orange
  • pink
  • indigo
  • cyan
  • rose
  • amber
  • teal
  • fuchsia
  • sky
  • emerald
  • violet
  • sunset
  • ocean
  • forest
  • neon
  • gold
  • coral
  • lavender
  • mint

44 background patterns

  • dots
  • grid
  • diagonal-lines
  • zigzag
  • hexagons
  • triangles
  • diamonds
  • squares-rotated
  • cross-dots
  • plus-signs
  • waves
  • bubbles
  • clouds
  • topography
  • organic-blobs
  • flowing-curves
  • subtle-grid
  • circuit
  • blueprint
  • isometric
  • graph-paper
  • fine-dots
  • confetti
  • stars
  • hearts
  • sparkles
  • paper-texture
  • noise
  • chat-bubbles
  • speech-marks
  • conversation
  • messages
  • emoji-smileys
  • emoji-hearts
  • emoji-stars
  • emoji-thumbsup
  • social-likes
  • social-reactions
  • paint-splatter
  • brush-strokes
  • doodles
  • squiggles
  • party
  • flowers

Every pattern, four intensities

  • subtle
  • light
  • medium
  • strong

03 · Or set every design token

Exact hex values, fourteen fonts, bubble shape per side, corner radius, density, header and input. Explicit tokens always win over the preset. Two chats can share every line of markup and still wear two different brands: only the tokens differ.

A boutique hotel

fontFamily
Playfair Display
colorPrimary
#A16207
colorSurface
#FAF7F2
bubbles.user.radius
xl
radius
lg
Maison AurelOnline
Is late checkout possible on Sundays?
Until 2pm, and there will be coffee waiting downstairs.

A developer tool

fontFamily
JetBrains Mono
colorPrimary
#34D399
colorSurfaceDark
#0D1117
bubbles.user.radius
sm
radius
sm
relaydbOnline
Does the API rate limit per key?
600 requests a minute per key, with bursts to 1,000 for 30 seconds.

fontFamily accepts fourteen faces

  • Inter
  • system-ui
  • Roboto
  • Open Sans
  • Lato
  • Montserrat
  • Poppins
  • Source Sans 3
  • Nunito
  • DM Sans
  • Lora
  • Playfair Display
  • JetBrains Mono
  • Space Grotesk
  • radius: none · sm · md · lg · xl
  • density: compact · comfortable · spacious
  • intensity: subtle · light · medium · strong

Set with one call, or one click in the designer. Changing it later takes the same one call, and every published surface updates at once.

The alternative

Instead of what you run now

The comparison that matters is not against another chatbot. It is against the static size chart and the returns dropdown.
What changesA static size chartA returns dropdown formGnosari
Sizing before you buyThe same chart for everyone, no memory of past ordersNot applicableAsks what they usually wear and notes the answer
What you get backA shrug, or two sizes ordered to be safeA reason code with no detailThe fit or the fault, in their own words
Half-told storyThey just guess and hopeSubmitted half emptyIt asks the follow-up before it lets them go
Wrong item reportAn email into a shared inboxA ticket with no urgency flagA hard stop and a person notified for anything unsafe
Wholesale enquiriesBuried in the same inbox as spamNot applicableQualified before anyone quotes a price
Gets into your stackRe-typed by handCSV export, if you are luckySigned webhook, the moment it is complete
Common Questions

Frequently Asked Questions

Everything you need to know about getting started. Can't find the answer you're looking for? Reach out to our team.

Still have questions?

Our team is here to help you get started.

Gnosari runs the conversations an online store handles today with a size chart, a return form and a wholesale enquiry page: what a shopper usually wears before they buy, what actually went wrong when they send something back, and how big a trade order would be. It asks one question at a time on your site, then posts a typed record to your store, helpdesk or sheet, so your team acts on data instead of a free-text box.

Five minutes from now your size and return questions could be answering themselves.

Build the agent, put it on your product pages, and watch the first fit record arrive. Free to start, no card.