Skip to content
The booking enquiry

How much and can you fit me in, answered at midnight.

Most of what lands in a salon inbox is one message: what does it cost and when can I come. It arrives after closing, it never says how long the hair is, and it never mentions the box dye. Here it comes back as a bookable request with the skin test already flagged. Free to start, live in five minutes.
Build this agent free

You add AI to a salon by putting a conversational agent on the messages you already answer by hand: the booking enquiry, the skin test that has to happen 48 hours before colour, the reschedule, the win-back and the complaint. Each one types the client’s own words into a structured record and posts it to your salon software.

01 · They talk

Your chatbotAnswering
What are you after, and roughly when suits?
cut and some highlights, how much is that? any chance this month
The stylist confirms the price, it depends on length and how many processes. When did you last have colour on it?
box dye during lockdown, nothing since

02 · It becomes a record

service_wanted
Cut and highlights
involves_colour
true
last_colour
Box dye, during lockdown
availability
Any weekday this month

typed · validated · deduped

03 · Your stack acts

  • Front desk channel pinged
  • Zap into your salon software
  • Or the same via Make
  • Signed webhook at your endpoint
The process

The process this page is about

Not "AI for beauty". One process, the one that fills the diary: someone asking what it costs and whether you can fit them in, at an hour when the salon is shut and they are messaging two other places as well.
  • Who starts it

    A client on a phone, usually after closing, comparing you against the salon down the road.

  • What it costs today

    A message answered the next afternoon with a question rather than an answer, then three more messages to find out hair length, colour history and when they are free.

  • What it has to produce

    What they want, how long the appointment needs to be, whether colour is involved and therefore whether a skin test is due, and when they can actually come.

40-50%

of salon appointment bookings happen after business hours, when nobody is there to ask the questions

Boulevard Industry Report

The schema

What it asks, and what it never asks

You name the fields your desk already asks by hand, plus the two the enquiry never volunteers: whether colour is involved, and when they last had any on it. It does the asking, in whatever order the conversation goes.
FieldTypeRequiredWhy it is there
client_nametextYesIdentity on the enquiry
contacttextYesPhone or email, whichever they gave
service_wantedtextYesWhat they are after, in their words
whats_bothering_themtextFor the client who cannot name a service, which is most of them
existing_clientbooleanYesA regular gets their stylist, a new client needs longer
hair_lengthtextIt sets the appointment length, which is why the desk always asks
involves_colourbooleanYesForces the skin test, and the skin test is never waived
last_colourtextBox dye, henna, a keratin: what reacts with what
availabilitytextYesA range, not a slot the agent cannot promise
occasiontextA wedding changes the timing, and it is offered not extracted

And what it will not do

  • It never gives medical advice, and never diagnoses a skin or scalp condition.
  • It never promises a colour result, and never says a chemical service is safe without a patch or strand test.
  • It never quotes or estimates a price. The salon confirms pricing when it books.
  • It never confirms, moves or cancels an appointment. It takes the request and a person confirms it.
  • It never argues with a client about their own experience, and never offers a refund or a free redo. That is the owner’s call.
  • It only records what the client actually said. A vague answer is asked again, never rounded into data.
The live run

Try the run yourself

Six moments in a salon week, each running its own agent with its own fields. Pick one and answer it the way a real client would, vaguely and mid-thought, and watch it ask the follow up instead of accepting the blank.
Open this one full screen
Where the records land

What the front desk opens in the morning

Every conversation that produced something useful arrives here as a row you 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

412 collected31 this week4 need attention

Export CSV
  • Priya Shah New clientNew Client Consultation · 25m ago
  • Chloe B. Reaction, day 2Colour Emergency · 1h ago
  • Marta Kowalska Black to blondeTransformation Check · Yesterday
  • Jess Riley Lapsed 8 monthsWelcome Back · Yesterday
  • Regular client Move ThursdayMove My Appointment · Sun

Priya Shah

Captured 25m ago · New Client Consultation · joina.chat

Captured data 6 of 7 fields

client_namePriya Shah
emailpriya.shah@example.com
service_wantedBalayage, maybe
previous_chemical_servicesBox dye, keratin last year
allergy_and_patch_historyReaction to home dye 2023, no patch test since
maintenance_commitmentLow
phoneNot captured

From the conversation

“maybe balayage? my hair is a bit of a state honestly, box dye during lockdown and a keratin last year, if that counts.”

Every value keeps the sentence it came from, and a value the visitor never said is never stored. The chatbot 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 salon software gets the client, not another inbox

The moment the consultation is complete, Gnosari posts it to whatever address you give it. Signed, versioned and retried. From there it is a webhook, which reaches almost anything a salon 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": "Client consultation",
  "record_id": 1234,
  "attributes": {
    "client_name": "Priya Shah",
    "email": "priya.shah@example.com",
    "service_wanted": "Balayage, maybe",
    "previous_chemical_services": "Box dye, keratin last year",
    "allergy_and_patch_history": "Reaction to home dye 2023, no patch test since",
    "maintenance_commitment": "Low"
  }
}
  • Two events

    data.collected fires the first time a Gnosari collects a new kind of data. data.updated fires when a client 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 a client record.

  • Quotes are opt-in

    The provenance block, the client’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 salon software.

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

    • Mailchimp
    • HubSpot
    • Salesforce
    • Stripe
  • Straight to the front desk

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

    No middleman. The morning shift sees the consult before the client wakes up.

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

    Give us an https address, verify the signature, write it into the client profile 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
23:14:02data.collectedDelivered200 OK
23:13:59data.collectedFailed503, retrying in 30s
Yesterday 20:47data.updatedDelivered200 OK
Sun 11:26data.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. Vagaro, Fresha, Boulevard, Mangomint and GlossGenius 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 client.

Two ways it can look

On your site, on the mirror card, or in a reply to a DM

Both are live right now. The widget takes "how much and can you fit me in", which is most of what lands in a salon inbox. The link is the one you put in the reminder text, so a client who cannot make Thursday tells you on Tuesday instead of not turning up.
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 do now

The comparison that matters is not against another chatbot. It is against the clipboard and the PDF.
What changesPaper formBooking-platform formGnosari
When it gets doneIn the waiting room, under time pressureIf the client opens the emailBefore the appointment, on their phone
The allergy questionAnswered "N/A" down the pageA checkbox nobody readsAsked, with a follow up when the answer matters
Chemical historyWhatever fits in the boxA dropdown of five optionsTheir own words, probed
Where the answers landA drawer, then the binA notes field nobody opensA typed record, posted to your system
At the chairThe stylist starts from zeroThe stylist starts from zeroThe stylist already knows
After hoursNothing happensA booking, maybeThe consult, done by morning
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.

Put a conversational agent on the touchpoints you already run as forms: the new client consultation, the colour emergency, the feasibility question, the lapsed client, the fix-it conversation and the reschedule. Each one asks in your voice, types the client’s own words into a structured record, and posts it to your salon software through a webhook, Zapier or Make. Setup is minutes per agent, and you can start with one.

Five minutes from now the next new client could arrive known.

Build the agent, put the link in your bio and in a reply to the next DM, and watch the first complete consultation arrive. Free to start, no card.