A restaurant feedback form for diners to finish at the table

Updated 2026-10-30

Online reviews tell you a diner was unhappy after they left. A short form can tell you while the memory is fresh. I would ask for ratings first, then a sentence or two, and keep it quick.

Use this when

You want honest, private feedback you can sort and count: restaurants, cafes, food trucks and bars. Find more ideas in forms for restaurants and food businesses.

Skip it when

You want public reviews on a review site, or you want the form to reply to guests. This one collects private answers and sends no replies.

What is asked and why

  • Visit date and type: dine in, takeaway, delivery or private event, so you can tell evening trade from delivery problems.
  • Ratings for food, service, atmosphere and value: to see which one drags the average down.
  • Wait time: slow service shows up here before it shows up in reviews.
  • Dish loved, dish disappointed: a direct guide for the menu.
  • Comments, team member name and email: to thank staff and to reply.

What a diner's AI would ask

"How was the food, from one to five?" Then "How was the wait?" Then "Will you come back?" It shows all answers and sends only after a yes. See agent-fillable forms.

Need the booking side? A restaurant reservation form takes table requests. Spotted a star server? Hire more like them with a restaurant job application form. The front of house can log checks with a restaurant opening checklist.

Questions

How do I get diners to fill it in?

Put the link on the receipt, the bill holder or your thank-you message. Keep it short, as this form is. Only the visit type and the food rating are required.

What do I do with a low rating?

Sort the CSV by rating and read the comments beside the lowest scores. If the guest left an email, reply yourself. The form sends nothing to them for you.

Can I see which team member was mentioned?

An optional question asks for the name of the person who looked after the table. Filter the CSV on that column to find praise as well as problems.

Try the form

Live demo ยท nothing is saved

How was your meal?

Thank you for eating with us. A minute of your honest thoughts helps us look after the next table.

How did you eat with us? (required)
How was the food? (required)
How was the service?
How was the atmosphere?
Did it feel worth the money?
How was the wait for your food?

Only if you remember it.

Will you visit again?

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 meal?",
  "description": "Thank you for eating with us. A minute of your honest thoughts helps us look after the next table.",
  "fields": [
    {
      "id": "visit_date",
      "label": "Date of your visit",
      "type": "date"
    },
    {
      "id": "visit_type",
      "label": "How did you eat with us?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Dine in",
        "Takeaway",
        "Delivery",
        "Private event"
      ]
    },
    {
      "id": "party_size",
      "label": "How many people were with you?",
      "type": "number",
      "min": 1,
      "max": 30
    },
    {
      "id": "food_rating",
      "label": "How was the food?",
      "type": "rating",
      "required": true,
      "min": 1,
      "max": 5
    },
    {
      "id": "service_rating",
      "label": "How was the service?",
      "type": "rating",
      "min": 1,
      "max": 5
    },
    {
      "id": "atmosphere_rating",
      "label": "How was the atmosphere?",
      "type": "rating",
      "min": 1,
      "max": 5
    },
    {
      "id": "value_rating",
      "label": "Did it feel worth the money?",
      "type": "rating",
      "min": 1,
      "max": 5
    },
    {
      "id": "wait_time",
      "label": "How was the wait for your food?",
      "type": "single_choice",
      "options": [
        "Quicker than I expected",
        "About right",
        "A little long",
        "Too long"
      ]
    },
    {
      "id": "dish_enjoyed",
      "label": "A dish you loved",
      "type": "short_text",
      "max_length": 150
    },
    {
      "id": "dish_disappointed",
      "label": "A dish that let you down",
      "type": "short_text",
      "max_length": 150
    },
    {
      "id": "server_name",
      "label": "Name of the person who looked after you",
      "type": "short_text",
      "help": "Only if you remember it.",
      "max_length": 80
    },
    {
      "id": "comments",
      "label": "Anything else you want us to hear?",
      "type": "long_text",
      "max_length": 1500
    },
    {
      "id": "would_return",
      "label": "Will you visit again?",
      "type": "single_choice",
      "options": [
        "Definitely",
        "Probably",
        "Not sure",
        "Probably not"
      ]
    },
    {
      "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 meal?","description":"Thank you for eating with us. A minute of your honest thoughts helps us look after the next table.","fields":[{"id":"visit_date","label":"Date of your visit","type":"date"},{"id":"visit_type","label":"How did you eat with us?","type":"single_choice","required":true,"options":["Dine in","Takeaway","Delivery","Private event"]},{"id":"party_size","label":"How many people were with you?","type":"number","min":1,"max":30},{"id":"food_rating","label":"How was the food?","type":"rating","required":true,"min":1,"max":5},{"id":"service_rating","label":"How was the service?","type":"rating","min":1,"max":5},{"id":"atmosphere_rating","label":"How was the atmosphere?","type":"rating","min":1,"max":5},{"id":"value_rating","label":"Did it feel worth the money?","type":"rating","min":1,"max":5},{"id":"wait_time","label":"How was the wait for your food?","type":"single_choice","options":["Quicker than I expected","About right","A little long","Too long"]},{"id":"dish_enjoyed","label":"A dish you loved","type":"short_text","max_length":150},{"id":"dish_disappointed","label":"A dish that let you down","type":"short_text","max_length":150},{"id":"server_name","label":"Name of the person who looked after you","type":"short_text","help":"Only if you remember it.","max_length":80},{"id":"comments","label":"Anything else you want us to hear?","type":"long_text","max_length":1500},{"id":"would_return","label":"Will you visit again?","type":"single_choice","options":["Definitely","Probably","Not sure","Probably not"]},{"id":"reply_email","label":"Email, if you would like a reply","type":"email"}]}'

