Skip to content
The session enquiry

The late-night inquiry becomes a typed session record by noon.

A message comes in at 11pm with a date, a rough headcount and a Pinterest board of a style, while the photographer is asleep or mid-edit on someone else’s gallery. Six questions later a qualified enquiry is waiting in the morning, with nothing held and nothing quoted. Free to start, live in five minutes.

You automate photography client intake by putting a conversational agent in front of the first inquiry. It asks for the session type, the date they hope for, the headcount and the style they are picturing one question at a time, types it into a structured record, and never holds a date, quotes a price or interprets usage rights.

01 · They talk

Your GnosariAnswering
What kind of session are you picturing, and roughly when?
Family portraits, maybe October, there’s 6 of us including the dog
Got it. Any style or feeling in mind, like candid or more posed?
Candid for sure, nothing stiff, warm tones if that makes sense

02 · It becomes a record

session_type
Family portraits
date_hoped_for
October (exact date not yet set)
subject_count_estimate
6 people, plus one dog (estimate)
style_vision
Candid, warm tones

typed · validated · deduped

03 · Your stack acts

  • Studio pinged
  • Zap into your CRM
  • Or the same via Make
  • Signed webhook at your endpoint
The process

The process this page is about

Not "AI for photographers". One process: the enquiry, the message that decides whether a client ends up on your calendar or the next studio’s, before anyone has spoken to a person.
  • Who starts it

    Someone who just got engaged, needs a headshot before Monday, or is scrolling a portfolio at midnight with a date in mind and a vague sense of budget, usually on a phone.

  • What it costs today

    A static questionnaire with a dozen or more questions that most clients start and never finish, or a DM thread in an app built for chatting with friends, not running a business.

  • What it has to produce

    A typed enquiry record: the kind of session, the date they hope for, roughly how many people, the style they described, and a budget range for understanding priorities, with no date held and no price quoted.

67%

of people who start an intake questionnaire never finish it

Zuko

The schema

What it asks, and what it never asks

You name the fields your intake already has. It asks in whatever order the story comes out, and keeps asking until the required ones are filled.
FieldTypeRequiredWhy it is there
contact_full_nametextYesIdentity on the enquiry record
contact_phonephoneYesHow the studio calls back
contact_emailemailA second way to reach them, if they gave one
session_typetextYesPortrait, family, commercial, product or event
date_hoped_fordateYesThe date they are hoping for, never held or confirmed
subject_count_estimatenumberRoughly how many people, for planning fit
style_visiontextThe style or feeling they are picturing, in their own words
budget_rangetextUnderstands priorities, never produces a quote

And what it will not do

  • It never holds, confirms, or reserves a date. The studio checks the book and calls back.
  • It never quotes or estimates a price, a package cost, or what a session usually runs.
  • It never grants, promises, or interprets image usage or licensing rights. What a client can do with a photo is a contract term the studio sets.
  • It never gives creative or technical advice that is a professional judgment call, posing and editing choices included.
  • It never comments on another photographer, studio, or vendor, good or bad.
  • It never invents a field. If they did not say it, the record says "Not captured" instead of a guess.
The live run

Try the run yourself

Six situations a working studio actually handles, each running its own agent with its own fields. Pick one and answer it the way a real client would, out of order and mid-thought, and watch it ask the follow-up instead of accepting the blank.
Open this one full screen
I want to book a sessionConnecting
The live conversation is loading.
Where the records land

What the studio opens in the morning

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

148 collected19 this week3 need attention

Export CSV
  • Priya Anand New enquiry, family sessionNew Session Enquiry · 25m ago
  • Marcus Webb Rush request, headshot tomorrowRush Request · 2h ago
  • Dana Ferreira Asked about boudoirCan You Shoot This · Yesterday
  • Els Bakker Checking back after 3 yearsChecking Back In · Yesterday
  • Tom Whitfield Rescheduling to springCancelling or Rescheduling · Fri
  • Noor Haddad Shot list for SaturdaySession Prep · Fri

Priya Anand

Captured 25m ago · New Session Enquiry · joina.chat

Captured data 7 of 8 fields

contact_full_namePriya Anand
contact_phone+1 512 555 0148
contact_emailpriya@example.com
session_typeFamily portraits
date_hoped_forOctober (hoping for, not yet confirmed)
subject_count_estimate6, plus one dog (estimate)
style_visionCandid, warm tones
budget_rangeNot captured

From the conversation

“We’re a family of six, well five and the dog, and we want something candid, nothing too stiff or posed , maybe golden hour if that works for you.”

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 CRM gets the enquiry, not another login

The moment the enquiry 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 studio 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": "New session enquiry",
  "record_id": 1234,
  "attributes": {
    "contact_full_name": "Priya Anand",
    "contact_phone": "+1 512 555 0148",
    "session_type": "Family portraits",
    "date_hoped_for": "October (hoping for)",
    "subject_count_estimate": "6",
    "style_vision": "Candid, warm tones"
  }
}
  • 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 opens a client file.

  • 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 CRM.

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

    • Salesforce
    • HubSpot
    • Calendly
    • Mailchimp
  • Straight to the desk

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

    No middleman. You see the enquiry before the inbox does.

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

    Give us an https address, verify the signature, open the record 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:41:09data.collectedDelivered200 OK
23:41:02data.collectedFailed503, retrying in 30s
Yesterday 16:27data.updatedDelivered200 OK
Yesterday 11:05data.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. HoneyBook, Dubsado, Sprout Studio and a plain spreadsheet 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 enquiry.

Two ways it can look

On your studio’s site, or a link you text after a missed call

Both are live right now. The widget in the corner takes the first enquiry from someone browsing your portfolio. The link is what you text back after a late-night message, and it works before you’re back at your desk.
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 static questionnaire and the DM thread that qualifies a client today.
What changesEmail and DMsStatic intake formGnosari
After hoursSits unread until morningDownloaded, rarely finishedAnswered, typed, delivered
What you get backWhatever they thought to typeWhatever fit in the boxesThe style they described, in their own words
Half-told storyYou reply to ask what they meantSubmitted half emptyIt asks the follow-up
The date questionSounds held, then it is notA field with no ownerTaken as hoped for, never confirmed
Usage rights questionsAnswered off the cuff, inconsistentlyNot asked at allNever granted or interpreted, referred to the contract
Gets into your CRMRe-typed by handCSV, or an integration you pay forSigned 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 enquiry a photographer would otherwise answer late at night from a phone: the session type, the date, the location, how many people, the style they like and how to reach them. It asks one question at a time on your portfolio pages or through a link, then posts a typed enquiry record to your CRM. You reply in the morning with a proposal instead of a list of questions.

Five minutes from now your late-night inquiries could be typing themselves up.

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