Salon feedback form for after the visit

Updated 2026-10-30

A client leaves smiling, and you never learn whether the colour matched what they hoped. Or they leave quiet and write it online. I would rather ask at the door and read the answers at my desk.

Before it opens

Put the link on a card at the till, or in your own message after the visit. Make the name optional, because honest answers come more easily without one. Say what you do with the feedback in the form description.

While it is open

Clients rate the visit, the result, how welcome they felt and how clean the salon was. They say if they were seen on time, if you listened, and if they will book again. A client's AI might ask "Who looked after you?" Then "How happy are you with the result?" Then "Will you book with us again?" It shows the answers and sends only after a yes. See agent-fillable forms.

After it closes

Read the CSV once a week. Average each rating column and sort by stylist. Thank people by hand where they left an email. If the same problem keeps appearing, a client consultation form before the visit can fix it, and a salon appointment form makes the next booking easy. More ideas are in forms for salons and spas.

Questions

Can I compare my stylists?

Yes. The form asks who looked after the client. Sort the CSV by stylist and average the rating columns. Treat a handful of rows with care.

Can clients stay anonymous?

Yes. Name and email are optional. You cannot reply to an anonymous answer, so say in the form description how you use the feedback.

How do I use comments in my marketing?

Quote only the rows where the client ticked the box that allows it. Copy the words as written and do not change their meaning.

Try the form

Live demo ยท nothing is saved

How was your visit?

Thank you for coming in. Tell us how it went. Your name is optional and every answer is read by the team.

What did you have done?
How was your visit overall? (required)
How happy are you with the result?
How welcome did you feel?
How clean and comfortable was the salon?
Were you seen on time?
Did we listen to what you wanted?
Will you book with us again? (required)
You may share my comments on your website or social pages

Or paste the JSON

Give this to your AI. It needs the AI Form API MCP server or an API key. It makes the form and sends you the link.

text
Create this form with the AI Form API create_form tool (or POST https://aiformapi.com/v1/forms with my API key). Then reply with the public_url.

{
  "title": "How was your visit?",
  "description": "Thank you for coming in. Tell us how it went. Your name is optional and every answer is read by the team.",
  "fields": [
    {
      "id": "guest_name",
      "label": "Your name (optional)",
      "type": "short_text",
      "max_length": 100
    },
    {
      "id": "visit_date",
      "label": "Date of your visit",
      "type": "date"
    },
    {
      "id": "stylist_name",
      "label": "Who looked after you?",
      "type": "short_text",
      "max_length": 100
    },
    {
      "id": "service_had",
      "label": "What did you have done?",
      "type": "single_choice",
      "options": [
        "Haircut",
        "Colour",
        "Styling",
        "A treatment",
        "Nails",
        "Facial",
        "Massage",
        "Barbering"
      ]
    },
    {
      "id": "visit_rating",
      "label": "How was your visit overall?",
      "type": "rating",
      "required": true,
      "min": 1,
      "max": 5
    },
    {
      "id": "result_rating",
      "label": "How happy are you with the result?",
      "type": "rating",
      "min": 1,
      "max": 5
    },
    {
      "id": "welcome_rating",
      "label": "How welcome did you feel?",
      "type": "rating",
      "min": 1,
      "max": 5
    },
    {
      "id": "clean_rating",
      "label": "How clean and comfortable was the salon?",
      "type": "rating",
      "min": 1,
      "max": 5
    },
    {
      "id": "on_time",
      "label": "Were you seen on time?",
      "type": "single_choice",
      "options": [
        "Yes, right on time",
        "A few minutes late",
        "Quite late"
      ]
    },
    {
      "id": "was_listened_to",
      "label": "Did we listen to what you wanted?",
      "type": "single_choice",
      "options": [
        "Yes, completely",
        "Mostly",
        "Not really"
      ]
    },
    {
      "id": "book_again",
      "label": "Will you book with us again?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Yes",
        "Maybe",
        "No"
      ]
    },
    {
      "id": "liked_most",
      "label": "What did you like most?",
      "type": "short_text",
      "max_length": 300
    },
    {
      "id": "could_improve",
      "label": "What could we do better?",
      "type": "long_text",
      "max_length": 1000
    },
    {
      "id": "quote_ok",
      "label": "You may share my comments on your website or social pages",
      "type": "checkbox"
    },
    {
      "id": "reply_email",
      "label": "Email, if you would like a reply",
      "type": "email"
    }
  ]
}