JSON definition

json
{
  "title": "How was your meal?",
  "description": "Thank you for eating with us. A minute of your honest thoughts helps us look after the next table.",
  "fields": [
    {
      "id": "visit_date",
      "label": "Date of your visit",
      "type": "date"
    },
    {
      "id": "visit_type",
      "label": "How did you eat with us?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Dine in",
        "Takeaway",
        "Delivery",
        "Private event"
      ]
    },
    {
      "id": "party_size",
      "label": "How many people were with you?",
      "type": "number",
      "min": 1,
      "max": 30
    },
    {
      "id": "food_rating",
      "label": "How was the food?",
      "type": "rating",
      "required": true,
      "min": 1,
      "max": 5
    },
    {
      "id": "service_rating",
      "label": "How was the service?",
      "type": "rating",
      "min": 1,
      "max": 5
    },
    {
      "id": "atmosphere_rating",
      "label": "How was the atmosphere?",
      "type": "rating",
      "min": 1,
      "max": 5
    },
    {
      "id": "value_rating",
      "label": "Did it feel worth the money?",
      "type": "rating",
      "min": 1,
      "max": 5
    },
    {
      "id": "wait_time",
      "label": "How was the wait for your food?",
      "type": "single_choice",
      "options": [
        "Quicker than I expected",
        "About right",
        "A little long",
        "Too long"
      ]
    },
    {
      "id": "dish_enjoyed",
      "label": "A dish you loved",
      "type": "short_text",
      "max_length": 150
    },
    {
      "id": "dish_disappointed",
      "label": "A dish that let you down",
      "type": "short_text",
      "max_length": 150
    },
    {
      "id": "server_name",
      "label": "Name of the person who looked after you",
      "type": "short_text",
      "help": "Only if you remember it.",
      "max_length": 80
    },
    {
      "id": "comments",
      "label": "Anything else you want us to hear?",
      "type": "long_text",
      "max_length": 1500
    },
    {
      "id": "would_return",
      "label": "Will you visit again?",
      "type": "single_choice",
      "options": [
        "Definitely",
        "Probably",
        "Not sure",
        "Probably not"
      ]
    },
    {
      "id": "reply_email",
      "label": "Email, if you would like a reply",
      "type": "email"
    }
  ]
}