Or call the API

bash
curl -X POST https://aiformapi.com/v1/forms \
  -H "Authorization: Bearer $AIFORMAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"How was your visit?","description":"Thank you for coming in. Tell us how it went. Your name is optional and every answer is read by the team.","fields":[{"id":"guest_name","label":"Your name (optional)","type":"short_text","max_length":100},{"id":"visit_date","label":"Date of your visit","type":"date"},{"id":"stylist_name","label":"Who looked after you?","type":"short_text","max_length":100},{"id":"service_had","label":"What did you have done?","type":"single_choice","options":["Haircut","Colour","Styling","A treatment","Nails","Facial","Massage","Barbering"]},{"id":"visit_rating","label":"How was your visit overall?","type":"rating","required":true,"min":1,"max":5},{"id":"result_rating","label":"How happy are you with the result?","type":"rating","min":1,"max":5},{"id":"welcome_rating","label":"How welcome did you feel?","type":"rating","min":1,"max":5},{"id":"clean_rating","label":"How clean and comfortable was the salon?","type":"rating","min":1,"max":5},{"id":"on_time","label":"Were you seen on time?","type":"single_choice","options":["Yes, right on time","A few minutes late","Quite late"]},{"id":"was_listened_to","label":"Did we listen to what you wanted?","type":"single_choice","options":["Yes, completely","Mostly","Not really"]},{"id":"book_again","label":"Will you book with us again?","type":"single_choice","required":true,"options":["Yes","Maybe","No"]},{"id":"liked_most","label":"What did you like most?","type":"short_text","max_length":300},{"id":"could_improve","label":"What could we do better?","type":"long_text","max_length":1000},{"id":"quote_ok","label":"You may share my comments on your website or social pages","type":"checkbox"},{"id":"reply_email","label":"Email, if you would like a reply","type":"email"}]}'

JSON definition

json
{
  "title": "How was your visit?",
  "description": "Thank you for coming in. Tell us how it went. Your name is optional and every answer is read by the team.",
  "fields": [
    {
      "id": "guest_name",
      "label": "Your name (optional)",
      "type": "short_text",
      "max_length": 100
    },
    {
      "id": "visit_date",
      "label": "Date of your visit",
      "type": "date"
    },
    {
      "id": "stylist_name",
      "label": "Who looked after you?",
      "type": "short_text",
      "max_length": 100
    },
    {
      "id": "service_had",
      "label": "What did you have done?",
      "type": "single_choice",
      "options": [
        "Haircut",
        "Colour",
        "Styling",
        "A treatment",
        "Nails",
        "Facial",
        "Massage",
        "Barbering"
      ]
    },
    {
      "id": "visit_rating",
      "label": "How was your visit overall?",
      "type": "rating",
      "required": true,
      "min": 1,
      "max": 5
    },
    {
      "id": "result_rating",
      "label": "How happy are you with the result?",
      "type": "rating",
      "min": 1,
      "max": 5
    },
    {
      "id": "welcome_rating",
      "label": "How welcome did you feel?",
      "type": "rating",
      "min": 1,
      "max": 5
    },
    {
      "id": "clean_rating",
      "label": "How clean and comfortable was the salon?",
      "type": "rating",
      "min": 1,
      "max": 5
    },
    {
      "id": "on_time",
      "label": "Were you seen on time?",
      "type": "single_choice",
      "options": [
        "Yes, right on time",
        "A few minutes late",
        "Quite late"
      ]
    },
    {
      "id": "was_listened_to",
      "label": "Did we listen to what you wanted?",
      "type": "single_choice",
      "options": [
        "Yes, completely",
        "Mostly",
        "Not really"
      ]
    },
    {
      "id": "book_again",
      "label": "Will you book with us again?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Yes",
        "Maybe",
        "No"
      ]
    },
    {
      "id": "liked_most",
      "label": "What did you like most?",
      "type": "short_text",
      "max_length": 300
    },
    {
      "id": "could_improve",
      "label": "What could we do better?",
      "type": "long_text",
      "max_length": 1000
    },
    {
      "id": "quote_ok",
      "label": "You may share my comments on your website or social pages",
      "type": "checkbox"
    },
    {
      "id": "reply_email",
      "label": "Email, if you would like a reply",
      "type": "email"
    }
  ]
}